From ea4cdd0d3f75977430d925934475a0e6fe5d5aeb Mon Sep 17 00:00:00 2001 From: pulumi-bot Date: Mon, 3 Feb 2025 16:13:47 +0000 Subject: [PATCH 1/2] make tfgen --- examples/go.mod | 4 + examples/go.sum | 8 +- provider/cmd/pulumi-resource-gcp/schema.json | 470 +++++++++---------- provider/go.mod | 4 + provider/go.sum | 8 +- sdk/go.mod | 4 + sdk/go.sum | 4 +- 7 files changed, 257 insertions(+), 245 deletions(-) diff --git a/examples/go.mod b/examples/go.mod index 7a9551e153..346ee13583 100644 --- a/examples/go.mod +++ b/examples/go.mod @@ -187,3 +187,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.147.1-0.20250203160235-205a936b2f73 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250203160235-205a936b2f73 diff --git a/examples/go.sum b/examples/go.sum index 043907bb60..e076faaa53 100644 --- a/examples/go.sum +++ b/examples/go.sum @@ -346,10 +346,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.147.0 h1:aFzP2kXBL/nPPDao625xIkjAhqT5GKe3XfPXbG07oFA= -github.com/pulumi/pulumi/pkg/v3 v3.147.0/go.mod h1:WqLJy8lfzbGTEqz5Rukd+GrqBYNBf8Y3dJ+Wde+G6g4= -github.com/pulumi/pulumi/sdk/v3 v3.147.0 h1:8ZDZnEsCZa6shw1dwIDUssbYMooYyebhpmx5feuZCqM= -github.com/pulumi/pulumi/sdk/v3 v3.147.0/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= +github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250203160235-205a936b2f73 h1:eVLzW8D35d9xkTqqkuW1ZRpCnCdJ74hAtnSzv6jiUn4= +github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250203160235-205a936b2f73/go.mod h1:WqLJy8lfzbGTEqz5Rukd+GrqBYNBf8Y3dJ+Wde+G6g4= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250203160235-205a936b2f73 h1:VYxiE3EHs4ri4JAW4WmPE93w+hVROvCAV5Sfqca1kv4= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250203160235-205a936b2f73/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= 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 773e57d627..17c56f4f2a 100644 --- a/provider/cmd/pulumi-resource-gcp/schema.json +++ b/provider/cmd/pulumi-resource-gcp/schema.json @@ -131827,7 +131827,7 @@ }, "resources": { "gcp:accesscontextmanager/accessLevel:AccessLevel": { - "description": "An AccessLevel is a label that can be applied to requests to GCP services,\nalong with a list of requirements necessary for the label to be applied.\n\n\nTo get more information about AccessLevel, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.accessLevels)\n* How-to Guides\n * [Access Policy Quickstart](https://cloud.google.com/access-context-manager/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Access Level Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAccessLevel can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AccessLevel can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/accessLevel:AccessLevel default {{name}}\n```\n\n", + "description": "An AccessLevel is a label that can be applied to requests to GCP services,\nalong with a list of requirements necessary for the label to be applied.\n\n\nTo get more information about AccessLevel, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.accessLevels)\n* How-to Guides\n * [Access Policy Quickstart](https://cloud.google.com/access-context-manager/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Access Level Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccess_policy, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAccessLevel can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AccessLevel can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/accessLevel:AccessLevel default {{name}}\n```\n\n", "properties": { "basic": { "$ref": "#/types/gcp:accesscontextmanager/AccessLevelBasic:AccessLevelBasic", @@ -131925,7 +131925,7 @@ } }, "gcp:accesscontextmanager/accessLevelCondition:AccessLevelCondition": { - "description": "Allows configuring a single access level condition to be appended to an access level's conditions.\nThis resource is intended to be used in cases where it is not possible to compile a full list\nof conditions to include in a `gcp.accesscontextmanager.AccessLevel` resource,\nto enable them to be added separately.\n\n\u003e **Note:** If this resource is used alongside a `gcp.accesscontextmanager.AccessLevel` resource,\nthe access level resource must have a `lifecycle` block with `ignore_changes = [basic[0].conditions]` so\nthey don't fight over which service accounts should be included.\n\n\nTo get more information about AccessLevelCondition, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.accessLevels)\n* How-to Guides\n * [Access Policy Quickstart](https://cloud.google.com/access-context-manager/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Access Level Condition Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst access_level_service_account = new gcp.accesscontextmanager.AccessLevel(\"access-level-service-account\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\nconst created_later = new gcp.serviceaccount.Account(\"created-later\", {accountId: \"my-account-id\"});\nconst access_level_conditions = new gcp.accesscontextmanager.AccessLevelCondition(\"access-level-conditions\", {\n accessLevel: access_level_service_account.name,\n ipSubnetworks: [\"192.0.4.0/24\"],\n members: [\n \"user:test@google.com\",\n \"user:test2@google.com\",\n pulumi.interpolate`serviceAccount:${created_later.email}`,\n ],\n negate: false,\n devicePolicy: {\n requireScreenLock: false,\n requireAdminApproval: false,\n requireCorpOwned: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"IT\",\n \"US\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_level_service_account = gcp.accesscontextmanager.AccessLevel(\"access-level-service-account\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\ncreated_later = gcp.serviceaccount.Account(\"created-later\", account_id=\"my-account-id\")\naccess_level_conditions = gcp.accesscontextmanager.AccessLevelCondition(\"access-level-conditions\",\n access_level=access_level_service_account.name,\n ip_subnetworks=[\"192.0.4.0/24\"],\n members=[\n \"user:test@google.com\",\n \"user:test2@google.com\",\n created_later.email.apply(lambda email: f\"serviceAccount:{email}\"),\n ],\n negate=False,\n device_policy={\n \"require_screen_lock\": False,\n \"require_admin_approval\": False,\n \"require_corp_owned\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n regions=[\n \"IT\",\n \"US\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var access_level_service_account = new Gcp.AccessContextManager.AccessLevel(\"access-level-service-account\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n var created_later = new Gcp.ServiceAccount.Account(\"created-later\", new()\n {\n AccountId = \"my-account-id\",\n });\n\n var access_level_conditions = new Gcp.AccessContextManager.AccessLevelCondition(\"access-level-conditions\", new()\n {\n AccessLevel = access_level_service_account.Name,\n IpSubnetworks = new[]\n {\n \"192.0.4.0/24\",\n },\n Members = new[]\n {\n \"user:test@google.com\",\n \"user:test2@google.com\",\n created_later.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n Negate = false,\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n RequireAdminApproval = false,\n RequireCorpOwned = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"IT\",\n \"US\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\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 := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"access-level-service-account\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewAccount(ctx, \"created-later\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevelCondition(ctx, \"access-level-conditions\", \u0026accesscontextmanager.AccessLevelConditionArgs{\n\t\t\tAccessLevel: access_level_service_account.Name,\n\t\t\tIpSubnetworks: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.0.4.0/24\"),\n\t\t\t},\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:test@google.com\"),\n\t\t\t\tpulumi.String(\"user:test2@google.com\"),\n\t\t\t\tcreated_later.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tNegate: pulumi.Bool(false),\n\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelConditionDevicePolicyArgs{\n\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\tRequireAdminApproval: pulumi.Bool(false),\n\t\t\t\tRequireCorpOwned: pulumi.Bool(true),\n\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\tpulumi.String(\"US\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelCondition;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelConditionArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelConditionDevicePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var access_level_service_account = new AccessLevel(\"access-level-service-account\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n var created_later = new Account(\"created-later\", AccountArgs.builder()\n .accountId(\"my-account-id\")\n .build());\n\n var access_level_conditions = new AccessLevelCondition(\"access-level-conditions\", AccessLevelConditionArgs.builder()\n .accessLevel(access_level_service_account.name())\n .ipSubnetworks(\"192.0.4.0/24\")\n .members( \n \"user:test@google.com\",\n \"user:test2@google.com\",\n created_later.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .negate(false)\n .devicePolicy(AccessLevelConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .requireAdminApproval(false)\n .requireCorpOwned(true)\n .osConstraints(AccessLevelConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"IT\",\n \"US\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access-level-service-account:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n created-later:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-account-id\n access-level-conditions:\n type: gcp:accesscontextmanager:AccessLevelCondition\n properties:\n accessLevel: ${[\"access-level-service-account\"].name}\n ipSubnetworks:\n - 192.0.4.0/24\n members:\n - user:test@google.com\n - user:test2@google.com\n - serviceAccount:${[\"created-later\"].email}\n negate: false\n devicePolicy:\n requireScreenLock: false\n requireAdminApproval: false\n requireCorpOwned: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Allows configuring a single access level condition to be appended to an access level's conditions.\nThis resource is intended to be used in cases where it is not possible to compile a full list\nof conditions to include in a `gcp.accesscontextmanager.AccessLevel` resource,\nto enable them to be added separately.\n\n\u003e **Note:** If this resource is used alongside a `gcp.accesscontextmanager.AccessLevel` resource,\nthe access level resource must have a `lifecycle` block with `ignore_changes = [basic[0].conditions]` so\nthey don't fight over which service accounts should be included.\n\n\nTo get more information about AccessLevelCondition, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.accessLevels)\n* How-to Guides\n * [Access Policy Quickstart](https://cloud.google.com/access-context-manager/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Access Level Condition Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst access_level_service_account = new gcp.accesscontextmanager.AccessLevel(\"access-level-service-account\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\nconst created_later = new gcp.serviceaccount.Account(\"created-later\", {accountId: \"my-account-id\"});\nconst access_level_conditions = new gcp.accesscontextmanager.AccessLevelCondition(\"access-level-conditions\", {\n accessLevel: access_level_service_account.name,\n ipSubnetworks: [\"192.0.4.0/24\"],\n members: [\n \"user:test@google.com\",\n \"user:test2@google.com\",\n pulumi.interpolate`serviceAccount:${created_later.email}`,\n ],\n negate: false,\n devicePolicy: {\n requireScreenLock: false,\n requireAdminApproval: false,\n requireCorpOwned: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"IT\",\n \"US\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_level_service_account = gcp.accesscontextmanager.AccessLevel(\"access-level-service-account\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\ncreated_later = gcp.serviceaccount.Account(\"created-later\", account_id=\"my-account-id\")\naccess_level_conditions = gcp.accesscontextmanager.AccessLevelCondition(\"access-level-conditions\",\n access_level=access_level_service_account.name,\n ip_subnetworks=[\"192.0.4.0/24\"],\n members=[\n \"user:test@google.com\",\n \"user:test2@google.com\",\n created_later.email.apply(lambda email: f\"serviceAccount:{email}\"),\n ],\n negate=False,\n device_policy={\n \"require_screen_lock\": False,\n \"require_admin_approval\": False,\n \"require_corp_owned\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n regions=[\n \"IT\",\n \"US\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var access_level_service_account = new Gcp.AccessContextManager.AccessLevel(\"access-level-service-account\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n var created_later = new Gcp.ServiceAccount.Account(\"created-later\", new()\n {\n AccountId = \"my-account-id\",\n });\n\n var access_level_conditions = new Gcp.AccessContextManager.AccessLevelCondition(\"access-level-conditions\", new()\n {\n AccessLevel = access_level_service_account.Name,\n IpSubnetworks = new[]\n {\n \"192.0.4.0/24\",\n },\n Members = new[]\n {\n \"user:test@google.com\",\n \"user:test2@google.com\",\n created_later.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n Negate = false,\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n RequireAdminApproval = false,\n RequireCorpOwned = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"IT\",\n \"US\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\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\taccess_policy, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccess_level_service_account, err := accesscontextmanager.NewAccessLevel(ctx, \"access-level-service-account\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcreated_later, err := serviceaccount.NewAccount(ctx, \"created-later\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevelCondition(ctx, \"access-level-conditions\", \u0026accesscontextmanager.AccessLevelConditionArgs{\n\t\t\tAccessLevel: access_level_service_account.Name,\n\t\t\tIpSubnetworks: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"192.0.4.0/24\"),\n\t\t\t},\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"user:test@google.com\"),\n\t\t\t\tpulumi.String(\"user:test2@google.com\"),\n\t\t\t\tcreated_later.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t\tNegate: pulumi.Bool(false),\n\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelConditionDevicePolicyArgs{\n\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\tRequireAdminApproval: pulumi.Bool(false),\n\t\t\t\tRequireCorpOwned: pulumi.Bool(true),\n\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegions: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\tpulumi.String(\"US\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelCondition;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelConditionArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelConditionDevicePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var access_level_service_account = new AccessLevel(\"access-level-service-account\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n var created_later = new Account(\"created-later\", AccountArgs.builder()\n .accountId(\"my-account-id\")\n .build());\n\n var access_level_conditions = new AccessLevelCondition(\"access-level-conditions\", AccessLevelConditionArgs.builder()\n .accessLevel(access_level_service_account.name())\n .ipSubnetworks(\"192.0.4.0/24\")\n .members( \n \"user:test@google.com\",\n \"user:test2@google.com\",\n created_later.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .negate(false)\n .devicePolicy(AccessLevelConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .requireAdminApproval(false)\n .requireCorpOwned(true)\n .osConstraints(AccessLevelConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"IT\",\n \"US\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access-level-service-account:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n created-later:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-account-id\n access-level-conditions:\n type: gcp:accesscontextmanager:AccessLevelCondition\n properties:\n accessLevel: ${[\"access-level-service-account\"].name}\n ipSubnetworks:\n - 192.0.4.0/24\n members:\n - user:test@google.com\n - user:test2@google.com\n - serviceAccount:${[\"created-later\"].email}\n negate: false\n devicePolicy:\n requireScreenLock: false\n requireAdminApproval: false\n requireCorpOwned: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "accessLevel": { "type": "string", @@ -132110,7 +132110,7 @@ } }, "gcp:accesscontextmanager/accessLevels:AccessLevels": { - "description": "## Example Usage\n\n### Access Context Manager Access Levels Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst access_levels = new gcp.accesscontextmanager.AccessLevels(\"access-levels\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n accessLevels: [\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/mac_no_lock`,\n title: \"mac_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_MAC\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_levels = gcp.accesscontextmanager.AccessLevels(\"access-levels\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n access_levels=[\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n \"title\": \"chromeos_no_lock\",\n \"basic\": {\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/mac_no_lock\"),\n \"title\": \"mac_no_lock\",\n \"basic\": {\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_MAC\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var access_levels = new Gcp.AccessContextManager.AccessLevels(\"access-levels\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n AccessLevelDetails = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/mac_no_lock\"),\n Title = \"mac_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_MAC\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevels(ctx, \"access-levels\", \u0026accesscontextmanager.AccessLevelsArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tAccessLevels: accesscontextmanager.AccessLevelsAccessLevelArray{\n\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\t\t\tBasic: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicArgs{\n\t\t\t\t\t\tConditions: accesscontextmanager.AccessLevelsAccessLevelBasicConditionArray{\n\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionArgs{\n\t\t\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/mac_no_lock\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"mac_no_lock\"),\n\t\t\t\t\tBasic: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicArgs{\n\t\t\t\t\t\tConditions: accesscontextmanager.AccessLevelsAccessLevelBasicConditionArray{\n\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionArgs{\n\t\t\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_MAC\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevels;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelsArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelsAccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelsAccessLevelBasicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var access_levels = new AccessLevels(\"access-levels\", AccessLevelsArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .accessLevels( \n AccessLevelsAccessLevelArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelsAccessLevelBasicArgs.builder()\n .conditions(AccessLevelsAccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelsAccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build(),\n AccessLevelsAccessLevelArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/mac_no_lock\", name)))\n .title(\"mac_no_lock\")\n .basic(AccessLevelsAccessLevelBasicArgs.builder()\n .conditions(AccessLevelsAccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelsAccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_MAC\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access-levels:\n type: gcp:accesscontextmanager:AccessLevels\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n accessLevels:\n - name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n - name: accessPolicies/${[\"access-policy\"].name}/accessLevels/mac_no_lock\n title: mac_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_MAC\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAccessLevels can be imported using any of these accepted formats:\n\n* `{{parent}}/accessLevels`\n\n* `{{parent}}`\n\nWhen using the `pulumi import` command, AccessLevels can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/accessLevels:AccessLevels default {{parent}}/accessLevels\n```\n\n```sh\n$ pulumi import gcp:accesscontextmanager/accessLevels:AccessLevels default {{parent}}\n```\n\n", + "description": "## Example Usage\n\n### Access Context Manager Access Levels Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst access_levels = new gcp.accesscontextmanager.AccessLevels(\"access-levels\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n accessLevels: [\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/mac_no_lock`,\n title: \"mac_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_MAC\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_levels = gcp.accesscontextmanager.AccessLevels(\"access-levels\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n access_levels=[\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n \"title\": \"chromeos_no_lock\",\n \"basic\": {\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/mac_no_lock\"),\n \"title\": \"mac_no_lock\",\n \"basic\": {\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_MAC\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var access_levels = new Gcp.AccessContextManager.AccessLevels(\"access-levels\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n AccessLevelDetails = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/mac_no_lock\"),\n Title = \"mac_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_MAC\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccess_policy, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevels(ctx, \"access-levels\", \u0026accesscontextmanager.AccessLevelsArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tAccessLevels: accesscontextmanager.AccessLevelsAccessLevelArray{\n\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\t\t\tBasic: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicArgs{\n\t\t\t\t\t\tConditions: accesscontextmanager.AccessLevelsAccessLevelBasicConditionArray{\n\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionArgs{\n\t\t\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/mac_no_lock\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"mac_no_lock\"),\n\t\t\t\t\tBasic: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicArgs{\n\t\t\t\t\t\tConditions: accesscontextmanager.AccessLevelsAccessLevelBasicConditionArray{\n\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionArgs{\n\t\t\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_MAC\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevels;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelsArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelsAccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelsAccessLevelBasicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var access_levels = new AccessLevels(\"access-levels\", AccessLevelsArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .accessLevels( \n AccessLevelsAccessLevelArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelsAccessLevelBasicArgs.builder()\n .conditions(AccessLevelsAccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelsAccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build(),\n AccessLevelsAccessLevelArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/mac_no_lock\", name)))\n .title(\"mac_no_lock\")\n .basic(AccessLevelsAccessLevelBasicArgs.builder()\n .conditions(AccessLevelsAccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelsAccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelsAccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_MAC\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n access-levels:\n type: gcp:accesscontextmanager:AccessLevels\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n accessLevels:\n - name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n - name: accessPolicies/${[\"access-policy\"].name}/accessLevels/mac_no_lock\n title: mac_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_MAC\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAccessLevels can be imported using any of these accepted formats:\n\n* `{{parent}}/accessLevels`\n\n* `{{parent}}`\n\nWhen using the `pulumi import` command, AccessLevels can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/accessLevels:AccessLevels default {{parent}}/accessLevels\n```\n\n```sh\n$ pulumi import gcp:accesscontextmanager/accessLevels:AccessLevels default {{parent}}\n```\n\n", "properties": { "accessLevels": { "type": "array", @@ -132495,7 +132495,7 @@ } }, "gcp:accesscontextmanager/authorizedOrgsDesc:AuthorizedOrgsDesc": { - "description": "An authorized organizations description describes a list of organizations\n(1) that have been authorized to use certain asset (for example, device) data\nowned by different organizations at the enforcement points, or (2) with certain\nasset (for example, device) have been authorized to access the resources in\nanother organization at the enforcement points.\n\n\nTo get more information about AuthorizedOrgsDesc, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.authorizedOrgsDescs)\n* How-to Guides\n * [gcloud docs](https://cloud.google.com/beyondcorp-enterprise/docs/cross-org-authorization)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Authorized Orgs Desc 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_access = new gcp.accesscontextmanager.AccessPolicy(\"test-access\", {\n parent: \"organizations/\",\n title: \"my policy\",\n});\nconst authorized_orgs_desc = new gcp.accesscontextmanager.AuthorizedOrgsDesc(\"authorized-orgs-desc\", {\n parent: pulumi.interpolate`accessPolicies/${test_access.name}`,\n name: pulumi.interpolate`accessPolicies/${test_access.name}/authorizedOrgsDescs/fakeDescName`,\n authorizationType: \"AUTHORIZATION_TYPE_TRUST\",\n assetType: \"ASSET_TYPE_CREDENTIAL_STRENGTH\",\n authorizationDirection: \"AUTHORIZATION_DIRECTION_TO\",\n orgs: [\n \"organizations/12345\",\n \"organizations/98765\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_access = gcp.accesscontextmanager.AccessPolicy(\"test-access\",\n parent=\"organizations/\",\n title=\"my policy\")\nauthorized_orgs_desc = gcp.accesscontextmanager.AuthorizedOrgsDesc(\"authorized-orgs-desc\",\n parent=test_access.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=test_access.name.apply(lambda name: f\"accessPolicies/{name}/authorizedOrgsDescs/fakeDescName\"),\n authorization_type=\"AUTHORIZATION_TYPE_TRUST\",\n asset_type=\"ASSET_TYPE_CREDENTIAL_STRENGTH\",\n authorization_direction=\"AUTHORIZATION_DIRECTION_TO\",\n orgs=[\n \"organizations/12345\",\n \"organizations/98765\",\n ])\n```\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_access = new Gcp.AccessContextManager.AccessPolicy(\"test-access\", new()\n {\n Parent = \"organizations/\",\n Title = \"my policy\",\n });\n\n var authorized_orgs_desc = new Gcp.AccessContextManager.AuthorizedOrgsDesc(\"authorized-orgs-desc\", new()\n {\n Parent = test_access.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = test_access.Name.Apply(name =\u003e $\"accessPolicies/{name}/authorizedOrgsDescs/fakeDescName\"),\n AuthorizationType = \"AUTHORIZATION_TYPE_TRUST\",\n AssetType = \"ASSET_TYPE_CREDENTIAL_STRENGTH\",\n AuthorizationDirection = \"AUTHORIZATION_DIRECTION_TO\",\n Orgs = new[]\n {\n \"organizations/12345\",\n \"organizations/98765\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := accesscontextmanager.NewAccessPolicy(ctx, \"test-access\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAuthorizedOrgsDesc(ctx, \"authorized-orgs-desc\", \u0026accesscontextmanager.AuthorizedOrgsDescArgs{\n\t\t\tParent: test_access.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: test_access.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/authorizedOrgsDescs/fakeDescName\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tAuthorizationType: pulumi.String(\"AUTHORIZATION_TYPE_TRUST\"),\n\t\t\tAssetType: pulumi.String(\"ASSET_TYPE_CREDENTIAL_STRENGTH\"),\n\t\t\tAuthorizationDirection: pulumi.String(\"AUTHORIZATION_DIRECTION_TO\"),\n\t\t\tOrgs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"organizations/12345\"),\n\t\t\t\tpulumi.String(\"organizations/98765\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AuthorizedOrgsDesc;\nimport com.pulumi.gcp.accesscontextmanager.AuthorizedOrgsDescArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_access = new AccessPolicy(\"test-access\", AccessPolicyArgs.builder()\n .parent(\"organizations/\")\n .title(\"my policy\")\n .build());\n\n var authorized_orgs_desc = new AuthorizedOrgsDesc(\"authorized-orgs-desc\", AuthorizedOrgsDescArgs.builder()\n .parent(test_access.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(test_access.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/authorizedOrgsDescs/fakeDescName\", name)))\n .authorizationType(\"AUTHORIZATION_TYPE_TRUST\")\n .assetType(\"ASSET_TYPE_CREDENTIAL_STRENGTH\")\n .authorizationDirection(\"AUTHORIZATION_DIRECTION_TO\")\n .orgs( \n \"organizations/12345\",\n \"organizations/98765\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n authorized-orgs-desc:\n type: gcp:accesscontextmanager:AuthorizedOrgsDesc\n properties:\n parent: accessPolicies/${[\"test-access\"].name}\n name: accessPolicies/${[\"test-access\"].name}/authorizedOrgsDescs/fakeDescName\n authorizationType: AUTHORIZATION_TYPE_TRUST\n assetType: ASSET_TYPE_CREDENTIAL_STRENGTH\n authorizationDirection: AUTHORIZATION_DIRECTION_TO\n orgs:\n - organizations/12345\n - organizations/98765\n test-access:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAuthorizedOrgsDesc can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AuthorizedOrgsDesc can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/authorizedOrgsDesc:AuthorizedOrgsDesc default {{name}}\n```\n\n", + "description": "An authorized organizations description describes a list of organizations\n(1) that have been authorized to use certain asset (for example, device) data\nowned by different organizations at the enforcement points, or (2) with certain\nasset (for example, device) have been authorized to access the resources in\nanother organization at the enforcement points.\n\n\nTo get more information about AuthorizedOrgsDesc, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.authorizedOrgsDescs)\n* How-to Guides\n * [gcloud docs](https://cloud.google.com/beyondcorp-enterprise/docs/cross-org-authorization)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Authorized Orgs Desc 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_access = new gcp.accesscontextmanager.AccessPolicy(\"test-access\", {\n parent: \"organizations/\",\n title: \"my policy\",\n});\nconst authorized_orgs_desc = new gcp.accesscontextmanager.AuthorizedOrgsDesc(\"authorized-orgs-desc\", {\n parent: pulumi.interpolate`accessPolicies/${test_access.name}`,\n name: pulumi.interpolate`accessPolicies/${test_access.name}/authorizedOrgsDescs/fakeDescName`,\n authorizationType: \"AUTHORIZATION_TYPE_TRUST\",\n assetType: \"ASSET_TYPE_CREDENTIAL_STRENGTH\",\n authorizationDirection: \"AUTHORIZATION_DIRECTION_TO\",\n orgs: [\n \"organizations/12345\",\n \"organizations/98765\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest_access = gcp.accesscontextmanager.AccessPolicy(\"test-access\",\n parent=\"organizations/\",\n title=\"my policy\")\nauthorized_orgs_desc = gcp.accesscontextmanager.AuthorizedOrgsDesc(\"authorized-orgs-desc\",\n parent=test_access.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=test_access.name.apply(lambda name: f\"accessPolicies/{name}/authorizedOrgsDescs/fakeDescName\"),\n authorization_type=\"AUTHORIZATION_TYPE_TRUST\",\n asset_type=\"ASSET_TYPE_CREDENTIAL_STRENGTH\",\n authorization_direction=\"AUTHORIZATION_DIRECTION_TO\",\n orgs=[\n \"organizations/12345\",\n \"organizations/98765\",\n ])\n```\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_access = new Gcp.AccessContextManager.AccessPolicy(\"test-access\", new()\n {\n Parent = \"organizations/\",\n Title = \"my policy\",\n });\n\n var authorized_orgs_desc = new Gcp.AccessContextManager.AuthorizedOrgsDesc(\"authorized-orgs-desc\", new()\n {\n Parent = test_access.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = test_access.Name.Apply(name =\u003e $\"accessPolicies/{name}/authorizedOrgsDescs/fakeDescName\"),\n AuthorizationType = \"AUTHORIZATION_TYPE_TRUST\",\n AssetType = \"ASSET_TYPE_CREDENTIAL_STRENGTH\",\n AuthorizationDirection = \"AUTHORIZATION_DIRECTION_TO\",\n Orgs = new[]\n {\n \"organizations/12345\",\n \"organizations/98765\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest_access, err := accesscontextmanager.NewAccessPolicy(ctx, \"test-access\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAuthorizedOrgsDesc(ctx, \"authorized-orgs-desc\", \u0026accesscontextmanager.AuthorizedOrgsDescArgs{\n\t\t\tParent: test_access.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: test_access.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/authorizedOrgsDescs/fakeDescName\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tAuthorizationType: pulumi.String(\"AUTHORIZATION_TYPE_TRUST\"),\n\t\t\tAssetType: pulumi.String(\"ASSET_TYPE_CREDENTIAL_STRENGTH\"),\n\t\t\tAuthorizationDirection: pulumi.String(\"AUTHORIZATION_DIRECTION_TO\"),\n\t\t\tOrgs: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"organizations/12345\"),\n\t\t\t\tpulumi.String(\"organizations/98765\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AuthorizedOrgsDesc;\nimport com.pulumi.gcp.accesscontextmanager.AuthorizedOrgsDescArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_access = new AccessPolicy(\"test-access\", AccessPolicyArgs.builder()\n .parent(\"organizations/\")\n .title(\"my policy\")\n .build());\n\n var authorized_orgs_desc = new AuthorizedOrgsDesc(\"authorized-orgs-desc\", AuthorizedOrgsDescArgs.builder()\n .parent(test_access.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(test_access.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/authorizedOrgsDescs/fakeDescName\", name)))\n .authorizationType(\"AUTHORIZATION_TYPE_TRUST\")\n .assetType(\"ASSET_TYPE_CREDENTIAL_STRENGTH\")\n .authorizationDirection(\"AUTHORIZATION_DIRECTION_TO\")\n .orgs( \n \"organizations/12345\",\n \"organizations/98765\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n authorized-orgs-desc:\n type: gcp:accesscontextmanager:AuthorizedOrgsDesc\n properties:\n parent: accessPolicies/${[\"test-access\"].name}\n name: accessPolicies/${[\"test-access\"].name}/authorizedOrgsDescs/fakeDescName\n authorizationType: AUTHORIZATION_TYPE_TRUST\n assetType: ASSET_TYPE_CREDENTIAL_STRENGTH\n authorizationDirection: AUTHORIZATION_DIRECTION_TO\n orgs:\n - organizations/12345\n - organizations/98765\n test-access:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAuthorizedOrgsDesc can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AuthorizedOrgsDesc can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/authorizedOrgsDesc:AuthorizedOrgsDesc default {{name}}\n```\n\n", "properties": { "assetType": { "type": "string", @@ -132682,7 +132682,7 @@ } }, "gcp:accesscontextmanager/gcpUserAccessBinding:GcpUserAccessBinding": { - "description": "Restricts access to Cloud Console and Google Cloud APIs for a set of users using Context-Aware Access.\n\n\nTo get more information about GcpUserAccessBinding, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/organizations.gcpUserAccessBindings)\n\n## Example Usage\n\n### Access Context Manager Gcp User Access Binding Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst group = new gcp.cloudidentity.Group(\"group\", {\n displayName: \"my-identity-group\",\n parent: \"customers/A01b123xz\",\n groupKey: {\n id: \"my-identity-group@example.com\",\n },\n labels: {\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n },\n});\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst accessLevelIdForUserAccessBinding = new gcp.accesscontextmanager.AccessLevel(\"access_level_id_for_user_access_binding\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\"US\"],\n }],\n },\n});\nconst gcpUserAccessBinding = new gcp.accesscontextmanager.GcpUserAccessBinding(\"gcp_user_access_binding\", {\n organizationId: \"123456789\",\n groupKey: std.trimprefixOutput({\n input: group.id,\n prefix: \"groups/\",\n }).apply(invoke =\u003e invoke.result),\n accessLevels: accessLevelIdForUserAccessBinding.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngroup = gcp.cloudidentity.Group(\"group\",\n display_name=\"my-identity-group\",\n parent=\"customers/A01b123xz\",\n group_key={\n \"id\": \"my-identity-group@example.com\",\n },\n labels={\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n })\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_level_id_for_user_access_binding = gcp.accesscontextmanager.AccessLevel(\"access_level_id_for_user_access_binding\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\"US\"],\n }],\n })\ngcp_user_access_binding = gcp.accesscontextmanager.GcpUserAccessBinding(\"gcp_user_access_binding\",\n organization_id=\"123456789\",\n group_key=std.trimprefix_output(input=group.id,\n prefix=\"groups/\").apply(lambda invoke: invoke.result),\n access_levels=access_level_id_for_user_access_binding.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @group = new Gcp.CloudIdentity.Group(\"group\", new()\n {\n DisplayName = \"my-identity-group\",\n Parent = \"customers/A01b123xz\",\n GroupKey = new Gcp.CloudIdentity.Inputs.GroupGroupKeyArgs\n {\n Id = \"my-identity-group@example.com\",\n },\n Labels = \n {\n { \"cloudidentity.googleapis.com/groups.discussion_forum\", \"\" },\n },\n });\n\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var accessLevelIdForUserAccessBinding = new Gcp.AccessContextManager.AccessLevel(\"access_level_id_for_user_access_binding\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"US\",\n },\n },\n },\n },\n });\n\n var gcpUserAccessBinding = new Gcp.AccessContextManager.GcpUserAccessBinding(\"gcp_user_access_binding\", new()\n {\n OrganizationId = \"123456789\",\n GroupKey = Std.Trimprefix.Invoke(new()\n {\n Input = @group.Id,\n Prefix = \"groups/\",\n }).Apply(invoke =\u003e invoke.Result),\n AccessLevels = accessLevelIdForUserAccessBinding.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudidentity\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgroup, err := cloudidentity.NewGroup(ctx, \"group\", \u0026cloudidentity.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"my-identity-group\"),\n\t\t\tParent: pulumi.String(\"customers/A01b123xz\"),\n\t\t\tGroupKey: \u0026cloudidentity.GroupGroupKeyArgs{\n\t\t\t\tId: pulumi.String(\"my-identity-group@example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"cloudidentity.googleapis.com/groups.discussion_forum\": pulumi.String(\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccessLevelIdForUserAccessBinding, err := accesscontextmanager.NewAccessLevel(ctx, \"access_level_id_for_user_access_binding\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewGcpUserAccessBinding(ctx, \"gcp_user_access_binding\", \u0026accesscontextmanager.GcpUserAccessBindingArgs{\n\t\t\tOrganizationId: pulumi.String(\"123456789\"),\n\t\t\tGroupKey: pulumi.String(std.TrimprefixOutput(ctx, std.TrimprefixOutputArgs{\n\t\t\t\tInput: group.ID(),\n\t\t\t\tPrefix: pulumi.String(\"groups/\"),\n\t\t\t}, nil).ApplyT(func(invoke std.TrimprefixResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tAccessLevels: accessLevelIdForUserAccessBinding.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudidentity.Group;\nimport com.pulumi.gcp.cloudidentity.GroupArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupGroupKeyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.accesscontextmanager.GcpUserAccessBinding;\nimport com.pulumi.gcp.accesscontextmanager.GcpUserAccessBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var group = new Group(\"group\", GroupArgs.builder()\n .displayName(\"my-identity-group\")\n .parent(\"customers/A01b123xz\")\n .groupKey(GroupGroupKeyArgs.builder()\n .id(\"my-identity-group@example.com\")\n .build())\n .labels(Map.of(\"cloudidentity.googleapis.com/groups.discussion_forum\", \"\"))\n .build());\n\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var accessLevelIdForUserAccessBinding = new AccessLevel(\"accessLevelIdForUserAccessBinding\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions(\"US\")\n .build())\n .build())\n .build());\n\n var gcpUserAccessBinding = new GcpUserAccessBinding(\"gcpUserAccessBinding\", GcpUserAccessBindingArgs.builder()\n .organizationId(\"123456789\")\n .groupKey(StdFunctions.trimprefix().applyValue(invoke -\u003e invoke.result()))\n .accessLevels(accessLevelIdForUserAccessBinding.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n group:\n type: gcp:cloudidentity:Group\n properties:\n displayName: my-identity-group\n parent: customers/A01b123xz\n groupKey:\n id: my-identity-group@example.com\n labels:\n cloudidentity.googleapis.com/groups.discussion_forum: \"\"\n accessLevelIdForUserAccessBinding:\n type: gcp:accesscontextmanager:AccessLevel\n name: access_level_id_for_user_access_binding\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n gcpUserAccessBinding:\n type: gcp:accesscontextmanager:GcpUserAccessBinding\n name: gcp_user_access_binding\n properties:\n organizationId: '123456789'\n groupKey:\n fn::invoke:\n function: std:trimprefix\n arguments:\n input: ${group.id}\n prefix: groups/\n return: result\n accessLevels: ${accessLevelIdForUserAccessBinding.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGcpUserAccessBinding can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, GcpUserAccessBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/gcpUserAccessBinding:GcpUserAccessBinding default {{name}}\n```\n\n", + "description": "Restricts access to Cloud Console and Google Cloud APIs for a set of users using Context-Aware Access.\n\n\nTo get more information about GcpUserAccessBinding, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/organizations.gcpUserAccessBindings)\n\n## Example Usage\n\n### Access Context Manager Gcp User Access Binding Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst group = new gcp.cloudidentity.Group(\"group\", {\n displayName: \"my-identity-group\",\n parent: \"customers/A01b123xz\",\n groupKey: {\n id: \"my-identity-group@example.com\",\n },\n labels: {\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n },\n});\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst accessLevelIdForUserAccessBinding = new gcp.accesscontextmanager.AccessLevel(\"access_level_id_for_user_access_binding\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\"US\"],\n }],\n },\n});\nconst gcpUserAccessBinding = new gcp.accesscontextmanager.GcpUserAccessBinding(\"gcp_user_access_binding\", {\n organizationId: \"123456789\",\n groupKey: std.trimprefixOutput({\n input: group.id,\n prefix: \"groups/\",\n }).apply(invoke =\u003e invoke.result),\n accessLevels: accessLevelIdForUserAccessBinding.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngroup = gcp.cloudidentity.Group(\"group\",\n display_name=\"my-identity-group\",\n parent=\"customers/A01b123xz\",\n group_key={\n \"id\": \"my-identity-group@example.com\",\n },\n labels={\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n })\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\naccess_level_id_for_user_access_binding = gcp.accesscontextmanager.AccessLevel(\"access_level_id_for_user_access_binding\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\"US\"],\n }],\n })\ngcp_user_access_binding = gcp.accesscontextmanager.GcpUserAccessBinding(\"gcp_user_access_binding\",\n organization_id=\"123456789\",\n group_key=std.trimprefix_output(input=group.id,\n prefix=\"groups/\").apply(lambda invoke: invoke.result),\n access_levels=access_level_id_for_user_access_binding.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @group = new Gcp.CloudIdentity.Group(\"group\", new()\n {\n DisplayName = \"my-identity-group\",\n Parent = \"customers/A01b123xz\",\n GroupKey = new Gcp.CloudIdentity.Inputs.GroupGroupKeyArgs\n {\n Id = \"my-identity-group@example.com\",\n },\n Labels = \n {\n { \"cloudidentity.googleapis.com/groups.discussion_forum\", \"\" },\n },\n });\n\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var accessLevelIdForUserAccessBinding = new Gcp.AccessContextManager.AccessLevel(\"access_level_id_for_user_access_binding\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"US\",\n },\n },\n },\n },\n });\n\n var gcpUserAccessBinding = new Gcp.AccessContextManager.GcpUserAccessBinding(\"gcp_user_access_binding\", new()\n {\n OrganizationId = \"123456789\",\n GroupKey = Std.Trimprefix.Invoke(new()\n {\n Input = @group.Id,\n Prefix = \"groups/\",\n }).Apply(invoke =\u003e invoke.Result),\n AccessLevels = accessLevelIdForUserAccessBinding.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudidentity\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgroup, err := cloudidentity.NewGroup(ctx, \"group\", \u0026cloudidentity.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"my-identity-group\"),\n\t\t\tParent: pulumi.String(\"customers/A01b123xz\"),\n\t\t\tGroupKey: \u0026cloudidentity.GroupGroupKeyArgs{\n\t\t\t\tId: pulumi.String(\"my-identity-group@example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"cloudidentity.googleapis.com/groups.discussion_forum\": pulumi.String(\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccess_policy, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccessLevelIdForUserAccessBinding, err := accesscontextmanager.NewAccessLevel(ctx, \"access_level_id_for_user_access_binding\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewGcpUserAccessBinding(ctx, \"gcp_user_access_binding\", \u0026accesscontextmanager.GcpUserAccessBindingArgs{\n\t\t\tOrganizationId: pulumi.String(\"123456789\"),\n\t\t\tGroupKey: pulumi.String(std.TrimprefixOutput(ctx, std.TrimprefixOutputArgs{\n\t\t\t\tInput: group.ID(),\n\t\t\t\tPrefix: pulumi.String(\"groups/\"),\n\t\t\t}, nil).ApplyT(func(invoke std.TrimprefixResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tAccessLevels: accessLevelIdForUserAccessBinding.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudidentity.Group;\nimport com.pulumi.gcp.cloudidentity.GroupArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupGroupKeyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.accesscontextmanager.GcpUserAccessBinding;\nimport com.pulumi.gcp.accesscontextmanager.GcpUserAccessBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var group = new Group(\"group\", GroupArgs.builder()\n .displayName(\"my-identity-group\")\n .parent(\"customers/A01b123xz\")\n .groupKey(GroupGroupKeyArgs.builder()\n .id(\"my-identity-group@example.com\")\n .build())\n .labels(Map.of(\"cloudidentity.googleapis.com/groups.discussion_forum\", \"\"))\n .build());\n\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var accessLevelIdForUserAccessBinding = new AccessLevel(\"accessLevelIdForUserAccessBinding\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions(\"US\")\n .build())\n .build())\n .build());\n\n var gcpUserAccessBinding = new GcpUserAccessBinding(\"gcpUserAccessBinding\", GcpUserAccessBindingArgs.builder()\n .organizationId(\"123456789\")\n .groupKey(StdFunctions.trimprefix().applyValue(invoke -\u003e invoke.result()))\n .accessLevels(accessLevelIdForUserAccessBinding.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n group:\n type: gcp:cloudidentity:Group\n properties:\n displayName: my-identity-group\n parent: customers/A01b123xz\n groupKey:\n id: my-identity-group@example.com\n labels:\n cloudidentity.googleapis.com/groups.discussion_forum: \"\"\n accessLevelIdForUserAccessBinding:\n type: gcp:accesscontextmanager:AccessLevel\n name: access_level_id_for_user_access_binding\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n gcpUserAccessBinding:\n type: gcp:accesscontextmanager:GcpUserAccessBinding\n name: gcp_user_access_binding\n properties:\n organizationId: '123456789'\n groupKey:\n fn::invoke:\n function: std:trimprefix\n arguments:\n input: ${group.id}\n prefix: groups/\n return: result\n accessLevels: ${accessLevelIdForUserAccessBinding.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGcpUserAccessBinding can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, GcpUserAccessBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/gcpUserAccessBinding:GcpUserAccessBinding default {{name}}\n```\n\n", "properties": { "accessLevels": { "type": "string", @@ -132812,7 +132812,7 @@ } }, "gcp:accesscontextmanager/servicePerimeter:ServicePerimeter": { - "description": "ServicePerimeter describes a set of GCP resources which can freely import\nand export data amongst themselves, but not export outside of the\nServicePerimeter. If a request with a source within this ServicePerimeter\nhas a target outside of the ServicePerimeter, the request will be blocked.\nOtherwise the request is allowed. There are two types of Service Perimeter\n- Regular and Bridge. Regular Service Perimeters cannot overlap, a single\nGCP project can only belong to a single regular Service Perimeter. Service\nPerimeter Bridges can contain only GCP projects as members, a single GCP\nproject may belong to multiple Service Perimeter Bridges.\n\n\nTo get more information about ServicePerimeter, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Guide to Ingress and Egress Rules](https://cloud.google.com/vpc-service-controls/docs/ingress-egress-rules)\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Service Perimeter Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_storage`,\n title: \"restrict_storage\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: false,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_storage\"),\n title=\"restrict_storage\",\n status={\n \"restricted_services\": [\"storage.googleapis.com\"],\n })\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": False,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_storage\"),\n Title = \"restrict_storage\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_storage\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_storage\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter = new ServicePerimeter(\"service-perimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_storage\", name)))\n .title(\"restrict_storage\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_storage\n title: restrict_storage\n status:\n restrictedServices:\n - storage.googleapis.com\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: false\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Access Context Manager Service Perimeter Secure Data Exchange\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst secure_data_exchange = new gcp.accesscontextmanager.ServicePerimeters(\"secure-data-exchange\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n servicePerimeters: [\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n },\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"bigtable.googleapis.com\"],\n vpcAccessibleServices: {\n enableRestriction: true,\n allowedServices: [\"bigquery.googleapis.com\"],\n },\n },\n },\n ],\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/secure_data_exchange`,\n title: \"secure_data_exchange\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: false,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\nconst test_access = new gcp.accesscontextmanager.ServicePerimeter(\"test-access\", {\n parent: `accessPolicies/${test_accessGoogleAccessContextManagerAccessPolicy.name}`,\n name: `accessPolicies/${test_accessGoogleAccessContextManagerAccessPolicy.name}/servicePerimeters/%s`,\n title: \"%s\",\n perimeterType: \"PERIMETER_TYPE_REGULAR\",\n status: {\n restrictedServices: [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n accessLevels: [access_level.name],\n vpcAccessibleServices: {\n enableRestriction: true,\n allowedServices: [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n },\n ingressPolicies: [{\n ingressFrom: {\n sources: [{\n accessLevel: test_accessGoogleAccessContextManagerAccessLevel.name,\n }],\n identityType: \"ANY_IDENTITY\",\n },\n ingressTo: {\n resources: [\"*\"],\n operations: [\n {\n serviceName: \"bigquery.googleapis.com\",\n methodSelectors: [\n {\n method: \"BigQueryStorage.ReadRows\",\n },\n {\n method: \"TableService.ListTables\",\n },\n {\n permission: \"bigquery.jobs.get\",\n },\n ],\n },\n {\n serviceName: \"storage.googleapis.com\",\n methodSelectors: [{\n method: \"google.storage.objects.create\",\n }],\n },\n ],\n },\n }],\n egressPolicies: [{\n egressFrom: {\n identityType: \"ANY_USER_ACCOUNT\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nsecure_data_exchange = gcp.accesscontextmanager.ServicePerimeters(\"secure-data-exchange\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n service_perimeters=[\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restricted_services\": [\"storage.googleapis.com\"],\n },\n },\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restricted_services\": [\"bigtable.googleapis.com\"],\n \"vpc_accessible_services\": {\n \"enable_restriction\": True,\n \"allowed_services\": [\"bigquery.googleapis.com\"],\n },\n },\n },\n ])\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/secure_data_exchange\"),\n title=\"secure_data_exchange\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": False,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\ntest_access = gcp.accesscontextmanager.ServicePerimeter(\"test-access\",\n parent=f\"accessPolicies/{test_access_google_access_context_manager_access_policy['name']}\",\n name=f\"accessPolicies/{test_access_google_access_context_manager_access_policy['name']}/servicePerimeters/%s\",\n title=\"%s\",\n perimeter_type=\"PERIMETER_TYPE_REGULAR\",\n status={\n \"restricted_services\": [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n \"access_levels\": [access_level.name],\n \"vpc_accessible_services\": {\n \"enable_restriction\": True,\n \"allowed_services\": [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n },\n \"ingress_policies\": [{\n \"ingress_from\": {\n \"sources\": [{\n \"access_level\": test_access_google_access_context_manager_access_level[\"name\"],\n }],\n \"identity_type\": \"ANY_IDENTITY\",\n },\n \"ingress_to\": {\n \"resources\": [\"*\"],\n \"operations\": [\n {\n \"service_name\": \"bigquery.googleapis.com\",\n \"method_selectors\": [\n {\n \"method\": \"BigQueryStorage.ReadRows\",\n },\n {\n \"method\": \"TableService.ListTables\",\n },\n {\n \"permission\": \"bigquery.jobs.get\",\n },\n ],\n },\n {\n \"service_name\": \"storage.googleapis.com\",\n \"method_selectors\": [{\n \"method\": \"google.storage.objects.create\",\n }],\n },\n ],\n },\n }],\n \"egress_policies\": [{\n \"egress_from\": {\n \"identity_type\": \"ANY_USER_ACCOUNT\",\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var secure_data_exchange = new Gcp.AccessContextManager.ServicePerimeters(\"secure-data-exchange\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n ServicePerimeterDetails = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigtable.googleapis.com\",\n },\n VpcAccessibleServices = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs\n {\n EnableRestriction = true,\n AllowedServices = new[]\n {\n \"bigquery.googleapis.com\",\n },\n },\n },\n },\n },\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/secure_data_exchange\"),\n Title = \"secure_data_exchange\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n var test_access = new Gcp.AccessContextManager.ServicePerimeter(\"test-access\", new()\n {\n Parent = $\"accessPolicies/{test_accessGoogleAccessContextManagerAccessPolicy.Name}\",\n Name = $\"accessPolicies/{test_accessGoogleAccessContextManagerAccessPolicy.Name}/servicePerimeters/%s\",\n Title = \"%s\",\n PerimeterType = \"PERIMETER_TYPE_REGULAR\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n },\n AccessLevels = new[]\n {\n access_level.Name,\n },\n VpcAccessibleServices = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusVpcAccessibleServicesArgs\n {\n EnableRestriction = true,\n AllowedServices = new[]\n {\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n },\n },\n IngressPolicies = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyArgs\n {\n IngressFrom = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressFromArgs\n {\n Sources = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressFromSourceArgs\n {\n AccessLevel = test_accessGoogleAccessContextManagerAccessLevel.Name,\n },\n },\n IdentityType = \"ANY_IDENTITY\",\n },\n IngressTo = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToArgs\n {\n Resources = new[]\n {\n \"*\",\n },\n Operations = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationArgs\n {\n ServiceName = \"bigquery.googleapis.com\",\n MethodSelectors = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Method = \"BigQueryStorage.ReadRows\",\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Method = \"TableService.ListTables\",\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Permission = \"bigquery.jobs.get\",\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationArgs\n {\n ServiceName = \"storage.googleapis.com\",\n MethodSelectors = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Method = \"google.storage.objects.create\",\n },\n },\n },\n },\n },\n },\n },\n EgressPolicies = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusEgressPolicyArgs\n {\n EgressFrom = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusEgressPolicyEgressFromArgs\n {\n IdentityType = \"ANY_USER_ACCOUNT\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeters(ctx, \"secure-data-exchange\", \u0026accesscontextmanager.ServicePerimetersArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tServicePerimeters: accesscontextmanager.ServicePerimetersServicePerimeterArray{\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"bigtable.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVpcAccessibleServices: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs{\n\t\t\t\t\t\t\tEnableRestriction: pulumi.Bool(true),\n\t\t\t\t\t\t\tAllowedServices: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/secure_data_exchange\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"secure_data_exchange\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"test-access\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: pulumi.Sprintf(\"accessPolicies/%v\", test_accessGoogleAccessContextManagerAccessPolicy.Name),\n\t\t\tName: pulumi.Sprintf(\"accessPolicies/%v%v\", test_accessGoogleAccessContextManagerAccessPolicy.Name, \"/servicePerimeters/%s\"),\n\t\t\tTitle: pulumi.String(\"%s\"),\n\t\t\tPerimeterType: pulumi.String(\"PERIMETER_TYPE_REGULAR\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t\tAccessLevels: pulumi.StringArray{\n\t\t\t\t\taccess_level.Name,\n\t\t\t\t},\n\t\t\t\tVpcAccessibleServices: \u0026accesscontextmanager.ServicePerimeterStatusVpcAccessibleServicesArgs{\n\t\t\t\t\tEnableRestriction: pulumi.Bool(true),\n\t\t\t\t\tAllowedServices: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIngressPolicies: accesscontextmanager.ServicePerimeterStatusIngressPolicyArray{\n\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyArgs{\n\t\t\t\t\t\tIngressFrom: \u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressFromArgs{\n\t\t\t\t\t\t\tSources: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressFromSourceArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressFromSourceArgs{\n\t\t\t\t\t\t\t\t\tAccessLevel: pulumi.Any(test_accessGoogleAccessContextManagerAccessLevel.Name),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIdentityType: pulumi.String(\"ANY_IDENTITY\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tIngressTo: \u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToArgs{\n\t\t\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tOperations: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationArgs{\n\t\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\t\t\t\t\tMethodSelectors: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tMethod: pulumi.String(\"BigQueryStorage.ReadRows\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tMethod: pulumi.String(\"TableService.ListTables\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tPermission: pulumi.String(\"bigquery.jobs.get\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationArgs{\n\t\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t\t\t\t\tMethodSelectors: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tMethod: pulumi.String(\"google.storage.objects.create\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEgressPolicies: accesscontextmanager.ServicePerimeterStatusEgressPolicyArray{\n\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusEgressPolicyArgs{\n\t\t\t\t\t\tEgressFrom: \u0026accesscontextmanager.ServicePerimeterStatusEgressPolicyEgressFromArgs{\n\t\t\t\t\t\t\tIdentityType: pulumi.String(\"ANY_USER_ACCOUNT\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeters;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimetersArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusVpcAccessibleServicesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var secure_data_exchange = new ServicePerimeters(\"secure-data-exchange\", ServicePerimetersArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .servicePerimeters( \n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build(),\n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"bigtable.googleapis.com\")\n .vpcAccessibleServices(ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs.builder()\n .enableRestriction(true)\n .allowedServices(\"bigquery.googleapis.com\")\n .build())\n .build())\n .build())\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/secure_data_exchange\", name)))\n .title(\"secure_data_exchange\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n var test_access = new ServicePerimeter(\"test-access\", ServicePerimeterArgs.builder()\n .parent(String.format(\"accessPolicies/%s\", test_accessGoogleAccessContextManagerAccessPolicy.name()))\n .name(String.format(\"accessPolicies/%s/servicePerimeters/%s\", test_accessGoogleAccessContextManagerAccessPolicy.name()))\n .title(\"%s\")\n .perimeterType(\"PERIMETER_TYPE_REGULAR\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices( \n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\")\n .accessLevels(access_level.name())\n .vpcAccessibleServices(ServicePerimeterStatusVpcAccessibleServicesArgs.builder()\n .enableRestriction(true)\n .allowedServices( \n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\")\n .build())\n .ingressPolicies(ServicePerimeterStatusIngressPolicyArgs.builder()\n .ingressFrom(ServicePerimeterStatusIngressPolicyIngressFromArgs.builder()\n .sources(ServicePerimeterStatusIngressPolicyIngressFromSourceArgs.builder()\n .accessLevel(test_accessGoogleAccessContextManagerAccessLevel.name())\n .build())\n .identityType(\"ANY_IDENTITY\")\n .build())\n .ingressTo(ServicePerimeterStatusIngressPolicyIngressToArgs.builder()\n .resources(\"*\")\n .operations( \n ServicePerimeterStatusIngressPolicyIngressToOperationArgs.builder()\n .serviceName(\"bigquery.googleapis.com\")\n .methodSelectors( \n ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .method(\"BigQueryStorage.ReadRows\")\n .build(),\n ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .method(\"TableService.ListTables\")\n .build(),\n ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .permission(\"bigquery.jobs.get\")\n .build())\n .build(),\n ServicePerimeterStatusIngressPolicyIngressToOperationArgs.builder()\n .serviceName(\"storage.googleapis.com\")\n .methodSelectors(ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .method(\"google.storage.objects.create\")\n .build())\n .build())\n .build())\n .build())\n .egressPolicies(ServicePerimeterStatusEgressPolicyArgs.builder()\n .egressFrom(ServicePerimeterStatusEgressPolicyEgressFromArgs.builder()\n .identityType(\"ANY_USER_ACCOUNT\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secure-data-exchange:\n type: gcp:accesscontextmanager:ServicePerimeters\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n servicePerimeters:\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title: \"\"\n status:\n restrictedServices:\n - storage.googleapis.com\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title: \"\"\n status:\n restrictedServices:\n - bigtable.googleapis.com\n vpcAccessibleServices:\n enableRestriction: true\n allowedServices:\n - bigquery.googleapis.com\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/secure_data_exchange\n title: secure_data_exchange\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: false\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n test-access:\n type: gcp:accesscontextmanager:ServicePerimeter\n properties:\n parent: accessPolicies/${[\"test-accessGoogleAccessContextManagerAccessPolicy\"].name}\n name: accessPolicies/${[\"test-accessGoogleAccessContextManagerAccessPolicy\"].name}/servicePerimeters/%s\n title: '%s'\n perimeterType: PERIMETER_TYPE_REGULAR\n status:\n restrictedServices:\n - bigquery.googleapis.com\n - storage.googleapis.com\n accessLevels:\n - ${[\"access-level\"].name}\n vpcAccessibleServices:\n enableRestriction: true\n allowedServices:\n - bigquery.googleapis.com\n - storage.googleapis.com\n ingressPolicies:\n - ingressFrom:\n sources:\n - accessLevel: ${[\"test-accessGoogleAccessContextManagerAccessLevel\"].name}\n identityType: ANY_IDENTITY\n ingressTo:\n resources:\n - '*'\n operations:\n - serviceName: bigquery.googleapis.com\n methodSelectors:\n - method: BigQueryStorage.ReadRows\n - method: TableService.ListTables\n - permission: bigquery.jobs.get\n - serviceName: storage.googleapis.com\n methodSelectors:\n - method: google.storage.objects.create\n egressPolicies:\n - egressFrom:\n identityType: ANY_USER_ACCOUNT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Access Context Manager Service Perimeter Dry-Run\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_bigquery_dryrun_storage`,\n title: \"restrict_bigquery_dryrun_storage\",\n status: {\n restrictedServices: [\"bigquery.googleapis.com\"],\n },\n spec: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n useExplicitDryRunSpec: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_bigquery_dryrun_storage\"),\n title=\"restrict_bigquery_dryrun_storage\",\n status={\n \"restricted_services\": [\"bigquery.googleapis.com\"],\n },\n spec={\n \"restricted_services\": [\"storage.googleapis.com\"],\n },\n use_explicit_dry_run_spec=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_bigquery_dryrun_storage\"),\n Title = \"restrict_bigquery_dryrun_storage\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigquery.googleapis.com\",\n },\n },\n Spec = new Gcp.AccessContextManager.Inputs.ServicePerimeterSpecArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n UseExplicitDryRunSpec = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_bigquery_dryrun_storage\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_bigquery_dryrun_storage\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpec: \u0026accesscontextmanager.ServicePerimeterSpecArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUseExplicitDryRunSpec: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter = new ServicePerimeter(\"service-perimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_bigquery_dryrun_storage\", name)))\n .title(\"restrict_bigquery_dryrun_storage\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices(\"bigquery.googleapis.com\")\n .build())\n .spec(ServicePerimeterSpecArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .useExplicitDryRunSpec(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_bigquery_dryrun_storage\n title: restrict_bigquery_dryrun_storage\n status:\n restrictedServices:\n - bigquery.googleapis.com\n spec:\n restrictedServices:\n - storage.googleapis.com\n useExplicitDryRunSpec: true\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeter can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ServicePerimeter can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeter:ServicePerimeter default {{name}}\n```\n\n", + "description": "ServicePerimeter describes a set of GCP resources which can freely import\nand export data amongst themselves, but not export outside of the\nServicePerimeter. If a request with a source within this ServicePerimeter\nhas a target outside of the ServicePerimeter, the request will be blocked.\nOtherwise the request is allowed. There are two types of Service Perimeter\n- Regular and Bridge. Regular Service Perimeters cannot overlap, a single\nGCP project can only belong to a single regular Service Perimeter. Service\nPerimeter Bridges can contain only GCP projects as members, a single GCP\nproject may belong to multiple Service Perimeter Bridges.\n\n\nTo get more information about ServicePerimeter, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Guide to Ingress and Egress Rules](https://cloud.google.com/vpc-service-controls/docs/ingress-egress-rules)\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Service Perimeter Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_storage`,\n title: \"restrict_storage\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: false,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_storage\"),\n title=\"restrict_storage\",\n status={\n \"restricted_services\": [\"storage.googleapis.com\"],\n })\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": False,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_storage\"),\n Title = \"restrict_storage\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccess_policy, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_storage\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_storage\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter = new ServicePerimeter(\"service-perimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_storage\", name)))\n .title(\"restrict_storage\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_storage\n title: restrict_storage\n status:\n restrictedServices:\n - storage.googleapis.com\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: false\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Access Context Manager Service Perimeter Secure Data Exchange\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst secure_data_exchange = new gcp.accesscontextmanager.ServicePerimeters(\"secure-data-exchange\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n servicePerimeters: [\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n },\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"bigtable.googleapis.com\"],\n vpcAccessibleServices: {\n enableRestriction: true,\n allowedServices: [\"bigquery.googleapis.com\"],\n },\n },\n },\n ],\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/secure_data_exchange`,\n title: \"secure_data_exchange\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: false,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\nconst test_access = new gcp.accesscontextmanager.ServicePerimeter(\"test-access\", {\n parent: `accessPolicies/${test_accessGoogleAccessContextManagerAccessPolicy.name}`,\n name: `accessPolicies/${test_accessGoogleAccessContextManagerAccessPolicy.name}/servicePerimeters/%s`,\n title: \"%s\",\n perimeterType: \"PERIMETER_TYPE_REGULAR\",\n status: {\n restrictedServices: [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n accessLevels: [access_level.name],\n vpcAccessibleServices: {\n enableRestriction: true,\n allowedServices: [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n },\n ingressPolicies: [{\n ingressFrom: {\n sources: [{\n accessLevel: test_accessGoogleAccessContextManagerAccessLevel.name,\n }],\n identityType: \"ANY_IDENTITY\",\n },\n ingressTo: {\n resources: [\"*\"],\n operations: [\n {\n serviceName: \"bigquery.googleapis.com\",\n methodSelectors: [\n {\n method: \"BigQueryStorage.ReadRows\",\n },\n {\n method: \"TableService.ListTables\",\n },\n {\n permission: \"bigquery.jobs.get\",\n },\n ],\n },\n {\n serviceName: \"storage.googleapis.com\",\n methodSelectors: [{\n method: \"google.storage.objects.create\",\n }],\n },\n ],\n },\n }],\n egressPolicies: [{\n egressFrom: {\n identityType: \"ANY_USER_ACCOUNT\",\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nsecure_data_exchange = gcp.accesscontextmanager.ServicePerimeters(\"secure-data-exchange\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n service_perimeters=[\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restricted_services\": [\"storage.googleapis.com\"],\n },\n },\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restricted_services\": [\"bigtable.googleapis.com\"],\n \"vpc_accessible_services\": {\n \"enable_restriction\": True,\n \"allowed_services\": [\"bigquery.googleapis.com\"],\n },\n },\n },\n ])\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/secure_data_exchange\"),\n title=\"secure_data_exchange\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": False,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\ntest_access = gcp.accesscontextmanager.ServicePerimeter(\"test-access\",\n parent=f\"accessPolicies/{test_access_google_access_context_manager_access_policy['name']}\",\n name=f\"accessPolicies/{test_access_google_access_context_manager_access_policy['name']}/servicePerimeters/%s\",\n title=\"%s\",\n perimeter_type=\"PERIMETER_TYPE_REGULAR\",\n status={\n \"restricted_services\": [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n \"access_levels\": [access_level.name],\n \"vpc_accessible_services\": {\n \"enable_restriction\": True,\n \"allowed_services\": [\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n ],\n },\n \"ingress_policies\": [{\n \"ingress_from\": {\n \"sources\": [{\n \"access_level\": test_access_google_access_context_manager_access_level[\"name\"],\n }],\n \"identity_type\": \"ANY_IDENTITY\",\n },\n \"ingress_to\": {\n \"resources\": [\"*\"],\n \"operations\": [\n {\n \"service_name\": \"bigquery.googleapis.com\",\n \"method_selectors\": [\n {\n \"method\": \"BigQueryStorage.ReadRows\",\n },\n {\n \"method\": \"TableService.ListTables\",\n },\n {\n \"permission\": \"bigquery.jobs.get\",\n },\n ],\n },\n {\n \"service_name\": \"storage.googleapis.com\",\n \"method_selectors\": [{\n \"method\": \"google.storage.objects.create\",\n }],\n },\n ],\n },\n }],\n \"egress_policies\": [{\n \"egress_from\": {\n \"identity_type\": \"ANY_USER_ACCOUNT\",\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var secure_data_exchange = new Gcp.AccessContextManager.ServicePerimeters(\"secure-data-exchange\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n ServicePerimeterDetails = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigtable.googleapis.com\",\n },\n VpcAccessibleServices = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs\n {\n EnableRestriction = true,\n AllowedServices = new[]\n {\n \"bigquery.googleapis.com\",\n },\n },\n },\n },\n },\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/secure_data_exchange\"),\n Title = \"secure_data_exchange\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n var test_access = new Gcp.AccessContextManager.ServicePerimeter(\"test-access\", new()\n {\n Parent = $\"accessPolicies/{test_accessGoogleAccessContextManagerAccessPolicy.Name}\",\n Name = $\"accessPolicies/{test_accessGoogleAccessContextManagerAccessPolicy.Name}/servicePerimeters/%s\",\n Title = \"%s\",\n PerimeterType = \"PERIMETER_TYPE_REGULAR\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n },\n AccessLevels = new[]\n {\n access_level.Name,\n },\n VpcAccessibleServices = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusVpcAccessibleServicesArgs\n {\n EnableRestriction = true,\n AllowedServices = new[]\n {\n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\",\n },\n },\n IngressPolicies = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyArgs\n {\n IngressFrom = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressFromArgs\n {\n Sources = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressFromSourceArgs\n {\n AccessLevel = test_accessGoogleAccessContextManagerAccessLevel.Name,\n },\n },\n IdentityType = \"ANY_IDENTITY\",\n },\n IngressTo = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToArgs\n {\n Resources = new[]\n {\n \"*\",\n },\n Operations = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationArgs\n {\n ServiceName = \"bigquery.googleapis.com\",\n MethodSelectors = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Method = \"BigQueryStorage.ReadRows\",\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Method = \"TableService.ListTables\",\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Permission = \"bigquery.jobs.get\",\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationArgs\n {\n ServiceName = \"storage.googleapis.com\",\n MethodSelectors = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs\n {\n Method = \"google.storage.objects.create\",\n },\n },\n },\n },\n },\n },\n },\n EgressPolicies = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusEgressPolicyArgs\n {\n EgressFrom = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusEgressPolicyEgressFromArgs\n {\n IdentityType = \"ANY_USER_ACCOUNT\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccess_policy, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeters(ctx, \"secure-data-exchange\", \u0026accesscontextmanager.ServicePerimetersArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tServicePerimeters: accesscontextmanager.ServicePerimetersServicePerimeterArray{\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"bigtable.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tVpcAccessibleServices: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs{\n\t\t\t\t\t\t\tEnableRestriction: pulumi.Bool(true),\n\t\t\t\t\t\t\tAllowedServices: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccess_level, err := accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/secure_data_exchange\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"secure_data_exchange\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"test-access\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: pulumi.Sprintf(\"accessPolicies/%v\", test_accessGoogleAccessContextManagerAccessPolicy.Name),\n\t\t\tName: pulumi.Sprintf(\"accessPolicies/%v%v\", test_accessGoogleAccessContextManagerAccessPolicy.Name, \"/servicePerimeters/%s\"),\n\t\t\tTitle: pulumi.String(\"%s\"),\n\t\t\tPerimeterType: pulumi.String(\"PERIMETER_TYPE_REGULAR\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t\tAccessLevels: pulumi.StringArray{\n\t\t\t\t\taccess_level.Name,\n\t\t\t\t},\n\t\t\t\tVpcAccessibleServices: \u0026accesscontextmanager.ServicePerimeterStatusVpcAccessibleServicesArgs{\n\t\t\t\t\tEnableRestriction: pulumi.Bool(true),\n\t\t\t\t\tAllowedServices: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tIngressPolicies: accesscontextmanager.ServicePerimeterStatusIngressPolicyArray{\n\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyArgs{\n\t\t\t\t\t\tIngressFrom: \u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressFromArgs{\n\t\t\t\t\t\t\tSources: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressFromSourceArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressFromSourceArgs{\n\t\t\t\t\t\t\t\t\tAccessLevel: pulumi.Any(test_accessGoogleAccessContextManagerAccessLevel.Name),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tIdentityType: pulumi.String(\"ANY_IDENTITY\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tIngressTo: \u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToArgs{\n\t\t\t\t\t\t\tResources: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tOperations: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationArgs{\n\t\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t\t\t\t\t\tMethodSelectors: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tMethod: pulumi.String(\"BigQueryStorage.ReadRows\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tMethod: pulumi.String(\"TableService.ListTables\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tPermission: pulumi.String(\"bigquery.jobs.get\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationArgs{\n\t\t\t\t\t\t\t\t\tServiceName: pulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t\t\t\t\tMethodSelectors: accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArray{\n\t\t\t\t\t\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs{\n\t\t\t\t\t\t\t\t\t\t\tMethod: pulumi.String(\"google.storage.objects.create\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEgressPolicies: accesscontextmanager.ServicePerimeterStatusEgressPolicyArray{\n\t\t\t\t\t\u0026accesscontextmanager.ServicePerimeterStatusEgressPolicyArgs{\n\t\t\t\t\t\tEgressFrom: \u0026accesscontextmanager.ServicePerimeterStatusEgressPolicyEgressFromArgs{\n\t\t\t\t\t\t\tIdentityType: pulumi.String(\"ANY_USER_ACCOUNT\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeters;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimetersArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusVpcAccessibleServicesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var secure_data_exchange = new ServicePerimeters(\"secure-data-exchange\", ServicePerimetersArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .servicePerimeters( \n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build(),\n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"bigtable.googleapis.com\")\n .vpcAccessibleServices(ServicePerimetersServicePerimeterStatusVpcAccessibleServicesArgs.builder()\n .enableRestriction(true)\n .allowedServices(\"bigquery.googleapis.com\")\n .build())\n .build())\n .build())\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/secure_data_exchange\", name)))\n .title(\"secure_data_exchange\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n var test_access = new ServicePerimeter(\"test-access\", ServicePerimeterArgs.builder()\n .parent(String.format(\"accessPolicies/%s\", test_accessGoogleAccessContextManagerAccessPolicy.name()))\n .name(String.format(\"accessPolicies/%s/servicePerimeters/%s\", test_accessGoogleAccessContextManagerAccessPolicy.name()))\n .title(\"%s\")\n .perimeterType(\"PERIMETER_TYPE_REGULAR\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices( \n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\")\n .accessLevels(access_level.name())\n .vpcAccessibleServices(ServicePerimeterStatusVpcAccessibleServicesArgs.builder()\n .enableRestriction(true)\n .allowedServices( \n \"bigquery.googleapis.com\",\n \"storage.googleapis.com\")\n .build())\n .ingressPolicies(ServicePerimeterStatusIngressPolicyArgs.builder()\n .ingressFrom(ServicePerimeterStatusIngressPolicyIngressFromArgs.builder()\n .sources(ServicePerimeterStatusIngressPolicyIngressFromSourceArgs.builder()\n .accessLevel(test_accessGoogleAccessContextManagerAccessLevel.name())\n .build())\n .identityType(\"ANY_IDENTITY\")\n .build())\n .ingressTo(ServicePerimeterStatusIngressPolicyIngressToArgs.builder()\n .resources(\"*\")\n .operations( \n ServicePerimeterStatusIngressPolicyIngressToOperationArgs.builder()\n .serviceName(\"bigquery.googleapis.com\")\n .methodSelectors( \n ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .method(\"BigQueryStorage.ReadRows\")\n .build(),\n ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .method(\"TableService.ListTables\")\n .build(),\n ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .permission(\"bigquery.jobs.get\")\n .build())\n .build(),\n ServicePerimeterStatusIngressPolicyIngressToOperationArgs.builder()\n .serviceName(\"storage.googleapis.com\")\n .methodSelectors(ServicePerimeterStatusIngressPolicyIngressToOperationMethodSelectorArgs.builder()\n .method(\"google.storage.objects.create\")\n .build())\n .build())\n .build())\n .build())\n .egressPolicies(ServicePerimeterStatusEgressPolicyArgs.builder()\n .egressFrom(ServicePerimeterStatusEgressPolicyEgressFromArgs.builder()\n .identityType(\"ANY_USER_ACCOUNT\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secure-data-exchange:\n type: gcp:accesscontextmanager:ServicePerimeters\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n servicePerimeters:\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title: \"\"\n status:\n restrictedServices:\n - storage.googleapis.com\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title: \"\"\n status:\n restrictedServices:\n - bigtable.googleapis.com\n vpcAccessibleServices:\n enableRestriction: true\n allowedServices:\n - bigquery.googleapis.com\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/secure_data_exchange\n title: secure_data_exchange\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: false\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n test-access:\n type: gcp:accesscontextmanager:ServicePerimeter\n properties:\n parent: accessPolicies/${[\"test-accessGoogleAccessContextManagerAccessPolicy\"].name}\n name: accessPolicies/${[\"test-accessGoogleAccessContextManagerAccessPolicy\"].name}/servicePerimeters/%s\n title: '%s'\n perimeterType: PERIMETER_TYPE_REGULAR\n status:\n restrictedServices:\n - bigquery.googleapis.com\n - storage.googleapis.com\n accessLevels:\n - ${[\"access-level\"].name}\n vpcAccessibleServices:\n enableRestriction: true\n allowedServices:\n - bigquery.googleapis.com\n - storage.googleapis.com\n ingressPolicies:\n - ingressFrom:\n sources:\n - accessLevel: ${[\"test-accessGoogleAccessContextManagerAccessLevel\"].name}\n identityType: ANY_IDENTITY\n ingressTo:\n resources:\n - '*'\n operations:\n - serviceName: bigquery.googleapis.com\n methodSelectors:\n - method: BigQueryStorage.ReadRows\n - method: TableService.ListTables\n - permission: bigquery.jobs.get\n - serviceName: storage.googleapis.com\n methodSelectors:\n - method: google.storage.objects.create\n egressPolicies:\n - egressFrom:\n identityType: ANY_USER_ACCOUNT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Access Context Manager Service Perimeter Dry-Run\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_bigquery_dryrun_storage`,\n title: \"restrict_bigquery_dryrun_storage\",\n status: {\n restrictedServices: [\"bigquery.googleapis.com\"],\n },\n spec: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n useExplicitDryRunSpec: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_bigquery_dryrun_storage\"),\n title=\"restrict_bigquery_dryrun_storage\",\n status={\n \"restricted_services\": [\"bigquery.googleapis.com\"],\n },\n spec={\n \"restricted_services\": [\"storage.googleapis.com\"],\n },\n use_explicit_dry_run_spec=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_bigquery_dryrun_storage\"),\n Title = \"restrict_bigquery_dryrun_storage\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigquery.googleapis.com\",\n },\n },\n Spec = new Gcp.AccessContextManager.Inputs.ServicePerimeterSpecArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n UseExplicitDryRunSpec = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccess_policy, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_bigquery_dryrun_storage\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_bigquery_dryrun_storage\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"bigquery.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSpec: \u0026accesscontextmanager.ServicePerimeterSpecArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUseExplicitDryRunSpec: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter = new ServicePerimeter(\"service-perimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_bigquery_dryrun_storage\", name)))\n .title(\"restrict_bigquery_dryrun_storage\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices(\"bigquery.googleapis.com\")\n .build())\n .spec(ServicePerimeterSpecArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .useExplicitDryRunSpec(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_bigquery_dryrun_storage\n title: restrict_bigquery_dryrun_storage\n status:\n restrictedServices:\n - bigquery.googleapis.com\n spec:\n restrictedServices:\n - storage.googleapis.com\n useExplicitDryRunSpec: true\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeter can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ServicePerimeter can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeter:ServicePerimeter default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -133094,7 +133094,7 @@ } }, "gcp:accesscontextmanager/servicePerimeterDryRunResource:ServicePerimeterDryRunResource": { - "description": "Allows configuring a single GCP resource that should be inside of the `spec` block of a dry run service perimeter.\nThis resource is intended to be used in cases where it is not possible to compile a full list\nof projects to include in a `gcp.accesscontextmanager.ServicePerimeter` resource,\nto enable them to be added separately.\nIf your perimeter is NOT in dry-run mode use `gcp.accesscontextmanager.ServicePerimeterResource` instead.\n\n\u003e **Note:** If this resource is used alongside a `gcp.accesscontextmanager.ServicePerimeter` resource,\nthe service perimeter resource must have a `lifecycle` block with `ignore_changes = [spec[0].resources]` so\nthey don't fight over which resources should be in the policy.\n\n\nTo get more information about ServicePerimeterDryRunResource, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Service Perimeter Dry Run Resource Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter_dry_run_resourceServicePerimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-dry-run-resource\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_all`,\n title: \"restrict_all\",\n spec: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n useExplicitDryRunSpec: true,\n});\nconst service_perimeter_dry_run_resource = new gcp.accesscontextmanager.ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\", {\n perimeterName: service_perimeter_dry_run_resourceServicePerimeter.name,\n resource: \"projects/987654321\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter_dry_run_resource_service_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-dry-run-resource\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n title=\"restrict_all\",\n spec={\n \"restricted_services\": [\"storage.googleapis.com\"],\n },\n use_explicit_dry_run_spec=True)\nservice_perimeter_dry_run_resource = gcp.accesscontextmanager.ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\",\n perimeter_name=service_perimeter_dry_run_resource_service_perimeter.name,\n resource=\"projects/987654321\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter_dry_run_resourceServicePerimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter-dry-run-resource\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n Title = \"restrict_all\",\n Spec = new Gcp.AccessContextManager.Inputs.ServicePerimeterSpecArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n UseExplicitDryRunSpec = true,\n });\n\n var service_perimeter_dry_run_resource = new Gcp.AccessContextManager.ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\", new()\n {\n PerimeterName = service_perimeter_dry_run_resourceServicePerimeter.Name,\n Resource = \"projects/987654321\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter-dry-run-resource\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_all\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_all\"),\n\t\t\tSpec: \u0026accesscontextmanager.ServicePerimeterSpecArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUseExplicitDryRunSpec: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeterDryRunResource(ctx, \"service-perimeter-dry-run-resource\", \u0026accesscontextmanager.ServicePerimeterDryRunResourceArgs{\n\t\t\tPerimeterName: service_perimeter_dry_run_resourceServicePerimeter.Name,\n\t\t\tResource: pulumi.String(\"projects/987654321\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterSpecArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterDryRunResource;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterDryRunResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter_dry_run_resourceServicePerimeter = new ServicePerimeter(\"service-perimeter-dry-run-resourceServicePerimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_all\", name)))\n .title(\"restrict_all\")\n .spec(ServicePerimeterSpecArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .useExplicitDryRunSpec(true)\n .build());\n\n var service_perimeter_dry_run_resource = new ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\", ServicePerimeterDryRunResourceArgs.builder()\n .perimeterName(service_perimeter_dry_run_resourceServicePerimeter.name())\n .resource(\"projects/987654321\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter-dry-run-resource:\n type: gcp:accesscontextmanager:ServicePerimeterDryRunResource\n properties:\n perimeterName: ${[\"service-perimeter-dry-run-resourceServicePerimeter\"].name}\n resource: projects/987654321\n service-perimeter-dry-run-resourceServicePerimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n name: service-perimeter-dry-run-resource\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_all\n title: restrict_all\n spec:\n restrictedServices:\n - storage.googleapis.com\n useExplicitDryRunSpec: true\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeterDryRunResource can be imported using any of these accepted formats:\n\n* `{{perimeter_name}}/{{resource}}`\n\nWhen using the `pulumi import` command, ServicePerimeterDryRunResource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeterDryRunResource:ServicePerimeterDryRunResource default {{perimeter_name}}/{{resource}}\n```\n\n", + "description": "Allows configuring a single GCP resource that should be inside of the `spec` block of a dry run service perimeter.\nThis resource is intended to be used in cases where it is not possible to compile a full list\nof projects to include in a `gcp.accesscontextmanager.ServicePerimeter` resource,\nto enable them to be added separately.\nIf your perimeter is NOT in dry-run mode use `gcp.accesscontextmanager.ServicePerimeterResource` instead.\n\n\u003e **Note:** If this resource is used alongside a `gcp.accesscontextmanager.ServicePerimeter` resource,\nthe service perimeter resource must have a `lifecycle` block with `ignore_changes = [spec[0].resources]` so\nthey don't fight over which resources should be in the policy.\n\n\nTo get more information about ServicePerimeterDryRunResource, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Service Perimeter Dry Run Resource Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter_dry_run_resourceServicePerimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-dry-run-resource\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_all`,\n title: \"restrict_all\",\n spec: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n useExplicitDryRunSpec: true,\n});\nconst service_perimeter_dry_run_resource = new gcp.accesscontextmanager.ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\", {\n perimeterName: service_perimeter_dry_run_resourceServicePerimeter.name,\n resource: \"projects/987654321\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter_dry_run_resource_service_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-dry-run-resource\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n title=\"restrict_all\",\n spec={\n \"restricted_services\": [\"storage.googleapis.com\"],\n },\n use_explicit_dry_run_spec=True)\nservice_perimeter_dry_run_resource = gcp.accesscontextmanager.ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\",\n perimeter_name=service_perimeter_dry_run_resource_service_perimeter.name,\n resource=\"projects/987654321\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter_dry_run_resourceServicePerimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter-dry-run-resource\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n Title = \"restrict_all\",\n Spec = new Gcp.AccessContextManager.Inputs.ServicePerimeterSpecArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n UseExplicitDryRunSpec = true,\n });\n\n var service_perimeter_dry_run_resource = new Gcp.AccessContextManager.ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\", new()\n {\n PerimeterName = service_perimeter_dry_run_resourceServicePerimeter.Name,\n Resource = \"projects/987654321\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccess_policy, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservice_perimeter_dry_run_resourceServicePerimeter, err := accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter-dry-run-resource\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_all\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_all\"),\n\t\t\tSpec: \u0026accesscontextmanager.ServicePerimeterSpecArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUseExplicitDryRunSpec: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeterDryRunResource(ctx, \"service-perimeter-dry-run-resource\", \u0026accesscontextmanager.ServicePerimeterDryRunResourceArgs{\n\t\t\tPerimeterName: service_perimeter_dry_run_resourceServicePerimeter.Name,\n\t\t\tResource: pulumi.String(\"projects/987654321\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterSpecArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterDryRunResource;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterDryRunResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter_dry_run_resourceServicePerimeter = new ServicePerimeter(\"service-perimeter-dry-run-resourceServicePerimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_all\", name)))\n .title(\"restrict_all\")\n .spec(ServicePerimeterSpecArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .useExplicitDryRunSpec(true)\n .build());\n\n var service_perimeter_dry_run_resource = new ServicePerimeterDryRunResource(\"service-perimeter-dry-run-resource\", ServicePerimeterDryRunResourceArgs.builder()\n .perimeterName(service_perimeter_dry_run_resourceServicePerimeter.name())\n .resource(\"projects/987654321\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter-dry-run-resource:\n type: gcp:accesscontextmanager:ServicePerimeterDryRunResource\n properties:\n perimeterName: ${[\"service-perimeter-dry-run-resourceServicePerimeter\"].name}\n resource: projects/987654321\n service-perimeter-dry-run-resourceServicePerimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n name: service-perimeter-dry-run-resource\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_all\n title: restrict_all\n spec:\n restrictedServices:\n - storage.googleapis.com\n useExplicitDryRunSpec: true\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeterDryRunResource can be imported using any of these accepted formats:\n\n* `{{perimeter_name}}/{{resource}}`\n\nWhen using the `pulumi import` command, ServicePerimeterDryRunResource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeterDryRunResource:ServicePerimeterDryRunResource default {{perimeter_name}}/{{resource}}\n```\n\n", "properties": { "accessPolicyId": { "type": "string", @@ -133292,7 +133292,7 @@ } }, "gcp:accesscontextmanager/servicePerimeterResource:ServicePerimeterResource": { - "description": "Allows configuring a single GCP resource that should be inside the `status` block of a service perimeter.\nThis resource is intended to be used in cases where it is not possible to compile a full list\nof projects to include in a `gcp.accesscontextmanager.ServicePerimeter` resource,\nto enable them to be added separately.\nIf your perimeter is in dry-run mode use `gcp.accesscontextmanager.ServicePerimeterDryRunResource` instead.\n\n\u003e **Note:** If this resource is used alongside a `gcp.accesscontextmanager.ServicePerimeter` resource,\nthe service perimeter resource must have a `lifecycle` block with `ignore_changes = [status[0].resources]` so\nthey don't fight over which resources should be in the policy.\n\n\nTo get more information about ServicePerimeterResource, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Service Perimeter Resource Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter_resourceServicePerimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-resource\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_all`,\n title: \"restrict_all\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n});\nconst service_perimeter_resource = new gcp.accesscontextmanager.ServicePerimeterResource(\"service-perimeter-resource\", {\n perimeterName: service_perimeter_resourceServicePerimeter.name,\n resource: \"projects/987654321\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter_resource_service_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-resource\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n title=\"restrict_all\",\n status={\n \"restricted_services\": [\"storage.googleapis.com\"],\n })\nservice_perimeter_resource = gcp.accesscontextmanager.ServicePerimeterResource(\"service-perimeter-resource\",\n perimeter_name=service_perimeter_resource_service_perimeter.name,\n resource=\"projects/987654321\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter_resourceServicePerimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter-resource\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n Title = \"restrict_all\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n });\n\n var service_perimeter_resource = new Gcp.AccessContextManager.ServicePerimeterResource(\"service-perimeter-resource\", new()\n {\n PerimeterName = service_perimeter_resourceServicePerimeter.Name,\n Resource = \"projects/987654321\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter-resource\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_all\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_all\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeterResource(ctx, \"service-perimeter-resource\", \u0026accesscontextmanager.ServicePerimeterResourceArgs{\n\t\t\tPerimeterName: service_perimeter_resourceServicePerimeter.Name,\n\t\t\tResource: pulumi.String(\"projects/987654321\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterResource;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter_resourceServicePerimeter = new ServicePerimeter(\"service-perimeter-resourceServicePerimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_all\", name)))\n .title(\"restrict_all\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build());\n\n var service_perimeter_resource = new ServicePerimeterResource(\"service-perimeter-resource\", ServicePerimeterResourceArgs.builder()\n .perimeterName(service_perimeter_resourceServicePerimeter.name())\n .resource(\"projects/987654321\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter-resource:\n type: gcp:accesscontextmanager:ServicePerimeterResource\n properties:\n perimeterName: ${[\"service-perimeter-resourceServicePerimeter\"].name}\n resource: projects/987654321\n service-perimeter-resourceServicePerimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n name: service-perimeter-resource\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_all\n title: restrict_all\n status:\n restrictedServices:\n - storage.googleapis.com\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeterResource can be imported using any of these accepted formats:\n\n* `{{perimeter_name}}/{{resource}}`\n\nWhen using the `pulumi import` command, ServicePerimeterResource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeterResource:ServicePerimeterResource default {{perimeter_name}}/{{resource}}\n```\n\n", + "description": "Allows configuring a single GCP resource that should be inside the `status` block of a service perimeter.\nThis resource is intended to be used in cases where it is not possible to compile a full list\nof projects to include in a `gcp.accesscontextmanager.ServicePerimeter` resource,\nto enable them to be added separately.\nIf your perimeter is in dry-run mode use `gcp.accesscontextmanager.ServicePerimeterDryRunResource` instead.\n\n\u003e **Note:** If this resource is used alongside a `gcp.accesscontextmanager.ServicePerimeter` resource,\nthe service perimeter resource must have a `lifecycle` block with `ignore_changes = [status[0].resources]` so\nthey don't fight over which resources should be in the policy.\n\n\nTo get more information about ServicePerimeterResource, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n\u003e **Warning:** If you are using User ADCs (Application Default Credentials) with this resource,\nyou must specify a `billing_project` and set `user_project_override` to true\nin the provider configuration. Otherwise the ACM API will return a 403 error.\nYour account must have the `serviceusage.services.use` permission on the\n`billing_project` you defined.\n\n## Example Usage\n\n### Access Context Manager Service Perimeter Resource Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter_resourceServicePerimeter = new gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-resource\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/restrict_all`,\n title: \"restrict_all\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n});\nconst service_perimeter_resource = new gcp.accesscontextmanager.ServicePerimeterResource(\"service-perimeter-resource\", {\n perimeterName: service_perimeter_resourceServicePerimeter.name,\n resource: \"projects/987654321\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter_resource_service_perimeter = gcp.accesscontextmanager.ServicePerimeter(\"service-perimeter-resource\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n title=\"restrict_all\",\n status={\n \"restricted_services\": [\"storage.googleapis.com\"],\n })\nservice_perimeter_resource = gcp.accesscontextmanager.ServicePerimeterResource(\"service-perimeter-resource\",\n perimeter_name=service_perimeter_resource_service_perimeter.name,\n resource=\"projects/987654321\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter_resourceServicePerimeter = new Gcp.AccessContextManager.ServicePerimeter(\"service-perimeter-resource\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/restrict_all\"),\n Title = \"restrict_all\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n });\n\n var service_perimeter_resource = new Gcp.AccessContextManager.ServicePerimeterResource(\"service-perimeter-resource\", new()\n {\n PerimeterName = service_perimeter_resourceServicePerimeter.Name,\n Resource = \"projects/987654321\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccess_policy, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservice_perimeter_resourceServicePerimeter, err := accesscontextmanager.NewServicePerimeter(ctx, \"service-perimeter-resource\", \u0026accesscontextmanager.ServicePerimeterArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/restrict_all\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"restrict_all\"),\n\t\t\tStatus: \u0026accesscontextmanager.ServicePerimeterStatusArgs{\n\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeterResource(ctx, \"service-perimeter-resource\", \u0026accesscontextmanager.ServicePerimeterResourceArgs{\n\t\t\tPerimeterName: service_perimeter_resourceServicePerimeter.Name,\n\t\t\tResource: pulumi.String(\"projects/987654321\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeter;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterResource;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeterResourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter_resourceServicePerimeter = new ServicePerimeter(\"service-perimeter-resourceServicePerimeter\", ServicePerimeterArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/restrict_all\", name)))\n .title(\"restrict_all\")\n .status(ServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build());\n\n var service_perimeter_resource = new ServicePerimeterResource(\"service-perimeter-resource\", ServicePerimeterResourceArgs.builder()\n .perimeterName(service_perimeter_resourceServicePerimeter.name())\n .resource(\"projects/987654321\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter-resource:\n type: gcp:accesscontextmanager:ServicePerimeterResource\n properties:\n perimeterName: ${[\"service-perimeter-resourceServicePerimeter\"].name}\n resource: projects/987654321\n service-perimeter-resourceServicePerimeter:\n type: gcp:accesscontextmanager:ServicePerimeter\n name: service-perimeter-resource\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/restrict_all\n title: restrict_all\n status:\n restrictedServices:\n - storage.googleapis.com\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeterResource can be imported using any of these accepted formats:\n\n* `{{perimeter_name}}/{{resource}}`\n\nWhen using the `pulumi import` command, ServicePerimeterResource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeterResource:ServicePerimeterResource default {{perimeter_name}}/{{resource}}\n```\n\n", "properties": { "accessPolicyId": { "type": "string", @@ -133359,7 +133359,7 @@ } }, "gcp:accesscontextmanager/servicePerimeters:ServicePerimeters": { - "description": "Replace all existing Service Perimeters in an Access Policy with the Service Perimeters provided. This is done atomically.\nThis is a bulk edit of all Service Perimeters and may override existing Service Perimeters created by `gcp.accesscontextmanager.ServicePerimeter`,\nthus causing a permadiff if used alongside `gcp.accesscontextmanager.ServicePerimeter` on the same parent.\n\n\nTo get more information about ServicePerimeters, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Guide to Ingress and Egress Rules](https://cloud.google.com/vpc-service-controls/docs/ingress-egress-rules)\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n## Example Usage\n\n### Access Context Manager Service Perimeters Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter = new gcp.accesscontextmanager.ServicePerimeters(\"service-perimeter\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n servicePerimeters: [\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n },\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"bigtable.googleapis.com\"],\n },\n },\n ],\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: false,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter = gcp.accesscontextmanager.ServicePerimeters(\"service-perimeter\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n service_perimeters=[\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restricted_services\": [\"storage.googleapis.com\"],\n },\n },\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restricted_services\": [\"bigtable.googleapis.com\"],\n },\n },\n ])\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": False,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter = new Gcp.AccessContextManager.ServicePerimeters(\"service-perimeter\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n ServicePerimeterDetails = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigtable.googleapis.com\",\n },\n },\n },\n },\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeters(ctx, \"service-perimeter\", \u0026accesscontextmanager.ServicePerimetersArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tServicePerimeters: accesscontextmanager.ServicePerimetersServicePerimeterArray{\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"bigtable.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeters;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimetersArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter = new ServicePerimeters(\"service-perimeter\", ServicePerimetersArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .servicePerimeters( \n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build(),\n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"bigtable.googleapis.com\")\n .build())\n .build())\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter:\n type: gcp:accesscontextmanager:ServicePerimeters\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n servicePerimeters:\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title: \"\"\n status:\n restrictedServices:\n - storage.googleapis.com\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title: \"\"\n status:\n restrictedServices:\n - bigtable.googleapis.com\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: false\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeters can be imported using any of these accepted formats:\n\n* `{{parent}}/servicePerimeters`\n\n* `{{parent}}`\n\nWhen using the `pulumi import` command, ServicePerimeters can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeters:ServicePerimeters default {{parent}}/servicePerimeters\n```\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeters:ServicePerimeters default {{parent}}\n```\n\n", + "description": "Replace all existing Service Perimeters in an Access Policy with the Service Perimeters provided. This is done atomically.\nThis is a bulk edit of all Service Perimeters and may override existing Service Perimeters created by `gcp.accesscontextmanager.ServicePerimeter`,\nthus causing a permadiff if used alongside `gcp.accesscontextmanager.ServicePerimeter` on the same parent.\n\n\nTo get more information about ServicePerimeters, see:\n\n* [API documentation](https://cloud.google.com/access-context-manager/docs/reference/rest/v1/accessPolicies.servicePerimeters)\n* How-to Guides\n * [Guide to Ingress and Egress Rules](https://cloud.google.com/vpc-service-controls/docs/ingress-egress-rules)\n * [Service Perimeter Quickstart](https://cloud.google.com/vpc-service-controls/docs/quickstart)\n\n## Example Usage\n\n### Access Context Manager Service Perimeters Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: \"organizations/123456789\",\n title: \"my policy\",\n});\nconst service_perimeter = new gcp.accesscontextmanager.ServicePerimeters(\"service-perimeter\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n servicePerimeters: [\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"storage.googleapis.com\"],\n },\n },\n {\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/servicePerimeters/`,\n title: \"\",\n status: {\n restrictedServices: [\"bigtable.googleapis.com\"],\n },\n },\n ],\n});\nconst access_level = new gcp.accesscontextmanager.AccessLevel(\"access-level\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: false,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=\"organizations/123456789\",\n title=\"my policy\")\nservice_perimeter = gcp.accesscontextmanager.ServicePerimeters(\"service-perimeter\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n service_perimeters=[\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restricted_services\": [\"storage.googleapis.com\"],\n },\n },\n {\n \"name\": access_policy.name.apply(lambda name: f\"accessPolicies/{name}/servicePerimeters/\"),\n \"title\": \"\",\n \"status\": {\n \"restricted_services\": [\"bigtable.googleapis.com\"],\n },\n },\n ])\naccess_level = gcp.accesscontextmanager.AccessLevel(\"access-level\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": False,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = \"organizations/123456789\",\n Title = \"my policy\",\n });\n\n var service_perimeter = new Gcp.AccessContextManager.ServicePerimeters(\"service-perimeter\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n ServicePerimeterDetails = new[]\n {\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"storage.googleapis.com\",\n },\n },\n },\n new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterArgs\n {\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/servicePerimeters/\"),\n Title = \"\",\n Status = new Gcp.AccessContextManager.Inputs.ServicePerimetersServicePerimeterStatusArgs\n {\n RestrictedServices = new[]\n {\n \"bigtable.googleapis.com\",\n },\n },\n },\n },\n });\n\n var access_level = new Gcp.AccessContextManager.AccessLevel(\"access-level\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = false,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\taccess_policy, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewServicePerimeters(ctx, \"service-perimeter\", \u0026accesscontextmanager.ServicePerimetersArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tServicePerimeters: accesscontextmanager.ServicePerimetersServicePerimeterArray{\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"storage.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026accesscontextmanager.ServicePerimetersServicePerimeterArgs{\n\t\t\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/servicePerimeters/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\tTitle: pulumi.String(\"\"),\n\t\t\t\t\tStatus: \u0026accesscontextmanager.ServicePerimetersServicePerimeterStatusArgs{\n\t\t\t\t\t\tRestrictedServices: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"bigtable.googleapis.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"access-level\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(false),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimeters;\nimport com.pulumi.gcp.accesscontextmanager.ServicePerimetersArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.ServicePerimetersServicePerimeterStatusArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(\"organizations/123456789\")\n .title(\"my policy\")\n .build());\n\n var service_perimeter = new ServicePerimeters(\"service-perimeter\", ServicePerimetersArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .servicePerimeters( \n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"storage.googleapis.com\")\n .build())\n .build(),\n ServicePerimetersServicePerimeterArgs.builder()\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/servicePerimeters/\", name)))\n .title(\"\")\n .status(ServicePerimetersServicePerimeterStatusArgs.builder()\n .restrictedServices(\"bigtable.googleapis.com\")\n .build())\n .build())\n .build());\n\n var access_level = new AccessLevel(\"access-level\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(false)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n service-perimeter:\n type: gcp:accesscontextmanager:ServicePerimeters\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n servicePerimeters:\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title: \"\"\n status:\n restrictedServices:\n - storage.googleapis.com\n - name: accessPolicies/${[\"access-policy\"].name}/servicePerimeters/\n title: \"\"\n status:\n restrictedServices:\n - bigtable.googleapis.com\n access-level:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: false\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/123456789\n title: my policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServicePerimeters can be imported using any of these accepted formats:\n\n* `{{parent}}/servicePerimeters`\n\n* `{{parent}}`\n\nWhen using the `pulumi import` command, ServicePerimeters can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeters:ServicePerimeters default {{parent}}/servicePerimeters\n```\n\n```sh\n$ pulumi import gcp:accesscontextmanager/servicePerimeters:ServicePerimeters default {{parent}}\n```\n\n", "properties": { "parent": { "type": "string", @@ -134297,7 +134297,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, \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", + "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_default, 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_default, 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", @@ -134774,7 +134774,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, \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", + "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_default, 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", @@ -135160,7 +135160,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, \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", + "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_default, 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_default, 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", @@ -139531,7 +139531,7 @@ } }, "gcp:apigee/syncAuthorization:SyncAuthorization": { - "description": "Authorize the Synchronizer to download environment data from the control plane.\n\n\nTo get more information about SyncAuthorization, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations#getsyncauthorization)\n* How-to Guides\n * [Enable Synchronizer access](https://cloud.google.com/apigee/docs/hybrid/v1.8/synchronizer-access#enable-synchronizer-access)\n\n## Example Usage\n\n### Apigee Sync Authorization Basic Test\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst apigee = new gcp.projects.Service(\"apigee\", {\n project: project.projectId,\n service: \"apigee.googleapis.com\",\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: project.projectId,\n runtimeType: \"HYBRID\",\n}, {\n dependsOn: [apigee],\n});\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"my-account\",\n displayName: \"Service Account\",\n});\nconst synchronizer_iam = new gcp.projects.IAMMember(\"synchronizer-iam\", {\n project: project.projectId,\n role: \"roles/apigee.synchronizerManager\",\n member: pulumi.interpolate`serviceAccount:${serviceAccount.email}`,\n});\nconst apigeeSyncAuthorization = new gcp.apigee.SyncAuthorization(\"apigee_sync_authorization\", {\n name: apigeeOrg.name,\n identities: [pulumi.interpolate`serviceAccount:${serviceAccount.email}`],\n}, {\n dependsOn: [synchronizer_iam],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.Project(\"project\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\napigee = gcp.projects.Service(\"apigee\",\n project=project.project_id,\n service=\"apigee.googleapis.com\")\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=project.project_id,\n runtime_type=\"HYBRID\",\n opts = pulumi.ResourceOptions(depends_on=[apigee]))\nservice_account = gcp.serviceaccount.Account(\"service_account\",\n account_id=\"my-account\",\n display_name=\"Service Account\")\nsynchronizer_iam = gcp.projects.IAMMember(\"synchronizer-iam\",\n project=project.project_id,\n role=\"roles/apigee.synchronizerManager\",\n member=service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\napigee_sync_authorization = gcp.apigee.SyncAuthorization(\"apigee_sync_authorization\",\n name=apigee_org.name,\n identities=[service_account.email.apply(lambda email: f\"serviceAccount:{email}\")],\n opts = pulumi.ResourceOptions(depends_on=[synchronizer_iam]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var apigee = new Gcp.Projects.Service(\"apigee\", new()\n {\n Project = project.ProjectId,\n ServiceName = \"apigee.googleapis.com\",\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = project.ProjectId,\n RuntimeType = \"HYBRID\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigee,\n },\n });\n\n var serviceAccount = new Gcp.ServiceAccount.Account(\"service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Service Account\",\n });\n\n var synchronizer_iam = new Gcp.Projects.IAMMember(\"synchronizer-iam\", new()\n {\n Project = project.ProjectId,\n Role = \"roles/apigee.synchronizerManager\",\n Member = serviceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var apigeeSyncAuthorization = new Gcp.Apigee.SyncAuthorization(\"apigee_sync_authorization\", new()\n {\n Name = apigeeOrg.Name,\n Identities = new[]\n {\n serviceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n synchronizer_iam,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\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-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.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigee, err := projects.NewService(ctx, \"apigee\", \u0026projects.ServiceArgs{\n\t\t\tProject: project.ProjectId,\n\t\t\tService: pulumi.String(\"apigee.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: project.ProjectId,\n\t\t\tRuntimeType: pulumi.String(\"HYBRID\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigee,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceAccount, err := serviceaccount.NewAccount(ctx, \"service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"synchronizer-iam\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: project.ProjectId,\n\t\t\tRole: pulumi.String(\"roles/apigee.synchronizerManager\"),\n\t\t\tMember: serviceAccount.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 = apigee.NewSyncAuthorization(ctx, \"apigee_sync_authorization\", \u0026apigee.SyncAuthorizationArgs{\n\t\t\tName: apigeeOrg.Name,\n\t\t\tIdentities: pulumi.StringArray{\n\t\t\t\tserviceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsynchronizer_iam,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\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.apigee.SyncAuthorization;\nimport com.pulumi.gcp.apigee.SyncAuthorizationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var apigee = new Service(\"apigee\", ServiceArgs.builder()\n .project(project.projectId())\n .service(\"apigee.googleapis.com\")\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(project.projectId())\n .runtimeType(\"HYBRID\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigee)\n .build());\n\n var serviceAccount = new Account(\"serviceAccount\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Service Account\")\n .build());\n\n var synchronizer_iam = new IAMMember(\"synchronizer-iam\", IAMMemberArgs.builder()\n .project(project.projectId())\n .role(\"roles/apigee.synchronizerManager\")\n .member(serviceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var apigeeSyncAuthorization = new SyncAuthorization(\"apigeeSyncAuthorization\", SyncAuthorizationArgs.builder()\n .name(apigeeOrg.name())\n .identities(serviceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(synchronizer_iam)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n apigee:\n type: gcp:projects:Service\n properties:\n project: ${project.projectId}\n service: apigee.googleapis.com\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${project.projectId}\n runtimeType: HYBRID\n options:\n dependsOn:\n - ${apigee}\n serviceAccount:\n type: gcp:serviceaccount:Account\n name: service_account\n properties:\n accountId: my-account\n displayName: Service Account\n synchronizer-iam:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/apigee.synchronizerManager\n member: serviceAccount:${serviceAccount.email}\n apigeeSyncAuthorization:\n type: gcp:apigee:SyncAuthorization\n name: apigee_sync_authorization\n properties:\n name: ${apigeeOrg.name}\n identities:\n - serviceAccount:${serviceAccount.email}\n options:\n dependsOn:\n - ${[\"synchronizer-iam\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSyncAuthorization can be imported using any of these accepted formats:\n\n* `organizations/{{name}}/syncAuthorization`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, SyncAuthorization can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/syncAuthorization:SyncAuthorization default organizations/{{name}}/syncAuthorization\n```\n\n```sh\n$ pulumi import gcp:apigee/syncAuthorization:SyncAuthorization default {{name}}\n```\n\n", + "description": "Authorize the Synchronizer to download environment data from the control plane.\n\n\nTo get more information about SyncAuthorization, see:\n\n* [API documentation](https://cloud.google.com/apigee/docs/reference/apis/apigee/rest/v1/organizations#getsyncauthorization)\n* How-to Guides\n * [Enable Synchronizer access](https://cloud.google.com/apigee/docs/hybrid/v1.8/synchronizer-access#enable-synchronizer-access)\n\n## Example Usage\n\n### Apigee Sync Authorization Basic Test\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst apigee = new gcp.projects.Service(\"apigee\", {\n project: project.projectId,\n service: \"apigee.googleapis.com\",\n});\nconst apigeeOrg = new gcp.apigee.Organization(\"apigee_org\", {\n analyticsRegion: \"us-central1\",\n projectId: project.projectId,\n runtimeType: \"HYBRID\",\n}, {\n dependsOn: [apigee],\n});\nconst serviceAccount = new gcp.serviceaccount.Account(\"service_account\", {\n accountId: \"my-account\",\n displayName: \"Service Account\",\n});\nconst synchronizer_iam = new gcp.projects.IAMMember(\"synchronizer-iam\", {\n project: project.projectId,\n role: \"roles/apigee.synchronizerManager\",\n member: pulumi.interpolate`serviceAccount:${serviceAccount.email}`,\n});\nconst apigeeSyncAuthorization = new gcp.apigee.SyncAuthorization(\"apigee_sync_authorization\", {\n name: apigeeOrg.name,\n identities: [pulumi.interpolate`serviceAccount:${serviceAccount.email}`],\n}, {\n dependsOn: [synchronizer_iam],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.Project(\"project\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\napigee = gcp.projects.Service(\"apigee\",\n project=project.project_id,\n service=\"apigee.googleapis.com\")\napigee_org = gcp.apigee.Organization(\"apigee_org\",\n analytics_region=\"us-central1\",\n project_id=project.project_id,\n runtime_type=\"HYBRID\",\n opts = pulumi.ResourceOptions(depends_on=[apigee]))\nservice_account = gcp.serviceaccount.Account(\"service_account\",\n account_id=\"my-account\",\n display_name=\"Service Account\")\nsynchronizer_iam = gcp.projects.IAMMember(\"synchronizer-iam\",\n project=project.project_id,\n role=\"roles/apigee.synchronizerManager\",\n member=service_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\napigee_sync_authorization = gcp.apigee.SyncAuthorization(\"apigee_sync_authorization\",\n name=apigee_org.name,\n identities=[service_account.email.apply(lambda email: f\"serviceAccount:{email}\")],\n opts = pulumi.ResourceOptions(depends_on=[synchronizer_iam]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var apigee = new Gcp.Projects.Service(\"apigee\", new()\n {\n Project = project.ProjectId,\n ServiceName = \"apigee.googleapis.com\",\n });\n\n var apigeeOrg = new Gcp.Apigee.Organization(\"apigee_org\", new()\n {\n AnalyticsRegion = \"us-central1\",\n ProjectId = project.ProjectId,\n RuntimeType = \"HYBRID\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n apigee,\n },\n });\n\n var serviceAccount = new Gcp.ServiceAccount.Account(\"service_account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Service Account\",\n });\n\n var synchronizer_iam = new Gcp.Projects.IAMMember(\"synchronizer-iam\", new()\n {\n Project = project.ProjectId,\n Role = \"roles/apigee.synchronizerManager\",\n Member = serviceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var apigeeSyncAuthorization = new Gcp.Apigee.SyncAuthorization(\"apigee_sync_authorization\", new()\n {\n Name = apigeeOrg.Name,\n Identities = new[]\n {\n serviceAccount.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n synchronizer_iam,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\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-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.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigee, err := projects.NewService(ctx, \"apigee\", \u0026projects.ServiceArgs{\n\t\t\tProject: project.ProjectId,\n\t\t\tService: pulumi.String(\"apigee.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tapigeeOrg, err := apigee.NewOrganization(ctx, \"apigee_org\", \u0026apigee.OrganizationArgs{\n\t\t\tAnalyticsRegion: pulumi.String(\"us-central1\"),\n\t\t\tProjectId: project.ProjectId,\n\t\t\tRuntimeType: pulumi.String(\"HYBRID\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tapigee,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceAccount, err := serviceaccount.NewAccount(ctx, \"service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsynchronizer_iam, err := projects.NewIAMMember(ctx, \"synchronizer-iam\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: project.ProjectId,\n\t\t\tRole: pulumi.String(\"roles/apigee.synchronizerManager\"),\n\t\t\tMember: serviceAccount.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 = apigee.NewSyncAuthorization(ctx, \"apigee_sync_authorization\", \u0026apigee.SyncAuthorizationArgs{\n\t\t\tName: apigeeOrg.Name,\n\t\t\tIdentities: pulumi.StringArray{\n\t\t\t\tserviceAccount.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsynchronizer_iam,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.apigee.Organization;\nimport com.pulumi.gcp.apigee.OrganizationArgs;\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.apigee.SyncAuthorization;\nimport com.pulumi.gcp.apigee.SyncAuthorizationArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var apigee = new Service(\"apigee\", ServiceArgs.builder()\n .project(project.projectId())\n .service(\"apigee.googleapis.com\")\n .build());\n\n var apigeeOrg = new Organization(\"apigeeOrg\", OrganizationArgs.builder()\n .analyticsRegion(\"us-central1\")\n .projectId(project.projectId())\n .runtimeType(\"HYBRID\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(apigee)\n .build());\n\n var serviceAccount = new Account(\"serviceAccount\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Service Account\")\n .build());\n\n var synchronizer_iam = new IAMMember(\"synchronizer-iam\", IAMMemberArgs.builder()\n .project(project.projectId())\n .role(\"roles/apigee.synchronizerManager\")\n .member(serviceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var apigeeSyncAuthorization = new SyncAuthorization(\"apigeeSyncAuthorization\", SyncAuthorizationArgs.builder()\n .name(apigeeOrg.name())\n .identities(serviceAccount.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(synchronizer_iam)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n apigee:\n type: gcp:projects:Service\n properties:\n project: ${project.projectId}\n service: apigee.googleapis.com\n apigeeOrg:\n type: gcp:apigee:Organization\n name: apigee_org\n properties:\n analyticsRegion: us-central1\n projectId: ${project.projectId}\n runtimeType: HYBRID\n options:\n dependsOn:\n - ${apigee}\n serviceAccount:\n type: gcp:serviceaccount:Account\n name: service_account\n properties:\n accountId: my-account\n displayName: Service Account\n synchronizer-iam:\n type: gcp:projects:IAMMember\n properties:\n project: ${project.projectId}\n role: roles/apigee.synchronizerManager\n member: serviceAccount:${serviceAccount.email}\n apigeeSyncAuthorization:\n type: gcp:apigee:SyncAuthorization\n name: apigee_sync_authorization\n properties:\n name: ${apigeeOrg.name}\n identities:\n - serviceAccount:${serviceAccount.email}\n options:\n dependsOn:\n - ${[\"synchronizer-iam\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSyncAuthorization can be imported using any of these accepted formats:\n\n* `organizations/{{name}}/syncAuthorization`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, SyncAuthorization can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apigee/syncAuthorization:SyncAuthorization default organizations/{{name}}/syncAuthorization\n```\n\n```sh\n$ pulumi import gcp:apigee/syncAuthorization:SyncAuthorization default {{name}}\n```\n\n", "properties": { "etag": { "type": "string", @@ -141366,7 +141366,7 @@ } }, "gcp:apphub/service:Service": { - "description": "Service is a network/api interface that exposes some functionality to clients for consumption over the network. Service typically has one or more Workloads behind it. It registers identified service to the Application.\n\n\n\n## Example Usage\n\n### Apphub Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst application = new gcp.apphub.Application(\"application\", {\n location: \"us-central1\",\n applicationId: \"example-application-1\",\n scope: {\n type: \"REGIONAL\",\n },\n});\nconst serviceProject = new gcp.organizations.Project(\"service_project\", {\n projectId: \"project-1\",\n name: \"Service Project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\n// Enable Compute API\nconst computeServiceProject = new gcp.projects.Service(\"compute_service_project\", {\n project: serviceProject.projectId,\n service: \"compute.googleapis.com\",\n});\nconst wait120s = new time.index.Sleep(\"wait_120s\", {createDuration: \"120s\"}, {\n dependsOn: [computeServiceProject],\n});\nconst serviceProjectAttachment = new gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", {serviceProjectAttachmentId: serviceProject.projectId}, {\n dependsOn: [wait120s],\n});\n// VPC network\nconst ilbNetwork = new gcp.compute.Network(\"ilb_network\", {\n name: \"l7-ilb-network\",\n project: serviceProject.projectId,\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [wait120s],\n});\n// backend subnet\nconst ilbSubnet = new gcp.compute.Subnetwork(\"ilb_subnet\", {\n name: \"l7-ilb-subnet\",\n project: serviceProject.projectId,\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: ilbNetwork.id,\n});\n// health check\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"l7-ilb-hc\",\n project: serviceProject.projectId,\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n}, {\n dependsOn: [wait120s],\n});\n// backend service\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"l7-ilb-backend-subnet\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n healthChecks: _default.id,\n});\n// forwarding rule\nconst forwardingRule = new gcp.compute.ForwardingRule(\"forwarding_rule\", {\n name: \"l7-ilb-forwarding-rule\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n ipVersion: \"IPV4\",\n loadBalancingScheme: \"INTERNAL\",\n allPorts: true,\n backendService: backend.id,\n network: ilbNetwork.id,\n subnetwork: ilbSubnet.id,\n});\n// discovered service block\nconst catalog-service = gcp.apphub.getDiscoveredServiceOutput({\n location: \"us-central1\",\n serviceUri: pulumi.interpolate`//compute.googleapis.com/${forwardingRule.id}`,\n});\nconst wait120sForResourceIngestion = new time.index.Sleep(\"wait_120s_for_resource_ingestion\", {createDuration: \"120s\"}, {\n dependsOn: [forwardingRule],\n});\nconst example = new gcp.apphub.Service(\"example\", {\n location: \"us-central1\",\n applicationId: application.applicationId,\n serviceId: forwardingRule.name,\n discoveredService: catalog_service.apply(catalog_service =\u003e catalog_service.name),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\napplication = gcp.apphub.Application(\"application\",\n location=\"us-central1\",\n application_id=\"example-application-1\",\n scope={\n \"type\": \"REGIONAL\",\n })\nservice_project = gcp.organizations.Project(\"service_project\",\n project_id=\"project-1\",\n name=\"Service Project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\n# Enable Compute API\ncompute_service_project = gcp.projects.Service(\"compute_service_project\",\n project=service_project.project_id,\n service=\"compute.googleapis.com\")\nwait120s = time.index.Sleep(\"wait_120s\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[compute_service_project]))\nservice_project_attachment = gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", service_project_attachment_id=service_project.project_id,\nopts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# VPC network\nilb_network = gcp.compute.Network(\"ilb_network\",\n name=\"l7-ilb-network\",\n project=service_project.project_id,\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend subnet\nilb_subnet = gcp.compute.Subnetwork(\"ilb_subnet\",\n name=\"l7-ilb-subnet\",\n project=service_project.project_id,\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=ilb_network.id)\n# health check\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"l7-ilb-hc\",\n project=service_project.project_id,\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend service\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"l7-ilb-backend-subnet\",\n project=service_project.project_id,\n region=\"us-central1\",\n health_checks=default.id)\n# forwarding rule\nforwarding_rule = gcp.compute.ForwardingRule(\"forwarding_rule\",\n name=\"l7-ilb-forwarding-rule\",\n project=service_project.project_id,\n region=\"us-central1\",\n ip_version=\"IPV4\",\n load_balancing_scheme=\"INTERNAL\",\n all_ports=True,\n backend_service=backend.id,\n network=ilb_network.id,\n subnetwork=ilb_subnet.id)\n# discovered service block\ncatalog_service = gcp.apphub.get_discovered_service_output(location=\"us-central1\",\n service_uri=forwarding_rule.id.apply(lambda id: f\"//compute.googleapis.com/{id}\"))\nwait120s_for_resource_ingestion = time.index.Sleep(\"wait_120s_for_resource_ingestion\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[forwarding_rule]))\nexample = gcp.apphub.Service(\"example\",\n location=\"us-central1\",\n application_id=application.application_id,\n service_id=forwarding_rule.name,\n discovered_service=catalog_service.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var application = new Gcp.Apphub.Application(\"application\", new()\n {\n Location = \"us-central1\",\n ApplicationId = \"example-application-1\",\n Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs\n {\n Type = \"REGIONAL\",\n },\n });\n\n var serviceProject = new Gcp.Organizations.Project(\"service_project\", new()\n {\n ProjectId = \"project-1\",\n Name = \"Service Project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n // Enable Compute API\n var computeServiceProject = new Gcp.Projects.Service(\"compute_service_project\", new()\n {\n Project = serviceProject.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n });\n\n var wait120s = new Time.Index.Sleep(\"wait_120s\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n computeServiceProject,\n },\n });\n\n var serviceProjectAttachment = new Gcp.Apphub.ServiceProjectAttachment(\"service_project_attachment\", new()\n {\n ServiceProjectAttachmentId = serviceProject.ProjectId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // VPC network\n var ilbNetwork = new Gcp.Compute.Network(\"ilb_network\", new()\n {\n Name = \"l7-ilb-network\",\n Project = serviceProject.ProjectId,\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend subnet\n var ilbSubnet = new Gcp.Compute.Subnetwork(\"ilb_subnet\", new()\n {\n Name = \"l7-ilb-subnet\",\n Project = serviceProject.ProjectId,\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = ilbNetwork.Id,\n });\n\n // health check\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"l7-ilb-hc\",\n Project = serviceProject.ProjectId,\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend service\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"l7-ilb-backend-subnet\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n HealthChecks = @default.Id,\n });\n\n // forwarding rule\n var forwardingRule = new Gcp.Compute.ForwardingRule(\"forwarding_rule\", new()\n {\n Name = \"l7-ilb-forwarding-rule\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n IpVersion = \"IPV4\",\n LoadBalancingScheme = \"INTERNAL\",\n AllPorts = true,\n BackendService = backend.Id,\n Network = ilbNetwork.Id,\n Subnetwork = ilbSubnet.Id,\n });\n\n // discovered service block\n var catalog_service = Gcp.Apphub.GetDiscoveredService.Invoke(new()\n {\n Location = \"us-central1\",\n ServiceUri = $\"//compute.googleapis.com/{forwardingRule.Id}\",\n });\n\n var wait120sForResourceIngestion = new Time.Index.Sleep(\"wait_120s_for_resource_ingestion\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n forwardingRule,\n },\n });\n\n var example = new Gcp.Apphub.Service(\"example\", new()\n {\n Location = \"us-central1\",\n ApplicationId = application.ApplicationId,\n ServiceId = forwardingRule.Name,\n DiscoveredService = catalog_service.Apply(catalog_service =\u003e catalog_service.Apply(getDiscoveredServiceResult =\u003e getDiscoveredServiceResult.Name)),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apphub\"\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-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapplication, err := apphub.NewApplication(ctx, \"application\", \u0026apphub.ApplicationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: pulumi.String(\"example-application-1\"),\n\t\t\tScope: \u0026apphub.ApplicationScopeArgs{\n\t\t\t\tType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceProject, err := organizations.NewProject(ctx, \"service_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"project-1\"),\n\t\t\tName: pulumi.String(\"Service Project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Enable Compute API\n\t\tcomputeServiceProject, err := projects.NewService(ctx, \"compute_service_project\", \u0026projects.ServiceArgs{\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait120s, err := time.NewSleep(ctx, \"wait_120s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcomputeServiceProject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewServiceProjectAttachment(ctx, \"service_project_attachment\", \u0026apphub.ServiceProjectAttachmentArgs{\n\t\t\tServiceProjectAttachmentId: serviceProject.ProjectId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// VPC network\n\t\tilbNetwork, err := compute.NewNetwork(ctx, \"ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-network\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend subnet\n\t\tilbSubnet, err := compute.NewSubnetwork(ctx, \"ilb_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// health check\n\t\t_, err = compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-hc\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend service\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-backend-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// forwarding rule\n\t\tforwardingRule, err := compute.NewForwardingRule(ctx, \"forwarding_rule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-forwarding-rule\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpVersion: pulumi.String(\"IPV4\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tBackendService: backend.ID(),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t\tSubnetwork: ilbSubnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// discovered service block\n\t\tcatalog_service := apphub.GetDiscoveredServiceOutput(ctx, apphub.GetDiscoveredServiceOutputArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceUri: forwardingRule.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"//compute.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, nil)\n\t\t_, err = time.NewSleep(ctx, \"wait_120s_for_resource_ingestion\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tforwardingRule,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewService(ctx, \"example\", \u0026apphub.ServiceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: application.ApplicationId,\n\t\t\tServiceId: forwardingRule.Name,\n\t\t\tDiscoveredService: pulumi.String(catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) {\n\t\t\t\treturn \u0026catalog_service.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.apphub.Application;\nimport com.pulumi.gcp.apphub.ApplicationArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachment;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachmentArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.apphub.ApphubFunctions;\nimport com.pulumi.gcp.apphub.inputs.GetDiscoveredServiceArgs;\nimport com.pulumi.gcp.apphub.Service;\nimport com.pulumi.gcp.apphub.ServiceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var application = new Application(\"application\", ApplicationArgs.builder()\n .location(\"us-central1\")\n .applicationId(\"example-application-1\")\n .scope(ApplicationScopeArgs.builder()\n .type(\"REGIONAL\")\n .build())\n .build());\n\n var serviceProject = new Project(\"serviceProject\", ProjectArgs.builder()\n .projectId(\"project-1\")\n .name(\"Service Project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n // Enable Compute API\n var computeServiceProject = new Service(\"computeServiceProject\", ServiceArgs.builder()\n .project(serviceProject.projectId())\n .service(\"compute.googleapis.com\")\n .build());\n\n var wait120s = new Sleep(\"wait120s\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(computeServiceProject)\n .build());\n\n var serviceProjectAttachment = new ServiceProjectAttachment(\"serviceProjectAttachment\", ServiceProjectAttachmentArgs.builder()\n .serviceProjectAttachmentId(serviceProject.projectId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // VPC network\n var ilbNetwork = new Network(\"ilbNetwork\", NetworkArgs.builder()\n .name(\"l7-ilb-network\")\n .project(serviceProject.projectId())\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend subnet\n var ilbSubnet = new Subnetwork(\"ilbSubnet\", SubnetworkArgs.builder()\n .name(\"l7-ilb-subnet\")\n .project(serviceProject.projectId())\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(ilbNetwork.id())\n .build());\n\n // health check\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"l7-ilb-hc\")\n .project(serviceProject.projectId())\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend service\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"l7-ilb-backend-subnet\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .healthChecks(default_.id())\n .build());\n\n // forwarding rule\n var forwardingRule = new ForwardingRule(\"forwardingRule\", ForwardingRuleArgs.builder()\n .name(\"l7-ilb-forwarding-rule\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .ipVersion(\"IPV4\")\n .loadBalancingScheme(\"INTERNAL\")\n .allPorts(true)\n .backendService(backend.id())\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build());\n\n // discovered service block\n final var catalog-service = ApphubFunctions.getDiscoveredService(GetDiscoveredServiceArgs.builder()\n .location(\"us-central1\")\n .serviceUri(forwardingRule.id().applyValue(id -\u003e String.format(\"//compute.googleapis.com/%s\", id)))\n .build());\n\n var wait120sForResourceIngestion = new Sleep(\"wait120sForResourceIngestion\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(forwardingRule)\n .build());\n\n var example = new Service(\"example\", ServiceArgs.builder()\n .location(\"us-central1\")\n .applicationId(application.applicationId())\n .serviceId(forwardingRule.name())\n .discoveredService(catalog_service.applyValue(catalog_service -\u003e catalog_service.name()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n application:\n type: gcp:apphub:Application\n properties:\n location: us-central1\n applicationId: example-application-1\n scope:\n type: REGIONAL\n serviceProject:\n type: gcp:organizations:Project\n name: service_project\n properties:\n projectId: project-1\n name: Service Project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n # Enable Compute API\n computeServiceProject:\n type: gcp:projects:Service\n name: compute_service_project\n properties:\n project: ${serviceProject.projectId}\n service: compute.googleapis.com\n wait120s:\n type: time:sleep\n name: wait_120s\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${computeServiceProject}\n serviceProjectAttachment:\n type: gcp:apphub:ServiceProjectAttachment\n name: service_project_attachment\n properties:\n serviceProjectAttachmentId: ${serviceProject.projectId}\n options:\n dependsOn:\n - ${wait120s}\n wait120sForResourceIngestion:\n type: time:sleep\n name: wait_120s_for_resource_ingestion\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${forwardingRule}\n example:\n type: gcp:apphub:Service\n properties:\n location: us-central1\n applicationId: ${application.applicationId}\n serviceId: ${forwardingRule.name}\n discoveredService: ${[\"catalog-service\"].name}\n # VPC network\n ilbNetwork:\n type: gcp:compute:Network\n name: ilb_network\n properties:\n name: l7-ilb-network\n project: ${serviceProject.projectId}\n autoCreateSubnetworks: false\n options:\n dependsOn:\n - ${wait120s}\n # backend subnet\n ilbSubnet:\n type: gcp:compute:Subnetwork\n name: ilb_subnet\n properties:\n name: l7-ilb-subnet\n project: ${serviceProject.projectId}\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${ilbNetwork.id}\n # forwarding rule\n forwardingRule:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule\n properties:\n name: l7-ilb-forwarding-rule\n project: ${serviceProject.projectId}\n region: us-central1\n ipVersion: IPV4\n loadBalancingScheme: INTERNAL\n allPorts: true\n backendService: ${backend.id}\n network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n # backend service\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: l7-ilb-backend-subnet\n project: ${serviceProject.projectId}\n region: us-central1\n healthChecks: ${default.id}\n # health check\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: l7-ilb-hc\n project: ${serviceProject.projectId}\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n options:\n dependsOn:\n - ${wait120s}\nvariables:\n # discovered service block\n catalog-service:\n fn::invoke:\n function: gcp:apphub:getDiscoveredService\n arguments:\n location: us-central1\n serviceUri: //compute.googleapis.com/${forwardingRule.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apphub Service Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst application = new gcp.apphub.Application(\"application\", {\n location: \"us-central1\",\n applicationId: \"example-application-1\",\n scope: {\n type: \"REGIONAL\",\n },\n});\nconst serviceProject = new gcp.organizations.Project(\"service_project\", {\n projectId: \"project-1\",\n name: \"Service Project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\n// Enable Compute API\nconst computeServiceProject = new gcp.projects.Service(\"compute_service_project\", {\n project: serviceProject.projectId,\n service: \"compute.googleapis.com\",\n});\nconst wait120s = new time.index.Sleep(\"wait_120s\", {createDuration: \"120s\"}, {\n dependsOn: [computeServiceProject],\n});\nconst serviceProjectAttachment = new gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", {serviceProjectAttachmentId: serviceProject.projectId}, {\n dependsOn: [wait120s],\n});\n// VPC network\nconst ilbNetwork = new gcp.compute.Network(\"ilb_network\", {\n name: \"l7-ilb-network\",\n project: serviceProject.projectId,\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [wait120s],\n});\n// backend subnet\nconst ilbSubnet = new gcp.compute.Subnetwork(\"ilb_subnet\", {\n name: \"l7-ilb-subnet\",\n project: serviceProject.projectId,\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: ilbNetwork.id,\n});\n// health check\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"l7-ilb-hc\",\n project: serviceProject.projectId,\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n}, {\n dependsOn: [wait120s],\n});\n// backend service\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"l7-ilb-backend-subnet\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n healthChecks: _default.id,\n});\n// forwarding rule\nconst forwardingRule = new gcp.compute.ForwardingRule(\"forwarding_rule\", {\n name: \"l7-ilb-forwarding-rule\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n ipVersion: \"IPV4\",\n loadBalancingScheme: \"INTERNAL\",\n allPorts: true,\n backendService: backend.id,\n network: ilbNetwork.id,\n subnetwork: ilbSubnet.id,\n});\n// discovered service block\nconst catalog-service = gcp.apphub.getDiscoveredServiceOutput({\n location: \"us-central1\",\n serviceUri: pulumi.interpolate`//compute.googleapis.com/${forwardingRule.id}`,\n});\nconst wait120sForResourceIngestion = new time.index.Sleep(\"wait_120s_for_resource_ingestion\", {createDuration: \"120s\"}, {\n dependsOn: [forwardingRule],\n});\nconst example = new gcp.apphub.Service(\"example\", {\n location: \"us-central1\",\n applicationId: application.applicationId,\n serviceId: forwardingRule.name,\n discoveredService: catalog_service.apply(catalog_service =\u003e catalog_service.name),\n displayName: \"Example Service Full\",\n description: \"Register service for testing\",\n attributes: {\n environment: {\n type: \"STAGING\",\n },\n criticality: {\n type: \"MISSION_CRITICAL\",\n },\n businessOwners: [{\n displayName: \"Alice\",\n email: \"alice@google.com\",\n }],\n developerOwners: [{\n displayName: \"Bob\",\n email: \"bob@google.com\",\n }],\n operatorOwners: [{\n displayName: \"Charlie\",\n email: \"charlie@google.com\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\napplication = gcp.apphub.Application(\"application\",\n location=\"us-central1\",\n application_id=\"example-application-1\",\n scope={\n \"type\": \"REGIONAL\",\n })\nservice_project = gcp.organizations.Project(\"service_project\",\n project_id=\"project-1\",\n name=\"Service Project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\n# Enable Compute API\ncompute_service_project = gcp.projects.Service(\"compute_service_project\",\n project=service_project.project_id,\n service=\"compute.googleapis.com\")\nwait120s = time.index.Sleep(\"wait_120s\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[compute_service_project]))\nservice_project_attachment = gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", service_project_attachment_id=service_project.project_id,\nopts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# VPC network\nilb_network = gcp.compute.Network(\"ilb_network\",\n name=\"l7-ilb-network\",\n project=service_project.project_id,\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend subnet\nilb_subnet = gcp.compute.Subnetwork(\"ilb_subnet\",\n name=\"l7-ilb-subnet\",\n project=service_project.project_id,\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=ilb_network.id)\n# health check\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"l7-ilb-hc\",\n project=service_project.project_id,\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend service\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"l7-ilb-backend-subnet\",\n project=service_project.project_id,\n region=\"us-central1\",\n health_checks=default.id)\n# forwarding rule\nforwarding_rule = gcp.compute.ForwardingRule(\"forwarding_rule\",\n name=\"l7-ilb-forwarding-rule\",\n project=service_project.project_id,\n region=\"us-central1\",\n ip_version=\"IPV4\",\n load_balancing_scheme=\"INTERNAL\",\n all_ports=True,\n backend_service=backend.id,\n network=ilb_network.id,\n subnetwork=ilb_subnet.id)\n# discovered service block\ncatalog_service = gcp.apphub.get_discovered_service_output(location=\"us-central1\",\n service_uri=forwarding_rule.id.apply(lambda id: f\"//compute.googleapis.com/{id}\"))\nwait120s_for_resource_ingestion = time.index.Sleep(\"wait_120s_for_resource_ingestion\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[forwarding_rule]))\nexample = gcp.apphub.Service(\"example\",\n location=\"us-central1\",\n application_id=application.application_id,\n service_id=forwarding_rule.name,\n discovered_service=catalog_service.name,\n display_name=\"Example Service Full\",\n description=\"Register service for testing\",\n attributes={\n \"environment\": {\n \"type\": \"STAGING\",\n },\n \"criticality\": {\n \"type\": \"MISSION_CRITICAL\",\n },\n \"business_owners\": [{\n \"display_name\": \"Alice\",\n \"email\": \"alice@google.com\",\n }],\n \"developer_owners\": [{\n \"display_name\": \"Bob\",\n \"email\": \"bob@google.com\",\n }],\n \"operator_owners\": [{\n \"display_name\": \"Charlie\",\n \"email\": \"charlie@google.com\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var application = new Gcp.Apphub.Application(\"application\", new()\n {\n Location = \"us-central1\",\n ApplicationId = \"example-application-1\",\n Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs\n {\n Type = \"REGIONAL\",\n },\n });\n\n var serviceProject = new Gcp.Organizations.Project(\"service_project\", new()\n {\n ProjectId = \"project-1\",\n Name = \"Service Project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n // Enable Compute API\n var computeServiceProject = new Gcp.Projects.Service(\"compute_service_project\", new()\n {\n Project = serviceProject.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n });\n\n var wait120s = new Time.Index.Sleep(\"wait_120s\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n computeServiceProject,\n },\n });\n\n var serviceProjectAttachment = new Gcp.Apphub.ServiceProjectAttachment(\"service_project_attachment\", new()\n {\n ServiceProjectAttachmentId = serviceProject.ProjectId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // VPC network\n var ilbNetwork = new Gcp.Compute.Network(\"ilb_network\", new()\n {\n Name = \"l7-ilb-network\",\n Project = serviceProject.ProjectId,\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend subnet\n var ilbSubnet = new Gcp.Compute.Subnetwork(\"ilb_subnet\", new()\n {\n Name = \"l7-ilb-subnet\",\n Project = serviceProject.ProjectId,\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = ilbNetwork.Id,\n });\n\n // health check\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"l7-ilb-hc\",\n Project = serviceProject.ProjectId,\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend service\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"l7-ilb-backend-subnet\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n HealthChecks = @default.Id,\n });\n\n // forwarding rule\n var forwardingRule = new Gcp.Compute.ForwardingRule(\"forwarding_rule\", new()\n {\n Name = \"l7-ilb-forwarding-rule\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n IpVersion = \"IPV4\",\n LoadBalancingScheme = \"INTERNAL\",\n AllPorts = true,\n BackendService = backend.Id,\n Network = ilbNetwork.Id,\n Subnetwork = ilbSubnet.Id,\n });\n\n // discovered service block\n var catalog_service = Gcp.Apphub.GetDiscoveredService.Invoke(new()\n {\n Location = \"us-central1\",\n ServiceUri = $\"//compute.googleapis.com/{forwardingRule.Id}\",\n });\n\n var wait120sForResourceIngestion = new Time.Index.Sleep(\"wait_120s_for_resource_ingestion\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n forwardingRule,\n },\n });\n\n var example = new Gcp.Apphub.Service(\"example\", new()\n {\n Location = \"us-central1\",\n ApplicationId = application.ApplicationId,\n ServiceId = forwardingRule.Name,\n DiscoveredService = catalog_service.Apply(catalog_service =\u003e catalog_service.Apply(getDiscoveredServiceResult =\u003e getDiscoveredServiceResult.Name)),\n DisplayName = \"Example Service Full\",\n Description = \"Register service for testing\",\n Attributes = new Gcp.Apphub.Inputs.ServiceAttributesArgs\n {\n Environment = new Gcp.Apphub.Inputs.ServiceAttributesEnvironmentArgs\n {\n Type = \"STAGING\",\n },\n Criticality = new Gcp.Apphub.Inputs.ServiceAttributesCriticalityArgs\n {\n Type = \"MISSION_CRITICAL\",\n },\n BusinessOwners = new[]\n {\n new Gcp.Apphub.Inputs.ServiceAttributesBusinessOwnerArgs\n {\n DisplayName = \"Alice\",\n Email = \"alice@google.com\",\n },\n },\n DeveloperOwners = new[]\n {\n new Gcp.Apphub.Inputs.ServiceAttributesDeveloperOwnerArgs\n {\n DisplayName = \"Bob\",\n Email = \"bob@google.com\",\n },\n },\n OperatorOwners = new[]\n {\n new Gcp.Apphub.Inputs.ServiceAttributesOperatorOwnerArgs\n {\n DisplayName = \"Charlie\",\n Email = \"charlie@google.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apphub\"\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-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapplication, err := apphub.NewApplication(ctx, \"application\", \u0026apphub.ApplicationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: pulumi.String(\"example-application-1\"),\n\t\t\tScope: \u0026apphub.ApplicationScopeArgs{\n\t\t\t\tType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceProject, err := organizations.NewProject(ctx, \"service_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"project-1\"),\n\t\t\tName: pulumi.String(\"Service Project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Enable Compute API\n\t\tcomputeServiceProject, err := projects.NewService(ctx, \"compute_service_project\", \u0026projects.ServiceArgs{\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait120s, err := time.NewSleep(ctx, \"wait_120s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcomputeServiceProject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewServiceProjectAttachment(ctx, \"service_project_attachment\", \u0026apphub.ServiceProjectAttachmentArgs{\n\t\t\tServiceProjectAttachmentId: serviceProject.ProjectId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// VPC network\n\t\tilbNetwork, err := compute.NewNetwork(ctx, \"ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-network\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend subnet\n\t\tilbSubnet, err := compute.NewSubnetwork(ctx, \"ilb_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// health check\n\t\t_, err = compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-hc\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend service\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-backend-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// forwarding rule\n\t\tforwardingRule, err := compute.NewForwardingRule(ctx, \"forwarding_rule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-forwarding-rule\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpVersion: pulumi.String(\"IPV4\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tBackendService: backend.ID(),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t\tSubnetwork: ilbSubnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// discovered service block\n\t\tcatalog_service := apphub.GetDiscoveredServiceOutput(ctx, apphub.GetDiscoveredServiceOutputArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceUri: forwardingRule.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"//compute.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, nil)\n\t\t_, err = time.NewSleep(ctx, \"wait_120s_for_resource_ingestion\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tforwardingRule,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewService(ctx, \"example\", \u0026apphub.ServiceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: application.ApplicationId,\n\t\t\tServiceId: forwardingRule.Name,\n\t\t\tDiscoveredService: pulumi.String(catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) {\n\t\t\t\treturn \u0026catalog_service.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tDisplayName: pulumi.String(\"Example Service Full\"),\n\t\t\tDescription: pulumi.String(\"Register service for testing\"),\n\t\t\tAttributes: \u0026apphub.ServiceAttributesArgs{\n\t\t\t\tEnvironment: \u0026apphub.ServiceAttributesEnvironmentArgs{\n\t\t\t\t\tType: pulumi.String(\"STAGING\"),\n\t\t\t\t},\n\t\t\t\tCriticality: \u0026apphub.ServiceAttributesCriticalityArgs{\n\t\t\t\t\tType: pulumi.String(\"MISSION_CRITICAL\"),\n\t\t\t\t},\n\t\t\t\tBusinessOwners: apphub.ServiceAttributesBusinessOwnerArray{\n\t\t\t\t\t\u0026apphub.ServiceAttributesBusinessOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Alice\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"alice@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDeveloperOwners: apphub.ServiceAttributesDeveloperOwnerArray{\n\t\t\t\t\t\u0026apphub.ServiceAttributesDeveloperOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Bob\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"bob@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOperatorOwners: apphub.ServiceAttributesOperatorOwnerArray{\n\t\t\t\t\t\u0026apphub.ServiceAttributesOperatorOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Charlie\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"charlie@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.apphub.Application;\nimport com.pulumi.gcp.apphub.ApplicationArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachment;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachmentArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.apphub.ApphubFunctions;\nimport com.pulumi.gcp.apphub.inputs.GetDiscoveredServiceArgs;\nimport com.pulumi.gcp.apphub.Service;\nimport com.pulumi.gcp.apphub.ServiceArgs;\nimport com.pulumi.gcp.apphub.inputs.ServiceAttributesArgs;\nimport com.pulumi.gcp.apphub.inputs.ServiceAttributesEnvironmentArgs;\nimport com.pulumi.gcp.apphub.inputs.ServiceAttributesCriticalityArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var application = new Application(\"application\", ApplicationArgs.builder()\n .location(\"us-central1\")\n .applicationId(\"example-application-1\")\n .scope(ApplicationScopeArgs.builder()\n .type(\"REGIONAL\")\n .build())\n .build());\n\n var serviceProject = new Project(\"serviceProject\", ProjectArgs.builder()\n .projectId(\"project-1\")\n .name(\"Service Project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n // Enable Compute API\n var computeServiceProject = new Service(\"computeServiceProject\", ServiceArgs.builder()\n .project(serviceProject.projectId())\n .service(\"compute.googleapis.com\")\n .build());\n\n var wait120s = new Sleep(\"wait120s\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(computeServiceProject)\n .build());\n\n var serviceProjectAttachment = new ServiceProjectAttachment(\"serviceProjectAttachment\", ServiceProjectAttachmentArgs.builder()\n .serviceProjectAttachmentId(serviceProject.projectId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // VPC network\n var ilbNetwork = new Network(\"ilbNetwork\", NetworkArgs.builder()\n .name(\"l7-ilb-network\")\n .project(serviceProject.projectId())\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend subnet\n var ilbSubnet = new Subnetwork(\"ilbSubnet\", SubnetworkArgs.builder()\n .name(\"l7-ilb-subnet\")\n .project(serviceProject.projectId())\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(ilbNetwork.id())\n .build());\n\n // health check\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"l7-ilb-hc\")\n .project(serviceProject.projectId())\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend service\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"l7-ilb-backend-subnet\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .healthChecks(default_.id())\n .build());\n\n // forwarding rule\n var forwardingRule = new ForwardingRule(\"forwardingRule\", ForwardingRuleArgs.builder()\n .name(\"l7-ilb-forwarding-rule\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .ipVersion(\"IPV4\")\n .loadBalancingScheme(\"INTERNAL\")\n .allPorts(true)\n .backendService(backend.id())\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build());\n\n // discovered service block\n final var catalog-service = ApphubFunctions.getDiscoveredService(GetDiscoveredServiceArgs.builder()\n .location(\"us-central1\")\n .serviceUri(forwardingRule.id().applyValue(id -\u003e String.format(\"//compute.googleapis.com/%s\", id)))\n .build());\n\n var wait120sForResourceIngestion = new Sleep(\"wait120sForResourceIngestion\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(forwardingRule)\n .build());\n\n var example = new Service(\"example\", ServiceArgs.builder()\n .location(\"us-central1\")\n .applicationId(application.applicationId())\n .serviceId(forwardingRule.name())\n .discoveredService(catalog_service.applyValue(catalog_service -\u003e catalog_service.name()))\n .displayName(\"Example Service Full\")\n .description(\"Register service for testing\")\n .attributes(ServiceAttributesArgs.builder()\n .environment(ServiceAttributesEnvironmentArgs.builder()\n .type(\"STAGING\")\n .build())\n .criticality(ServiceAttributesCriticalityArgs.builder()\n .type(\"MISSION_CRITICAL\")\n .build())\n .businessOwners(ServiceAttributesBusinessOwnerArgs.builder()\n .displayName(\"Alice\")\n .email(\"alice@google.com\")\n .build())\n .developerOwners(ServiceAttributesDeveloperOwnerArgs.builder()\n .displayName(\"Bob\")\n .email(\"bob@google.com\")\n .build())\n .operatorOwners(ServiceAttributesOperatorOwnerArgs.builder()\n .displayName(\"Charlie\")\n .email(\"charlie@google.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n application:\n type: gcp:apphub:Application\n properties:\n location: us-central1\n applicationId: example-application-1\n scope:\n type: REGIONAL\n serviceProject:\n type: gcp:organizations:Project\n name: service_project\n properties:\n projectId: project-1\n name: Service Project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n # Enable Compute API\n computeServiceProject:\n type: gcp:projects:Service\n name: compute_service_project\n properties:\n project: ${serviceProject.projectId}\n service: compute.googleapis.com\n wait120s:\n type: time:sleep\n name: wait_120s\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${computeServiceProject}\n serviceProjectAttachment:\n type: gcp:apphub:ServiceProjectAttachment\n name: service_project_attachment\n properties:\n serviceProjectAttachmentId: ${serviceProject.projectId}\n options:\n dependsOn:\n - ${wait120s}\n wait120sForResourceIngestion:\n type: time:sleep\n name: wait_120s_for_resource_ingestion\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${forwardingRule}\n example:\n type: gcp:apphub:Service\n properties:\n location: us-central1\n applicationId: ${application.applicationId}\n serviceId: ${forwardingRule.name}\n discoveredService: ${[\"catalog-service\"].name}\n displayName: Example Service Full\n description: Register service for testing\n attributes:\n environment:\n type: STAGING\n criticality:\n type: MISSION_CRITICAL\n businessOwners:\n - displayName: Alice\n email: alice@google.com\n developerOwners:\n - displayName: Bob\n email: bob@google.com\n operatorOwners:\n - displayName: Charlie\n email: charlie@google.com\n # VPC network\n ilbNetwork:\n type: gcp:compute:Network\n name: ilb_network\n properties:\n name: l7-ilb-network\n project: ${serviceProject.projectId}\n autoCreateSubnetworks: false\n options:\n dependsOn:\n - ${wait120s}\n # backend subnet\n ilbSubnet:\n type: gcp:compute:Subnetwork\n name: ilb_subnet\n properties:\n name: l7-ilb-subnet\n project: ${serviceProject.projectId}\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${ilbNetwork.id}\n # forwarding rule\n forwardingRule:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule\n properties:\n name: l7-ilb-forwarding-rule\n project: ${serviceProject.projectId}\n region: us-central1\n ipVersion: IPV4\n loadBalancingScheme: INTERNAL\n allPorts: true\n backendService: ${backend.id}\n network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n # backend service\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: l7-ilb-backend-subnet\n project: ${serviceProject.projectId}\n region: us-central1\n healthChecks: ${default.id}\n # health check\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: l7-ilb-hc\n project: ${serviceProject.projectId}\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n options:\n dependsOn:\n - ${wait120s}\nvariables:\n # discovered service block\n catalog-service:\n fn::invoke:\n function: gcp:apphub:getDiscoveredService\n arguments:\n location: us-central1\n serviceUri: //compute.googleapis.com/${forwardingRule.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/applications/{{application_id}}/services/{{service_id}}`\n\n* `{{project}}/{{location}}/{{application_id}}/{{service_id}}`\n\n* `{{location}}/{{application_id}}/{{service_id}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apphub/service:Service default projects/{{project}}/locations/{{location}}/applications/{{application_id}}/services/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:apphub/service:Service default {{project}}/{{location}}/{{application_id}}/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:apphub/service:Service default {{location}}/{{application_id}}/{{service_id}}\n```\n\n", + "description": "Service is a network/api interface that exposes some functionality to clients for consumption over the network. Service typically has one or more Workloads behind it. It registers identified service to the Application.\n\n\n\n## Example Usage\n\n### Apphub Service Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst application = new gcp.apphub.Application(\"application\", {\n location: \"us-central1\",\n applicationId: \"example-application-1\",\n scope: {\n type: \"REGIONAL\",\n },\n});\nconst serviceProject = new gcp.organizations.Project(\"service_project\", {\n projectId: \"project-1\",\n name: \"Service Project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\n// Enable Compute API\nconst computeServiceProject = new gcp.projects.Service(\"compute_service_project\", {\n project: serviceProject.projectId,\n service: \"compute.googleapis.com\",\n});\nconst wait120s = new time.index.Sleep(\"wait_120s\", {createDuration: \"120s\"}, {\n dependsOn: [computeServiceProject],\n});\nconst serviceProjectAttachment = new gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", {serviceProjectAttachmentId: serviceProject.projectId}, {\n dependsOn: [wait120s],\n});\n// VPC network\nconst ilbNetwork = new gcp.compute.Network(\"ilb_network\", {\n name: \"l7-ilb-network\",\n project: serviceProject.projectId,\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [wait120s],\n});\n// backend subnet\nconst ilbSubnet = new gcp.compute.Subnetwork(\"ilb_subnet\", {\n name: \"l7-ilb-subnet\",\n project: serviceProject.projectId,\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: ilbNetwork.id,\n});\n// health check\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"l7-ilb-hc\",\n project: serviceProject.projectId,\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n}, {\n dependsOn: [wait120s],\n});\n// backend service\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"l7-ilb-backend-subnet\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n healthChecks: _default.id,\n});\n// forwarding rule\nconst forwardingRule = new gcp.compute.ForwardingRule(\"forwarding_rule\", {\n name: \"l7-ilb-forwarding-rule\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n ipVersion: \"IPV4\",\n loadBalancingScheme: \"INTERNAL\",\n allPorts: true,\n backendService: backend.id,\n network: ilbNetwork.id,\n subnetwork: ilbSubnet.id,\n});\n// discovered service block\nconst catalog_service = gcp.apphub.getDiscoveredServiceOutput({\n location: \"us-central1\",\n serviceUri: pulumi.interpolate`//compute.googleapis.com/${forwardingRule.id}`,\n});\nconst wait120sForResourceIngestion = new time.index.Sleep(\"wait_120s_for_resource_ingestion\", {createDuration: \"120s\"}, {\n dependsOn: [forwardingRule],\n});\nconst example = new gcp.apphub.Service(\"example\", {\n location: \"us-central1\",\n applicationId: application.applicationId,\n serviceId: forwardingRule.name,\n discoveredService: catalog_service.apply(catalog_service =\u003e catalog_service.name),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\napplication = gcp.apphub.Application(\"application\",\n location=\"us-central1\",\n application_id=\"example-application-1\",\n scope={\n \"type\": \"REGIONAL\",\n })\nservice_project = gcp.organizations.Project(\"service_project\",\n project_id=\"project-1\",\n name=\"Service Project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\n# Enable Compute API\ncompute_service_project = gcp.projects.Service(\"compute_service_project\",\n project=service_project.project_id,\n service=\"compute.googleapis.com\")\nwait120s = time.index.Sleep(\"wait_120s\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[compute_service_project]))\nservice_project_attachment = gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", service_project_attachment_id=service_project.project_id,\nopts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# VPC network\nilb_network = gcp.compute.Network(\"ilb_network\",\n name=\"l7-ilb-network\",\n project=service_project.project_id,\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend subnet\nilb_subnet = gcp.compute.Subnetwork(\"ilb_subnet\",\n name=\"l7-ilb-subnet\",\n project=service_project.project_id,\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=ilb_network.id)\n# health check\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"l7-ilb-hc\",\n project=service_project.project_id,\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend service\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"l7-ilb-backend-subnet\",\n project=service_project.project_id,\n region=\"us-central1\",\n health_checks=default.id)\n# forwarding rule\nforwarding_rule = gcp.compute.ForwardingRule(\"forwarding_rule\",\n name=\"l7-ilb-forwarding-rule\",\n project=service_project.project_id,\n region=\"us-central1\",\n ip_version=\"IPV4\",\n load_balancing_scheme=\"INTERNAL\",\n all_ports=True,\n backend_service=backend.id,\n network=ilb_network.id,\n subnetwork=ilb_subnet.id)\n# discovered service block\ncatalog_service = gcp.apphub.get_discovered_service_output(location=\"us-central1\",\n service_uri=forwarding_rule.id.apply(lambda id: f\"//compute.googleapis.com/{id}\"))\nwait120s_for_resource_ingestion = time.index.Sleep(\"wait_120s_for_resource_ingestion\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[forwarding_rule]))\nexample = gcp.apphub.Service(\"example\",\n location=\"us-central1\",\n application_id=application.application_id,\n service_id=forwarding_rule.name,\n discovered_service=catalog_service.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var application = new Gcp.Apphub.Application(\"application\", new()\n {\n Location = \"us-central1\",\n ApplicationId = \"example-application-1\",\n Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs\n {\n Type = \"REGIONAL\",\n },\n });\n\n var serviceProject = new Gcp.Organizations.Project(\"service_project\", new()\n {\n ProjectId = \"project-1\",\n Name = \"Service Project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n // Enable Compute API\n var computeServiceProject = new Gcp.Projects.Service(\"compute_service_project\", new()\n {\n Project = serviceProject.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n });\n\n var wait120s = new Time.Index.Sleep(\"wait_120s\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n computeServiceProject,\n },\n });\n\n var serviceProjectAttachment = new Gcp.Apphub.ServiceProjectAttachment(\"service_project_attachment\", new()\n {\n ServiceProjectAttachmentId = serviceProject.ProjectId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // VPC network\n var ilbNetwork = new Gcp.Compute.Network(\"ilb_network\", new()\n {\n Name = \"l7-ilb-network\",\n Project = serviceProject.ProjectId,\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend subnet\n var ilbSubnet = new Gcp.Compute.Subnetwork(\"ilb_subnet\", new()\n {\n Name = \"l7-ilb-subnet\",\n Project = serviceProject.ProjectId,\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = ilbNetwork.Id,\n });\n\n // health check\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"l7-ilb-hc\",\n Project = serviceProject.ProjectId,\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend service\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"l7-ilb-backend-subnet\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n HealthChecks = @default.Id,\n });\n\n // forwarding rule\n var forwardingRule = new Gcp.Compute.ForwardingRule(\"forwarding_rule\", new()\n {\n Name = \"l7-ilb-forwarding-rule\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n IpVersion = \"IPV4\",\n LoadBalancingScheme = \"INTERNAL\",\n AllPorts = true,\n BackendService = backend.Id,\n Network = ilbNetwork.Id,\n Subnetwork = ilbSubnet.Id,\n });\n\n // discovered service block\n var catalog_service = Gcp.Apphub.GetDiscoveredService.Invoke(new()\n {\n Location = \"us-central1\",\n ServiceUri = $\"//compute.googleapis.com/{forwardingRule.Id}\",\n });\n\n var wait120sForResourceIngestion = new Time.Index.Sleep(\"wait_120s_for_resource_ingestion\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n forwardingRule,\n },\n });\n\n var example = new Gcp.Apphub.Service(\"example\", new()\n {\n Location = \"us-central1\",\n ApplicationId = application.ApplicationId,\n ServiceId = forwardingRule.Name,\n DiscoveredService = catalog_service.Apply(catalog_service =\u003e catalog_service.Apply(getDiscoveredServiceResult =\u003e getDiscoveredServiceResult.Name)),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apphub\"\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-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapplication, err := apphub.NewApplication(ctx, \"application\", \u0026apphub.ApplicationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: pulumi.String(\"example-application-1\"),\n\t\t\tScope: \u0026apphub.ApplicationScopeArgs{\n\t\t\t\tType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceProject, err := organizations.NewProject(ctx, \"service_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"project-1\"),\n\t\t\tName: pulumi.String(\"Service Project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Enable Compute API\n\t\tcomputeServiceProject, err := projects.NewService(ctx, \"compute_service_project\", \u0026projects.ServiceArgs{\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait120s, err := time.NewSleep(ctx, \"wait_120s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcomputeServiceProject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewServiceProjectAttachment(ctx, \"service_project_attachment\", \u0026apphub.ServiceProjectAttachmentArgs{\n\t\t\tServiceProjectAttachmentId: serviceProject.ProjectId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// VPC network\n\t\tilbNetwork, err := compute.NewNetwork(ctx, \"ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-network\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend subnet\n\t\tilbSubnet, err := compute.NewSubnetwork(ctx, \"ilb_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// health check\n\t\t_default, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-hc\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend service\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-backend-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// forwarding rule\n\t\tforwardingRule, err := compute.NewForwardingRule(ctx, \"forwarding_rule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-forwarding-rule\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpVersion: pulumi.String(\"IPV4\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tBackendService: backend.ID(),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t\tSubnetwork: ilbSubnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// discovered service block\n\t\tcatalog_service := apphub.GetDiscoveredServiceOutput(ctx, apphub.GetDiscoveredServiceOutputArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceUri: forwardingRule.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"//compute.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, nil)\n\t\t_, err = time.NewSleep(ctx, \"wait_120s_for_resource_ingestion\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tforwardingRule,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewService(ctx, \"example\", \u0026apphub.ServiceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: application.ApplicationId,\n\t\t\tServiceId: forwardingRule.Name,\n\t\t\tDiscoveredService: pulumi.String(catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) {\n\t\t\t\treturn \u0026catalog_service.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.apphub.Application;\nimport com.pulumi.gcp.apphub.ApplicationArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachment;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachmentArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.apphub.ApphubFunctions;\nimport com.pulumi.gcp.apphub.inputs.GetDiscoveredServiceArgs;\nimport com.pulumi.gcp.apphub.Service;\nimport com.pulumi.gcp.apphub.ServiceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var application = new Application(\"application\", ApplicationArgs.builder()\n .location(\"us-central1\")\n .applicationId(\"example-application-1\")\n .scope(ApplicationScopeArgs.builder()\n .type(\"REGIONAL\")\n .build())\n .build());\n\n var serviceProject = new Project(\"serviceProject\", ProjectArgs.builder()\n .projectId(\"project-1\")\n .name(\"Service Project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n // Enable Compute API\n var computeServiceProject = new Service(\"computeServiceProject\", ServiceArgs.builder()\n .project(serviceProject.projectId())\n .service(\"compute.googleapis.com\")\n .build());\n\n var wait120s = new Sleep(\"wait120s\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(computeServiceProject)\n .build());\n\n var serviceProjectAttachment = new ServiceProjectAttachment(\"serviceProjectAttachment\", ServiceProjectAttachmentArgs.builder()\n .serviceProjectAttachmentId(serviceProject.projectId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // VPC network\n var ilbNetwork = new Network(\"ilbNetwork\", NetworkArgs.builder()\n .name(\"l7-ilb-network\")\n .project(serviceProject.projectId())\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend subnet\n var ilbSubnet = new Subnetwork(\"ilbSubnet\", SubnetworkArgs.builder()\n .name(\"l7-ilb-subnet\")\n .project(serviceProject.projectId())\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(ilbNetwork.id())\n .build());\n\n // health check\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"l7-ilb-hc\")\n .project(serviceProject.projectId())\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend service\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"l7-ilb-backend-subnet\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .healthChecks(default_.id())\n .build());\n\n // forwarding rule\n var forwardingRule = new ForwardingRule(\"forwardingRule\", ForwardingRuleArgs.builder()\n .name(\"l7-ilb-forwarding-rule\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .ipVersion(\"IPV4\")\n .loadBalancingScheme(\"INTERNAL\")\n .allPorts(true)\n .backendService(backend.id())\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build());\n\n // discovered service block\n final var catalog-service = ApphubFunctions.getDiscoveredService(GetDiscoveredServiceArgs.builder()\n .location(\"us-central1\")\n .serviceUri(forwardingRule.id().applyValue(id -\u003e String.format(\"//compute.googleapis.com/%s\", id)))\n .build());\n\n var wait120sForResourceIngestion = new Sleep(\"wait120sForResourceIngestion\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(forwardingRule)\n .build());\n\n var example = new Service(\"example\", ServiceArgs.builder()\n .location(\"us-central1\")\n .applicationId(application.applicationId())\n .serviceId(forwardingRule.name())\n .discoveredService(catalog_service.applyValue(catalog_service -\u003e catalog_service.name()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n application:\n type: gcp:apphub:Application\n properties:\n location: us-central1\n applicationId: example-application-1\n scope:\n type: REGIONAL\n serviceProject:\n type: gcp:organizations:Project\n name: service_project\n properties:\n projectId: project-1\n name: Service Project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n # Enable Compute API\n computeServiceProject:\n type: gcp:projects:Service\n name: compute_service_project\n properties:\n project: ${serviceProject.projectId}\n service: compute.googleapis.com\n wait120s:\n type: time:sleep\n name: wait_120s\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${computeServiceProject}\n serviceProjectAttachment:\n type: gcp:apphub:ServiceProjectAttachment\n name: service_project_attachment\n properties:\n serviceProjectAttachmentId: ${serviceProject.projectId}\n options:\n dependsOn:\n - ${wait120s}\n wait120sForResourceIngestion:\n type: time:sleep\n name: wait_120s_for_resource_ingestion\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${forwardingRule}\n example:\n type: gcp:apphub:Service\n properties:\n location: us-central1\n applicationId: ${application.applicationId}\n serviceId: ${forwardingRule.name}\n discoveredService: ${[\"catalog-service\"].name}\n # VPC network\n ilbNetwork:\n type: gcp:compute:Network\n name: ilb_network\n properties:\n name: l7-ilb-network\n project: ${serviceProject.projectId}\n autoCreateSubnetworks: false\n options:\n dependsOn:\n - ${wait120s}\n # backend subnet\n ilbSubnet:\n type: gcp:compute:Subnetwork\n name: ilb_subnet\n properties:\n name: l7-ilb-subnet\n project: ${serviceProject.projectId}\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${ilbNetwork.id}\n # forwarding rule\n forwardingRule:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule\n properties:\n name: l7-ilb-forwarding-rule\n project: ${serviceProject.projectId}\n region: us-central1\n ipVersion: IPV4\n loadBalancingScheme: INTERNAL\n allPorts: true\n backendService: ${backend.id}\n network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n # backend service\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: l7-ilb-backend-subnet\n project: ${serviceProject.projectId}\n region: us-central1\n healthChecks: ${default.id}\n # health check\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: l7-ilb-hc\n project: ${serviceProject.projectId}\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n options:\n dependsOn:\n - ${wait120s}\nvariables:\n # discovered service block\n catalog-service:\n fn::invoke:\n function: gcp:apphub:getDiscoveredService\n arguments:\n location: us-central1\n serviceUri: //compute.googleapis.com/${forwardingRule.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Apphub Service Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst application = new gcp.apphub.Application(\"application\", {\n location: \"us-central1\",\n applicationId: \"example-application-1\",\n scope: {\n type: \"REGIONAL\",\n },\n});\nconst serviceProject = new gcp.organizations.Project(\"service_project\", {\n projectId: \"project-1\",\n name: \"Service Project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\n// Enable Compute API\nconst computeServiceProject = new gcp.projects.Service(\"compute_service_project\", {\n project: serviceProject.projectId,\n service: \"compute.googleapis.com\",\n});\nconst wait120s = new time.index.Sleep(\"wait_120s\", {createDuration: \"120s\"}, {\n dependsOn: [computeServiceProject],\n});\nconst serviceProjectAttachment = new gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", {serviceProjectAttachmentId: serviceProject.projectId}, {\n dependsOn: [wait120s],\n});\n// VPC network\nconst ilbNetwork = new gcp.compute.Network(\"ilb_network\", {\n name: \"l7-ilb-network\",\n project: serviceProject.projectId,\n autoCreateSubnetworks: false,\n}, {\n dependsOn: [wait120s],\n});\n// backend subnet\nconst ilbSubnet = new gcp.compute.Subnetwork(\"ilb_subnet\", {\n name: \"l7-ilb-subnet\",\n project: serviceProject.projectId,\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: ilbNetwork.id,\n});\n// health check\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"l7-ilb-hc\",\n project: serviceProject.projectId,\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n}, {\n dependsOn: [wait120s],\n});\n// backend service\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"l7-ilb-backend-subnet\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n healthChecks: _default.id,\n});\n// forwarding rule\nconst forwardingRule = new gcp.compute.ForwardingRule(\"forwarding_rule\", {\n name: \"l7-ilb-forwarding-rule\",\n project: serviceProject.projectId,\n region: \"us-central1\",\n ipVersion: \"IPV4\",\n loadBalancingScheme: \"INTERNAL\",\n allPorts: true,\n backendService: backend.id,\n network: ilbNetwork.id,\n subnetwork: ilbSubnet.id,\n});\n// discovered service block\nconst catalog_service = gcp.apphub.getDiscoveredServiceOutput({\n location: \"us-central1\",\n serviceUri: pulumi.interpolate`//compute.googleapis.com/${forwardingRule.id}`,\n});\nconst wait120sForResourceIngestion = new time.index.Sleep(\"wait_120s_for_resource_ingestion\", {createDuration: \"120s\"}, {\n dependsOn: [forwardingRule],\n});\nconst example = new gcp.apphub.Service(\"example\", {\n location: \"us-central1\",\n applicationId: application.applicationId,\n serviceId: forwardingRule.name,\n discoveredService: catalog_service.apply(catalog_service =\u003e catalog_service.name),\n displayName: \"Example Service Full\",\n description: \"Register service for testing\",\n attributes: {\n environment: {\n type: \"STAGING\",\n },\n criticality: {\n type: \"MISSION_CRITICAL\",\n },\n businessOwners: [{\n displayName: \"Alice\",\n email: \"alice@google.com\",\n }],\n developerOwners: [{\n displayName: \"Bob\",\n email: \"bob@google.com\",\n }],\n operatorOwners: [{\n displayName: \"Charlie\",\n email: \"charlie@google.com\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\napplication = gcp.apphub.Application(\"application\",\n location=\"us-central1\",\n application_id=\"example-application-1\",\n scope={\n \"type\": \"REGIONAL\",\n })\nservice_project = gcp.organizations.Project(\"service_project\",\n project_id=\"project-1\",\n name=\"Service Project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\n# Enable Compute API\ncompute_service_project = gcp.projects.Service(\"compute_service_project\",\n project=service_project.project_id,\n service=\"compute.googleapis.com\")\nwait120s = time.index.Sleep(\"wait_120s\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[compute_service_project]))\nservice_project_attachment = gcp.apphub.ServiceProjectAttachment(\"service_project_attachment\", service_project_attachment_id=service_project.project_id,\nopts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# VPC network\nilb_network = gcp.compute.Network(\"ilb_network\",\n name=\"l7-ilb-network\",\n project=service_project.project_id,\n auto_create_subnetworks=False,\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend subnet\nilb_subnet = gcp.compute.Subnetwork(\"ilb_subnet\",\n name=\"l7-ilb-subnet\",\n project=service_project.project_id,\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=ilb_network.id)\n# health check\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"l7-ilb-hc\",\n project=service_project.project_id,\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n },\n opts = pulumi.ResourceOptions(depends_on=[wait120s]))\n# backend service\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"l7-ilb-backend-subnet\",\n project=service_project.project_id,\n region=\"us-central1\",\n health_checks=default.id)\n# forwarding rule\nforwarding_rule = gcp.compute.ForwardingRule(\"forwarding_rule\",\n name=\"l7-ilb-forwarding-rule\",\n project=service_project.project_id,\n region=\"us-central1\",\n ip_version=\"IPV4\",\n load_balancing_scheme=\"INTERNAL\",\n all_ports=True,\n backend_service=backend.id,\n network=ilb_network.id,\n subnetwork=ilb_subnet.id)\n# discovered service block\ncatalog_service = gcp.apphub.get_discovered_service_output(location=\"us-central1\",\n service_uri=forwarding_rule.id.apply(lambda id: f\"//compute.googleapis.com/{id}\"))\nwait120s_for_resource_ingestion = time.index.Sleep(\"wait_120s_for_resource_ingestion\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[forwarding_rule]))\nexample = gcp.apphub.Service(\"example\",\n location=\"us-central1\",\n application_id=application.application_id,\n service_id=forwarding_rule.name,\n discovered_service=catalog_service.name,\n display_name=\"Example Service Full\",\n description=\"Register service for testing\",\n attributes={\n \"environment\": {\n \"type\": \"STAGING\",\n },\n \"criticality\": {\n \"type\": \"MISSION_CRITICAL\",\n },\n \"business_owners\": [{\n \"display_name\": \"Alice\",\n \"email\": \"alice@google.com\",\n }],\n \"developer_owners\": [{\n \"display_name\": \"Bob\",\n \"email\": \"bob@google.com\",\n }],\n \"operator_owners\": [{\n \"display_name\": \"Charlie\",\n \"email\": \"charlie@google.com\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var application = new Gcp.Apphub.Application(\"application\", new()\n {\n Location = \"us-central1\",\n ApplicationId = \"example-application-1\",\n Scope = new Gcp.Apphub.Inputs.ApplicationScopeArgs\n {\n Type = \"REGIONAL\",\n },\n });\n\n var serviceProject = new Gcp.Organizations.Project(\"service_project\", new()\n {\n ProjectId = \"project-1\",\n Name = \"Service Project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n // Enable Compute API\n var computeServiceProject = new Gcp.Projects.Service(\"compute_service_project\", new()\n {\n Project = serviceProject.ProjectId,\n ServiceName = \"compute.googleapis.com\",\n });\n\n var wait120s = new Time.Index.Sleep(\"wait_120s\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n computeServiceProject,\n },\n });\n\n var serviceProjectAttachment = new Gcp.Apphub.ServiceProjectAttachment(\"service_project_attachment\", new()\n {\n ServiceProjectAttachmentId = serviceProject.ProjectId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // VPC network\n var ilbNetwork = new Gcp.Compute.Network(\"ilb_network\", new()\n {\n Name = \"l7-ilb-network\",\n Project = serviceProject.ProjectId,\n AutoCreateSubnetworks = false,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend subnet\n var ilbSubnet = new Gcp.Compute.Subnetwork(\"ilb_subnet\", new()\n {\n Name = \"l7-ilb-subnet\",\n Project = serviceProject.ProjectId,\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = ilbNetwork.Id,\n });\n\n // health check\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"l7-ilb-hc\",\n Project = serviceProject.ProjectId,\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait120s,\n },\n });\n\n // backend service\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"l7-ilb-backend-subnet\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n HealthChecks = @default.Id,\n });\n\n // forwarding rule\n var forwardingRule = new Gcp.Compute.ForwardingRule(\"forwarding_rule\", new()\n {\n Name = \"l7-ilb-forwarding-rule\",\n Project = serviceProject.ProjectId,\n Region = \"us-central1\",\n IpVersion = \"IPV4\",\n LoadBalancingScheme = \"INTERNAL\",\n AllPorts = true,\n BackendService = backend.Id,\n Network = ilbNetwork.Id,\n Subnetwork = ilbSubnet.Id,\n });\n\n // discovered service block\n var catalog_service = Gcp.Apphub.GetDiscoveredService.Invoke(new()\n {\n Location = \"us-central1\",\n ServiceUri = $\"//compute.googleapis.com/{forwardingRule.Id}\",\n });\n\n var wait120sForResourceIngestion = new Time.Index.Sleep(\"wait_120s_for_resource_ingestion\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n forwardingRule,\n },\n });\n\n var example = new Gcp.Apphub.Service(\"example\", new()\n {\n Location = \"us-central1\",\n ApplicationId = application.ApplicationId,\n ServiceId = forwardingRule.Name,\n DiscoveredService = catalog_service.Apply(catalog_service =\u003e catalog_service.Apply(getDiscoveredServiceResult =\u003e getDiscoveredServiceResult.Name)),\n DisplayName = \"Example Service Full\",\n Description = \"Register service for testing\",\n Attributes = new Gcp.Apphub.Inputs.ServiceAttributesArgs\n {\n Environment = new Gcp.Apphub.Inputs.ServiceAttributesEnvironmentArgs\n {\n Type = \"STAGING\",\n },\n Criticality = new Gcp.Apphub.Inputs.ServiceAttributesCriticalityArgs\n {\n Type = \"MISSION_CRITICAL\",\n },\n BusinessOwners = new[]\n {\n new Gcp.Apphub.Inputs.ServiceAttributesBusinessOwnerArgs\n {\n DisplayName = \"Alice\",\n Email = \"alice@google.com\",\n },\n },\n DeveloperOwners = new[]\n {\n new Gcp.Apphub.Inputs.ServiceAttributesDeveloperOwnerArgs\n {\n DisplayName = \"Bob\",\n Email = \"bob@google.com\",\n },\n },\n OperatorOwners = new[]\n {\n new Gcp.Apphub.Inputs.ServiceAttributesOperatorOwnerArgs\n {\n DisplayName = \"Charlie\",\n Email = \"charlie@google.com\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apphub\"\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-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tapplication, err := apphub.NewApplication(ctx, \"application\", \u0026apphub.ApplicationArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: pulumi.String(\"example-application-1\"),\n\t\t\tScope: \u0026apphub.ApplicationScopeArgs{\n\t\t\t\tType: pulumi.String(\"REGIONAL\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceProject, err := organizations.NewProject(ctx, \"service_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"project-1\"),\n\t\t\tName: pulumi.String(\"Service Project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Enable Compute API\n\t\tcomputeServiceProject, err := projects.NewService(ctx, \"compute_service_project\", \u0026projects.ServiceArgs{\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tService: pulumi.String(\"compute.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twait120s, err := time.NewSleep(ctx, \"wait_120s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcomputeServiceProject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewServiceProjectAttachment(ctx, \"service_project_attachment\", \u0026apphub.ServiceProjectAttachmentArgs{\n\t\t\tServiceProjectAttachmentId: serviceProject.ProjectId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// VPC network\n\t\tilbNetwork, err := compute.NewNetwork(ctx, \"ilb_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-network\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend subnet\n\t\tilbSubnet, err := compute.NewSubnetwork(ctx, \"ilb_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// health check\n\t\t_default, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-hc\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait120s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// backend service\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-backend-subnet\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// forwarding rule\n\t\tforwardingRule, err := compute.NewForwardingRule(ctx, \"forwarding_rule\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"l7-ilb-forwarding-rule\"),\n\t\t\tProject: serviceProject.ProjectId,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpVersion: pulumi.String(\"IPV4\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tBackendService: backend.ID(),\n\t\t\tNetwork: ilbNetwork.ID(),\n\t\t\tSubnetwork: ilbSubnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// discovered service block\n\t\tcatalog_service := apphub.GetDiscoveredServiceOutput(ctx, apphub.GetDiscoveredServiceOutputArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceUri: forwardingRule.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"//compute.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, nil)\n\t\t_, err = time.NewSleep(ctx, \"wait_120s_for_resource_ingestion\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tforwardingRule,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = apphub.NewService(ctx, \"example\", \u0026apphub.ServiceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tApplicationId: application.ApplicationId,\n\t\t\tServiceId: forwardingRule.Name,\n\t\t\tDiscoveredService: pulumi.String(catalog_service.ApplyT(func(catalog_service apphub.GetDiscoveredServiceResult) (*string, error) {\n\t\t\t\treturn \u0026catalog_service.Name, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tDisplayName: pulumi.String(\"Example Service Full\"),\n\t\t\tDescription: pulumi.String(\"Register service for testing\"),\n\t\t\tAttributes: \u0026apphub.ServiceAttributesArgs{\n\t\t\t\tEnvironment: \u0026apphub.ServiceAttributesEnvironmentArgs{\n\t\t\t\t\tType: pulumi.String(\"STAGING\"),\n\t\t\t\t},\n\t\t\t\tCriticality: \u0026apphub.ServiceAttributesCriticalityArgs{\n\t\t\t\t\tType: pulumi.String(\"MISSION_CRITICAL\"),\n\t\t\t\t},\n\t\t\t\tBusinessOwners: apphub.ServiceAttributesBusinessOwnerArray{\n\t\t\t\t\t\u0026apphub.ServiceAttributesBusinessOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Alice\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"alice@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDeveloperOwners: apphub.ServiceAttributesDeveloperOwnerArray{\n\t\t\t\t\t\u0026apphub.ServiceAttributesDeveloperOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Bob\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"bob@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOperatorOwners: apphub.ServiceAttributesOperatorOwnerArray{\n\t\t\t\t\t\u0026apphub.ServiceAttributesOperatorOwnerArgs{\n\t\t\t\t\t\tDisplayName: pulumi.String(\"Charlie\"),\n\t\t\t\t\t\tEmail: pulumi.String(\"charlie@google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.apphub.Application;\nimport com.pulumi.gcp.apphub.ApplicationArgs;\nimport com.pulumi.gcp.apphub.inputs.ApplicationScopeArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachment;\nimport com.pulumi.gcp.apphub.ServiceProjectAttachmentArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.apphub.ApphubFunctions;\nimport com.pulumi.gcp.apphub.inputs.GetDiscoveredServiceArgs;\nimport com.pulumi.gcp.apphub.Service;\nimport com.pulumi.gcp.apphub.ServiceArgs;\nimport com.pulumi.gcp.apphub.inputs.ServiceAttributesArgs;\nimport com.pulumi.gcp.apphub.inputs.ServiceAttributesEnvironmentArgs;\nimport com.pulumi.gcp.apphub.inputs.ServiceAttributesCriticalityArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var application = new Application(\"application\", ApplicationArgs.builder()\n .location(\"us-central1\")\n .applicationId(\"example-application-1\")\n .scope(ApplicationScopeArgs.builder()\n .type(\"REGIONAL\")\n .build())\n .build());\n\n var serviceProject = new Project(\"serviceProject\", ProjectArgs.builder()\n .projectId(\"project-1\")\n .name(\"Service Project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n // Enable Compute API\n var computeServiceProject = new Service(\"computeServiceProject\", ServiceArgs.builder()\n .project(serviceProject.projectId())\n .service(\"compute.googleapis.com\")\n .build());\n\n var wait120s = new Sleep(\"wait120s\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(computeServiceProject)\n .build());\n\n var serviceProjectAttachment = new ServiceProjectAttachment(\"serviceProjectAttachment\", ServiceProjectAttachmentArgs.builder()\n .serviceProjectAttachmentId(serviceProject.projectId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // VPC network\n var ilbNetwork = new Network(\"ilbNetwork\", NetworkArgs.builder()\n .name(\"l7-ilb-network\")\n .project(serviceProject.projectId())\n .autoCreateSubnetworks(false)\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend subnet\n var ilbSubnet = new Subnetwork(\"ilbSubnet\", SubnetworkArgs.builder()\n .name(\"l7-ilb-subnet\")\n .project(serviceProject.projectId())\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(ilbNetwork.id())\n .build());\n\n // health check\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"l7-ilb-hc\")\n .project(serviceProject.projectId())\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait120s)\n .build());\n\n // backend service\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"l7-ilb-backend-subnet\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .healthChecks(default_.id())\n .build());\n\n // forwarding rule\n var forwardingRule = new ForwardingRule(\"forwardingRule\", ForwardingRuleArgs.builder()\n .name(\"l7-ilb-forwarding-rule\")\n .project(serviceProject.projectId())\n .region(\"us-central1\")\n .ipVersion(\"IPV4\")\n .loadBalancingScheme(\"INTERNAL\")\n .allPorts(true)\n .backendService(backend.id())\n .network(ilbNetwork.id())\n .subnetwork(ilbSubnet.id())\n .build());\n\n // discovered service block\n final var catalog-service = ApphubFunctions.getDiscoveredService(GetDiscoveredServiceArgs.builder()\n .location(\"us-central1\")\n .serviceUri(forwardingRule.id().applyValue(id -\u003e String.format(\"//compute.googleapis.com/%s\", id)))\n .build());\n\n var wait120sForResourceIngestion = new Sleep(\"wait120sForResourceIngestion\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(forwardingRule)\n .build());\n\n var example = new Service(\"example\", ServiceArgs.builder()\n .location(\"us-central1\")\n .applicationId(application.applicationId())\n .serviceId(forwardingRule.name())\n .discoveredService(catalog_service.applyValue(catalog_service -\u003e catalog_service.name()))\n .displayName(\"Example Service Full\")\n .description(\"Register service for testing\")\n .attributes(ServiceAttributesArgs.builder()\n .environment(ServiceAttributesEnvironmentArgs.builder()\n .type(\"STAGING\")\n .build())\n .criticality(ServiceAttributesCriticalityArgs.builder()\n .type(\"MISSION_CRITICAL\")\n .build())\n .businessOwners(ServiceAttributesBusinessOwnerArgs.builder()\n .displayName(\"Alice\")\n .email(\"alice@google.com\")\n .build())\n .developerOwners(ServiceAttributesDeveloperOwnerArgs.builder()\n .displayName(\"Bob\")\n .email(\"bob@google.com\")\n .build())\n .operatorOwners(ServiceAttributesOperatorOwnerArgs.builder()\n .displayName(\"Charlie\")\n .email(\"charlie@google.com\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n application:\n type: gcp:apphub:Application\n properties:\n location: us-central1\n applicationId: example-application-1\n scope:\n type: REGIONAL\n serviceProject:\n type: gcp:organizations:Project\n name: service_project\n properties:\n projectId: project-1\n name: Service Project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n # Enable Compute API\n computeServiceProject:\n type: gcp:projects:Service\n name: compute_service_project\n properties:\n project: ${serviceProject.projectId}\n service: compute.googleapis.com\n wait120s:\n type: time:sleep\n name: wait_120s\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${computeServiceProject}\n serviceProjectAttachment:\n type: gcp:apphub:ServiceProjectAttachment\n name: service_project_attachment\n properties:\n serviceProjectAttachmentId: ${serviceProject.projectId}\n options:\n dependsOn:\n - ${wait120s}\n wait120sForResourceIngestion:\n type: time:sleep\n name: wait_120s_for_resource_ingestion\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${forwardingRule}\n example:\n type: gcp:apphub:Service\n properties:\n location: us-central1\n applicationId: ${application.applicationId}\n serviceId: ${forwardingRule.name}\n discoveredService: ${[\"catalog-service\"].name}\n displayName: Example Service Full\n description: Register service for testing\n attributes:\n environment:\n type: STAGING\n criticality:\n type: MISSION_CRITICAL\n businessOwners:\n - displayName: Alice\n email: alice@google.com\n developerOwners:\n - displayName: Bob\n email: bob@google.com\n operatorOwners:\n - displayName: Charlie\n email: charlie@google.com\n # VPC network\n ilbNetwork:\n type: gcp:compute:Network\n name: ilb_network\n properties:\n name: l7-ilb-network\n project: ${serviceProject.projectId}\n autoCreateSubnetworks: false\n options:\n dependsOn:\n - ${wait120s}\n # backend subnet\n ilbSubnet:\n type: gcp:compute:Subnetwork\n name: ilb_subnet\n properties:\n name: l7-ilb-subnet\n project: ${serviceProject.projectId}\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${ilbNetwork.id}\n # forwarding rule\n forwardingRule:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule\n properties:\n name: l7-ilb-forwarding-rule\n project: ${serviceProject.projectId}\n region: us-central1\n ipVersion: IPV4\n loadBalancingScheme: INTERNAL\n allPorts: true\n backendService: ${backend.id}\n network: ${ilbNetwork.id}\n subnetwork: ${ilbSubnet.id}\n # backend service\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: l7-ilb-backend-subnet\n project: ${serviceProject.projectId}\n region: us-central1\n healthChecks: ${default.id}\n # health check\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: l7-ilb-hc\n project: ${serviceProject.projectId}\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n options:\n dependsOn:\n - ${wait120s}\nvariables:\n # discovered service block\n catalog-service:\n fn::invoke:\n function: gcp:apphub:getDiscoveredService\n arguments:\n location: us-central1\n serviceUri: //compute.googleapis.com/${forwardingRule.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nService can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/applications/{{application_id}}/services/{{service_id}}`\n\n* `{{project}}/{{location}}/{{application_id}}/{{service_id}}`\n\n* `{{location}}/{{application_id}}/{{service_id}}`\n\nWhen using the `pulumi import` command, Service can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:apphub/service:Service default projects/{{project}}/locations/{{location}}/applications/{{application_id}}/services/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:apphub/service:Service default {{project}}/{{location}}/{{application_id}}/{{service_id}}\n```\n\n```sh\n$ pulumi import gcp:apphub/service:Service default {{location}}/{{application_id}}/{{service_id}}\n```\n\n", "properties": { "applicationId": { "type": "string", @@ -142210,7 +142210,7 @@ } }, "gcp:artifactregistry/repository:Repository": { - "description": "A repository for storing artifacts\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/artifact-registry/docs/overview)\n\n## Example Usage\n\n### Artifact Registry Repository Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Multi Region\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n location: \"us\",\n format: \"DOCKER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n location=\"us\",\n format=\"DOCKER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Location = \"us\",\n Format = \"DOCKER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .location(\"us\")\n .format(\"DOCKER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n repositoryId: my-repository\n description: example docker repository\n location: us\n format: DOCKER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Docker\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n dockerConfig: {\n immutableTags: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\",\n docker_config={\n \"immutable_tags\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n DockerConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryDockerConfigArgs\n {\n ImmutableTags = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tDockerConfig: \u0026artifactregistry.RepositoryDockerConfigArgs{\n\t\t\t\tImmutableTags: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryDockerConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .dockerConfig(RepositoryDockerConfigArgs.builder()\n .immutableTags(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n dockerConfig:\n immutableTags: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cmek\",\n format: \"DOCKER\",\n kmsKeyName: \"kms-key\",\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cmek\",\n format=\"DOCKER\",\n kms_key_name=\"kms-key\",\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cmek\",\n Format = \"DOCKER\",\n KmsKeyName = \"kms-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cmek\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cmek\")\n .format(\"DOCKER\")\n .kmsKeyName(\"kms-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cmek\n format: DOCKER\n kmsKeyName: kms-key\n options:\n dependsOn:\n - ${cryptoKey}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Virtual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo_upstream_1 = new gcp.artifactregistry.Repository(\"my-repo-upstream-1\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-1\",\n description: \"example docker repository (upstream source) 1\",\n format: \"DOCKER\",\n});\nconst my_repo_upstream_2 = new gcp.artifactregistry.Repository(\"my-repo-upstream-2\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-2\",\n description: \"example docker repository (upstream source) 2\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example virtual docker repository\",\n format: \"DOCKER\",\n mode: \"VIRTUAL_REPOSITORY\",\n virtualRepositoryConfig: {\n upstreamPolicies: [\n {\n id: \"my-repository-upstream-1\",\n repository: my_repo_upstream_1.id,\n priority: 20,\n },\n {\n id: \"my-repository-upstream-2\",\n repository: my_repo_upstream_2.id,\n priority: 10,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo_upstream_1 = gcp.artifactregistry.Repository(\"my-repo-upstream-1\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-1\",\n description=\"example docker repository (upstream source) 1\",\n format=\"DOCKER\")\nmy_repo_upstream_2 = gcp.artifactregistry.Repository(\"my-repo-upstream-2\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-2\",\n description=\"example docker repository (upstream source) 2\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example virtual docker repository\",\n format=\"DOCKER\",\n mode=\"VIRTUAL_REPOSITORY\",\n virtual_repository_config={\n \"upstream_policies\": [\n {\n \"id\": \"my-repository-upstream-1\",\n \"repository\": my_repo_upstream_1.id,\n \"priority\": 20,\n },\n {\n \"id\": \"my-repository-upstream-2\",\n \"repository\": my_repo_upstream_2.id,\n \"priority\": 10,\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo_upstream_1 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-1\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-1\",\n Description = \"example docker repository (upstream source) 1\",\n Format = \"DOCKER\",\n });\n\n var my_repo_upstream_2 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-2\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-2\",\n Description = \"example docker repository (upstream source) 2\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example virtual docker repository\",\n Format = \"DOCKER\",\n Mode = \"VIRTUAL_REPOSITORY\",\n VirtualRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigArgs\n {\n UpstreamPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-1\",\n Repository = my_repo_upstream_1.Id,\n Priority = 20,\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-2\",\n Repository = my_repo_upstream_2.Id,\n Priority = 10,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo-upstream-1\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 1\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo-upstream-2\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\tDescription: pulumi.String(\"example docker repository (upstream source) 2\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example virtual docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"VIRTUAL_REPOSITORY\"),\n\t\t\tVirtualRepositoryConfig: \u0026artifactregistry.RepositoryVirtualRepositoryConfigArgs{\n\t\t\t\tUpstreamPolicies: artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArray{\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-1\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_1.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(20),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026artifactregistry.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs{\n\t\t\t\t\t\tId: pulumi.String(\"my-repository-upstream-2\"),\n\t\t\t\t\t\tRepository: my_repo_upstream_2.ID(),\n\t\t\t\t\t\tPriority: pulumi.Int(10),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryVirtualRepositoryConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo_upstream_1 = new Repository(\"my-repo-upstream-1\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-1\")\n .description(\"example docker repository (upstream source) 1\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo_upstream_2 = new Repository(\"my-repo-upstream-2\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository-upstream-2\")\n .description(\"example docker repository (upstream source) 2\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example virtual docker repository\")\n .format(\"DOCKER\")\n .mode(\"VIRTUAL_REPOSITORY\")\n .virtualRepositoryConfig(RepositoryVirtualRepositoryConfigArgs.builder()\n .upstreamPolicies( \n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-1\")\n .repository(my_repo_upstream_1.id())\n .priority(20)\n .build(),\n RepositoryVirtualRepositoryConfigUpstreamPolicyArgs.builder()\n .id(\"my-repository-upstream-2\")\n .repository(my_repo_upstream_2.id())\n .priority(10)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo-upstream-1:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-1\n description: example docker repository (upstream source) 1\n format: DOCKER\n my-repo-upstream-2:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository-upstream-2\n description: example docker repository (upstream source) 2\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example virtual docker repository\n format: DOCKER\n mode: VIRTUAL_REPOSITORY\n virtualRepositoryConfig:\n upstreamPolicies:\n - id: my-repository-upstream-1\n repository: ${[\"my-repo-upstream-1\"].id}\n priority: 20\n - id: my-repository-upstream-2\n repository: ${[\"my-repo-upstream-2\"].id}\n priority: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example remote docker repository\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub\",\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example remote docker repository\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"docker hub\",\n \"docker_repository\": {\n \"public_repository\": \"DOCKER_HUB\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example remote docker repository\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub\",\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example remote docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub\"),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example remote docker repository\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub\")\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example remote docker repository\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub\n dockerRepository:\n publicRepository: DOCKER_HUB\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Apt\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"debian-buster\",\n description: \"example remote apt repository\",\n format: \"APT\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Debian buster remote repository\",\n aptRepository: {\n publicRepository: {\n repositoryBase: \"DEBIAN\",\n repositoryPath: \"debian/dists/buster\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"debian-buster\",\n description=\"example remote apt repository\",\n format=\"APT\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"Debian buster remote repository\",\n \"apt_repository\": {\n \"public_repository\": {\n \"repository_base\": \"DEBIAN\",\n \"repository_path\": \"debian/dists/buster\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"debian-buster\",\n Description = \"example remote apt repository\",\n Format = \"APT\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Debian buster remote repository\",\n AptRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"DEBIAN\",\n RepositoryPath = \"debian/dists/buster\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"debian-buster\"),\n\t\t\tDescription: pulumi.String(\"example remote apt repository\"),\n\t\t\tFormat: pulumi.String(\"APT\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Debian buster remote repository\"),\n\t\t\t\tAptRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"DEBIAN\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"debian/dists/buster\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"debian-buster\")\n .description(\"example remote apt repository\")\n .format(\"APT\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Debian buster remote repository\")\n .aptRepository(RepositoryRemoteRepositoryConfigAptRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigAptRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"DEBIAN\")\n .repositoryPath(\"debian/dists/buster\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: debian-buster\n description: example remote apt repository\n format: APT\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Debian buster remote repository\n aptRepository:\n publicRepository:\n repositoryBase: DEBIAN\n repositoryPath: debian/dists/buster\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Yum\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"rocky-9\",\n description: \"example remote yum repository\",\n format: \"YUM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"Rocky 9 remote repository\",\n yumRepository: {\n publicRepository: {\n repositoryBase: \"ROCKY\",\n repositoryPath: \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"rocky-9\",\n description=\"example remote yum repository\",\n format=\"YUM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"Rocky 9 remote repository\",\n \"yum_repository\": {\n \"public_repository\": {\n \"repository_base\": \"ROCKY\",\n \"repository_path\": \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"rocky-9\",\n Description = \"example remote yum repository\",\n Format = \"YUM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"Rocky 9 remote repository\",\n YumRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs\n {\n PublicRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs\n {\n RepositoryBase = \"ROCKY\",\n RepositoryPath = \"pub/rocky/9/BaseOS/x86_64/os\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"rocky-9\"),\n\t\t\tDescription: pulumi.String(\"example remote yum repository\"),\n\t\t\tFormat: pulumi.String(\"YUM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"Rocky 9 remote repository\"),\n\t\t\t\tYumRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryArgs{\n\t\t\t\t\tPublicRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs{\n\t\t\t\t\t\tRepositoryBase: pulumi.String(\"ROCKY\"),\n\t\t\t\t\t\tRepositoryPath: pulumi.String(\"pub/rocky/9/BaseOS/x86_64/os\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"rocky-9\")\n .description(\"example remote yum repository\")\n .format(\"YUM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"Rocky 9 remote repository\")\n .yumRepository(RepositoryRemoteRepositoryConfigYumRepositoryArgs.builder()\n .publicRepository(RepositoryRemoteRepositoryConfigYumRepositoryPublicRepositoryArgs.builder()\n .repositoryBase(\"ROCKY\")\n .repositoryPath(\"pub/rocky/9/BaseOS/x86_64/os\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: rocky-9\n description: example remote yum repository\n format: YUM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: Rocky 9 remote repository\n yumRepository:\n publicRepository:\n repositoryBase: ROCKY\n repositoryPath: pub/rocky/9/BaseOS/x86_64/os\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cleanup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cleanup policies\",\n format: \"DOCKER\",\n cleanupPolicyDryRun: false,\n cleanupPolicies: [\n {\n id: \"delete-untagged\",\n action: \"DELETE\",\n condition: {\n tagState: \"UNTAGGED\",\n },\n },\n {\n id: \"keep-new-untagged\",\n action: \"KEEP\",\n condition: {\n tagState: \"UNTAGGED\",\n newerThan: \"7d\",\n },\n },\n {\n id: \"delete-prerelease\",\n action: \"DELETE\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\n \"alpha\",\n \"v0\",\n ],\n olderThan: \"30d\",\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-untagged\",\n \"action\": \"DELETE\",\n \"condition\": {\n \"tag_state\": \"UNTAGGED\",\n },\n },\n {\n \"id\": \"keep-new-untagged\",\n \"action\": \"KEEP\",\n \"condition\": {\n \"tag_state\": \"UNTAGGED\",\n \"newer_than\": \"7d\",\n },\n },\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\": \"30d\",\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-untagged\",\n Action = \"DELETE\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"UNTAGGED\",\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-new-untagged\",\n Action = \"KEEP\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"UNTAGGED\",\n NewerThan = \"7d\",\n },\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 = \"30d\",\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-untagged\"),\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(\"UNTAGGED\"),\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-new-untagged\"),\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(\"UNTAGGED\"),\n\t\t\t\t\t\tNewerThan: pulumi.String(\"7d\"),\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(\"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(\"30d\"),\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-untagged\")\n .action(\"DELETE\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"UNTAGGED\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-new-untagged\")\n .action(\"KEEP\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"UNTAGGED\")\n .newerThan(\"7d\")\n .build())\n .build(),\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(\"30d\")\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-untagged\n action: DELETE\n condition:\n tagState: UNTAGGED\n - id: keep-new-untagged\n action: KEEP\n condition:\n tagState: UNTAGGED\n newerThan: 7d\n - id: delete-prerelease\n action: DELETE\n condition:\n tagState: TAGGED\n tagPrefixes:\n - alpha\n - v0\n olderThan: 30d\n - id: keep-tagged-release\n action: KEEP\n condition:\n tagState: TAGGED\n tagPrefixes:\n - release\n packageNamePrefixes:\n - webapp\n - mobile\n - id: keep-minimum-versions\n action: KEEP\n mostRecentVersions:\n packageNamePrefixes:\n - webapp\n - mobile\n - sandbox\n keepCount: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Dockerhub Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-dockerhub-remote\",\n description: \"example remote dockerhub repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"docker hub with custom credentials\",\n disableUpstreamValidation: true,\n dockerRepository: {\n publicRepository: \"DOCKER_HUB\",\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-dockerhub-remote\",\n description=\"example remote dockerhub repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"docker hub with custom credentials\",\n \"disable_upstream_validation\": True,\n \"docker_repository\": {\n \"public_repository\": \"DOCKER_HUB\",\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-dockerhub-remote\",\n Description = \"example remote dockerhub repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"docker hub with custom credentials\",\n DisableUpstreamValidation = true,\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n PublicRepository = \"DOCKER_HUB\",\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-dockerhub-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote dockerhub repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"docker hub with custom credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tPublicRepository: pulumi.String(\"DOCKER_HUB\"),\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-dockerhub-remote\")\n .description(\"example remote dockerhub repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"docker hub with custom credentials\")\n .disableUpstreamValidation(true)\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .publicRepository(\"DOCKER_HUB\")\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-dockerhub-remote\n description: example remote dockerhub repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: docker hub with custom credentials\n disableUpstreamValidation: true\n dockerRepository:\n publicRepository: DOCKER_HUB\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Docker Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-docker-custom-remote\",\n description: \"example remote custom docker repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom docker remote with credentials\",\n disableUpstreamValidation: true,\n dockerRepository: {\n customRepository: {\n uri: \"https://registry-1.docker.io\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-docker-custom-remote\",\n description=\"example remote custom docker repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom docker remote with credentials\",\n \"disable_upstream_validation\": True,\n \"docker_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://registry-1.docker.io\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-docker-custom-remote\",\n Description = \"example remote custom docker repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom docker remote with credentials\",\n DisableUpstreamValidation = true,\n DockerRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs\n {\n Uri = \"https://registry-1.docker.io\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-docker-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom docker repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom docker remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tDockerRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://registry-1.docker.io\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-docker-custom-remote\")\n .description(\"example remote custom docker repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom docker remote with credentials\")\n .disableUpstreamValidation(true)\n .dockerRepository(RepositoryRemoteRepositoryConfigDockerRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigDockerRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://registry-1.docker.io\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-docker-custom-remote\n description: example remote custom docker repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom docker remote with credentials\n disableUpstreamValidation: true\n dockerRepository:\n customRepository:\n uri: https://registry-1.docker.io\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Maven Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-maven-custom-remote\",\n description: \"example remote custom maven repository with credentials\",\n format: \"MAVEN\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom maven remote with credentials\",\n disableUpstreamValidation: true,\n mavenRepository: {\n customRepository: {\n uri: \"https://my.maven.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-maven-custom-remote\",\n description=\"example remote custom maven repository with credentials\",\n format=\"MAVEN\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom maven remote with credentials\",\n \"disable_upstream_validation\": True,\n \"maven_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://my.maven.registry\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-maven-custom-remote\",\n Description = \"example remote custom maven repository with credentials\",\n Format = \"MAVEN\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom maven remote with credentials\",\n DisableUpstreamValidation = true,\n MavenRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.maven.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-maven-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom maven repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"MAVEN\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom maven remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tMavenRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.maven.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-maven-custom-remote\")\n .description(\"example remote custom maven repository with credentials\")\n .format(\"MAVEN\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom maven remote with credentials\")\n .disableUpstreamValidation(true)\n .mavenRepository(RepositoryRemoteRepositoryConfigMavenRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigMavenRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.maven.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-maven-custom-remote\n description: example remote custom maven repository with credentials\n format: MAVEN\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom maven remote with credentials\n disableUpstreamValidation: true\n mavenRepository:\n customRepository:\n uri: https://my.maven.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Npm Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-npm-custom-remote\",\n description: \"example remote custom npm repository with credentials\",\n format: \"NPM\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom npm with credentials\",\n disableUpstreamValidation: true,\n npmRepository: {\n customRepository: {\n uri: \"https://my.npm.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-npm-custom-remote\",\n description=\"example remote custom npm repository with credentials\",\n format=\"NPM\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom npm with credentials\",\n \"disable_upstream_validation\": True,\n \"npm_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://my.npm.registry\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-npm-custom-remote\",\n Description = \"example remote custom npm repository with credentials\",\n Format = \"NPM\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom npm with credentials\",\n DisableUpstreamValidation = true,\n NpmRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.npm.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-npm-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom npm repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"NPM\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tNpmRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.npm.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-npm-custom-remote\")\n .description(\"example remote custom npm repository with credentials\")\n .format(\"NPM\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .npmRepository(RepositoryRemoteRepositoryConfigNpmRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigNpmRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.npm.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-npm-custom-remote\n description: example remote custom npm repository with credentials\n format: NPM\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n npmRepository:\n customRepository:\n uri: https://my.npm.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Python Custom With Auth\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-python-custom-remote\",\n description: \"example remote custom python repository with credentials\",\n format: \"PYTHON\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom npm with credentials\",\n disableUpstreamValidation: true,\n pythonRepository: {\n customRepository: {\n uri: \"https://my.python.registry\",\n },\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-python-custom-remote\",\n description=\"example remote custom python repository with credentials\",\n format=\"PYTHON\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom npm with credentials\",\n \"disable_upstream_validation\": True,\n \"python_repository\": {\n \"custom_repository\": {\n \"uri\": \"https://my.python.registry\",\n },\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-python-custom-remote\",\n Description = \"example remote custom python repository with credentials\",\n Format = \"PYTHON\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom npm with credentials\",\n DisableUpstreamValidation = true,\n PythonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs\n {\n CustomRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs\n {\n Uri = \"https://my.python.registry\",\n },\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-python-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom python repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"PYTHON\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tPythonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.python.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-python-custom-remote\")\n .description(\"example remote custom python repository with credentials\")\n .format(\"PYTHON\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .pythonRepository(RepositoryRemoteRepositoryConfigPythonRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.python.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-python-custom-remote\n description: example remote custom python repository with credentials\n format: PYTHON\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n pythonRepository:\n customRepository:\n uri: https://my.python.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Common Repository With Docker\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst upstreamRepo = new gcp.artifactregistry.Repository(\"upstream_repo\", {\n location: \"us-central1\",\n repositoryId: \"example-upstream-repo\",\n description: \"example upstream repository\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-common-remote\",\n description: \"example remote common repository with docker upstream\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"pull-through cache of another Artifact Registry repository\",\n commonRepository: {\n uri: upstreamRepo.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nupstream_repo = gcp.artifactregistry.Repository(\"upstream_repo\",\n location=\"us-central1\",\n repository_id=\"example-upstream-repo\",\n description=\"example upstream repository\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-common-remote\",\n description=\"example remote common repository with docker upstream\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"pull-through cache of another Artifact Registry repository\",\n \"common_repository\": {\n \"uri\": upstream_repo.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var upstreamRepo = new Gcp.ArtifactRegistry.Repository(\"upstream_repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-upstream-repo\",\n Description = \"example upstream repository\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-common-remote\",\n Description = \"example remote common repository with docker upstream\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"pull-through cache of another Artifact Registry repository\",\n CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs\n {\n Uri = upstreamRepo.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tupstreamRepo, err := artifactregistry.NewRepository(ctx, \"upstream_repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-upstream-repo\"),\n\t\t\tDescription: pulumi.String(\"example upstream repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-common-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote common repository with docker upstream\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"pull-through cache of another Artifact Registry repository\"),\n\t\t\t\tCommonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{\n\t\t\t\t\tUri: upstreamRepo.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var upstreamRepo = new Repository(\"upstreamRepo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-upstream-repo\")\n .description(\"example upstream repository\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-common-remote\")\n .description(\"example remote common repository with docker upstream\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"pull-through cache of another Artifact Registry repository\")\n .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder()\n .uri(upstreamRepo.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n upstreamRepo:\n type: gcp:artifactregistry:Repository\n name: upstream_repo\n properties:\n location: us-central1\n repositoryId: example-upstream-repo\n description: example upstream repository\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-common-remote\n description: example remote common repository with docker upstream\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: pull-through cache of another Artifact Registry repository\n commonRepository:\n uri: ${upstreamRepo.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Common Repository With Artifact Registry Uri\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst upstreamRepo = new gcp.artifactregistry.Repository(\"upstream_repo\", {\n location: \"us-central1\",\n repositoryId: \"example-upstream-repo\",\n description: \"example upstream repository\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-common-remote\",\n description: \"example remote common repository with docker upstream\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"pull-through cache of another Artifact Registry repository by URL\",\n commonRepository: {\n uri: project.then(project =\u003e `https://us-central1-docker.pkg.dev/${project.projectId}/example-upstream-repo`),\n },\n },\n}, {\n dependsOn: [upstreamRepo],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nupstream_repo = gcp.artifactregistry.Repository(\"upstream_repo\",\n location=\"us-central1\",\n repository_id=\"example-upstream-repo\",\n description=\"example upstream repository\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-common-remote\",\n description=\"example remote common repository with docker upstream\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"pull-through cache of another Artifact Registry repository by URL\",\n \"common_repository\": {\n \"uri\": f\"https://us-central1-docker.pkg.dev/{project.project_id}/example-upstream-repo\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[upstream_repo]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var upstreamRepo = new Gcp.ArtifactRegistry.Repository(\"upstream_repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-upstream-repo\",\n Description = \"example upstream repository\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-common-remote\",\n Description = \"example remote common repository with docker upstream\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"pull-through cache of another Artifact Registry repository by URL\",\n CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs\n {\n Uri = $\"https://us-central1-docker.pkg.dev/{project.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/example-upstream-repo\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n upstreamRepo,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tupstreamRepo, err := artifactregistry.NewRepository(ctx, \"upstream_repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-upstream-repo\"),\n\t\t\tDescription: pulumi.String(\"example upstream repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-common-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote common repository with docker upstream\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"pull-through cache of another Artifact Registry repository by URL\"),\n\t\t\t\tCommonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{\n\t\t\t\t\tUri: pulumi.Sprintf(\"https://us-central1-docker.pkg.dev/%v/example-upstream-repo\", project.ProjectId),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tupstreamRepo,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var upstreamRepo = new Repository(\"upstreamRepo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-upstream-repo\")\n .description(\"example upstream repository\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-common-remote\")\n .description(\"example remote common repository with docker upstream\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"pull-through cache of another Artifact Registry repository by URL\")\n .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder()\n .uri(String.format(\"https://us-central1-docker.pkg.dev/%s/example-upstream-repo\", project.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(upstreamRepo)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n upstreamRepo:\n type: gcp:artifactregistry:Repository\n name: upstream_repo\n properties:\n location: us-central1\n repositoryId: example-upstream-repo\n description: example upstream repository\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-common-remote\n description: example remote common repository with docker upstream\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: pull-through cache of another Artifact Registry repository by URL\n commonRepository:\n uri: https://us-central1-docker.pkg.dev/${project.projectId}/example-upstream-repo\n options:\n dependsOn:\n - ${upstreamRepo}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Common Repository With Custom Upstream\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-docker-custom-remote\",\n description: \"example remote custom docker repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom common docker remote with credentials\",\n disableUpstreamValidation: true,\n commonRepository: {\n uri: \"https://registry-1.docker.io\",\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-docker-custom-remote\",\n description=\"example remote custom docker repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom common docker remote with credentials\",\n \"disable_upstream_validation\": True,\n \"common_repository\": {\n \"uri\": \"https://registry-1.docker.io\",\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-docker-custom-remote\",\n Description = \"example remote custom docker repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom common docker remote with credentials\",\n DisableUpstreamValidation = true,\n CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs\n {\n Uri = \"https://registry-1.docker.io\",\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"example-remote-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"example-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-docker-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom docker repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom common docker remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tCommonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{\n\t\t\t\t\tUri: pulumi.String(\"https://registry-1.docker.io\"),\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-docker-custom-remote\")\n .description(\"example remote custom docker repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom common docker remote with credentials\")\n .disableUpstreamValidation(true)\n .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder()\n .uri(\"https://registry-1.docker.io\")\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-docker-custom-remote\n description: example remote custom docker repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom common docker remote with credentials\n disableUpstreamValidation: true\n commonRepository:\n uri: https://registry-1.docker.io\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Vulnerability Scanning\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with vulnerability scanning config\",\n format: \"DOCKER\",\n vulnerabilityScanningConfig: {\n enablementConfig: \"INHERITED\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with vulnerability scanning config\",\n format=\"DOCKER\",\n vulnerability_scanning_config={\n \"enablement_config\": \"INHERITED\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with vulnerability scanning config\",\n Format = \"DOCKER\",\n VulnerabilityScanningConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVulnerabilityScanningConfigArgs\n {\n EnablementConfig = \"INHERITED\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with vulnerability scanning config\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tVulnerabilityScanningConfig: \u0026artifactregistry.RepositoryVulnerabilityScanningConfigArgs{\n\t\t\t\tEnablementConfig: pulumi.String(\"INHERITED\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryVulnerabilityScanningConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with vulnerability scanning config\")\n .format(\"DOCKER\")\n .vulnerabilityScanningConfig(RepositoryVulnerabilityScanningConfigArgs.builder()\n .enablementConfig(\"INHERITED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with vulnerability scanning config\n format: DOCKER\n vulnerabilityScanningConfig:\n enablementConfig: INHERITED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}`\n\n* `{{project}}/{{location}}/{{repository_id}}`\n\n* `{{location}}/{{repository_id}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{project}}/{{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{location}}/{{repository_id}}\n```\n\n", + "description": "A repository for storing artifacts\n\n\nTo get more information about Repository, see:\n\n* [API documentation](https://cloud.google.com/artifact-registry/docs/reference/rest/v1/projects.locations.repositories)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/artifact-registry/docs/overview)\n\n## Example Usage\n\n### Artifact Registry Repository Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Multi Region\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n location: \"us\",\n format: \"DOCKER\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n location=\"us\",\n format=\"DOCKER\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Location = \"us\",\n Format = \"DOCKER\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tLocation: pulumi.String(\"us\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .location(\"us\")\n .format(\"DOCKER\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n repositoryId: my-repository\n description: example docker repository\n location: us\n format: DOCKER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Docker\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository\",\n format: \"DOCKER\",\n dockerConfig: {\n immutableTags: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository\",\n format=\"DOCKER\",\n docker_config={\n \"immutable_tags\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository\",\n Format = \"DOCKER\",\n DockerConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryDockerConfigArgs\n {\n ImmutableTags = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tDockerConfig: \u0026artifactregistry.RepositoryDockerConfigArgs{\n\t\t\t\tImmutableTags: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryDockerConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository\")\n .format(\"DOCKER\")\n .dockerConfig(RepositoryDockerConfigArgs.builder()\n .immutableTags(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository\n format: DOCKER\n dockerConfig:\n immutableTags: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cryptoKey = new gcp.kms.CryptoKeyIAMMember(\"crypto_key\", {\n cryptoKeyId: \"kms-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with cmek\",\n format: \"DOCKER\",\n kmsKeyName: \"kms-key\",\n}, {\n dependsOn: [cryptoKey],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key = gcp.kms.CryptoKeyIAMMember(\"crypto_key\",\n crypto_key_id=\"kms-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with cmek\",\n format=\"DOCKER\",\n kms_key_name=\"kms-key\",\n opts = pulumi.ResourceOptions(depends_on=[crypto_key]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKey = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key\", new()\n {\n CryptoKeyId = \"kms-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with cmek\",\n Format = \"DOCKER\",\n KmsKeyName = \"kms-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKey,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKey, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"kms-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with cmek\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tKmsKeyName: pulumi.String(\"kms-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKey,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKey = new CryptoKeyIAMMember(\"cryptoKey\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"kms-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with cmek\")\n .format(\"DOCKER\")\n .kmsKeyName(\"kms-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKey)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with cmek\n format: DOCKER\n kmsKeyName: kms-key\n options:\n dependsOn:\n - ${cryptoKey}\n cryptoKey:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key\n properties:\n cryptoKeyId: kms-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Virtual\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo_upstream_1 = new gcp.artifactregistry.Repository(\"my-repo-upstream-1\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-1\",\n description: \"example docker repository (upstream source) 1\",\n format: \"DOCKER\",\n});\nconst my_repo_upstream_2 = new gcp.artifactregistry.Repository(\"my-repo-upstream-2\", {\n location: \"us-central1\",\n repositoryId: \"my-repository-upstream-2\",\n description: \"example docker repository (upstream source) 2\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example virtual docker repository\",\n format: \"DOCKER\",\n mode: \"VIRTUAL_REPOSITORY\",\n virtualRepositoryConfig: {\n upstreamPolicies: [\n {\n id: \"my-repository-upstream-1\",\n repository: my_repo_upstream_1.id,\n priority: 20,\n },\n {\n id: \"my-repository-upstream-2\",\n repository: my_repo_upstream_2.id,\n priority: 10,\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo_upstream_1 = gcp.artifactregistry.Repository(\"my-repo-upstream-1\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-1\",\n description=\"example docker repository (upstream source) 1\",\n format=\"DOCKER\")\nmy_repo_upstream_2 = gcp.artifactregistry.Repository(\"my-repo-upstream-2\",\n location=\"us-central1\",\n repository_id=\"my-repository-upstream-2\",\n description=\"example docker repository (upstream source) 2\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example virtual docker repository\",\n format=\"DOCKER\",\n mode=\"VIRTUAL_REPOSITORY\",\n virtual_repository_config={\n \"upstream_policies\": [\n {\n \"id\": \"my-repository-upstream-1\",\n \"repository\": my_repo_upstream_1.id,\n \"priority\": 20,\n },\n {\n \"id\": \"my-repository-upstream-2\",\n \"repository\": my_repo_upstream_2.id,\n \"priority\": 10,\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo_upstream_1 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-1\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-1\",\n Description = \"example docker repository (upstream source) 1\",\n Format = \"DOCKER\",\n });\n\n var my_repo_upstream_2 = new Gcp.ArtifactRegistry.Repository(\"my-repo-upstream-2\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository-upstream-2\",\n Description = \"example docker repository (upstream source) 2\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example virtual docker repository\",\n Format = \"DOCKER\",\n Mode = \"VIRTUAL_REPOSITORY\",\n VirtualRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigArgs\n {\n UpstreamPolicies = new[]\n {\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-1\",\n Repository = my_repo_upstream_1.Id,\n Priority = 20,\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryVirtualRepositoryConfigUpstreamPolicyArgs\n {\n Id = \"my-repository-upstream-2\",\n Repository = my_repo_upstream_2.Id,\n Priority = 10,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmy_repo_upstream_1, 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\tmy_repo_upstream_2, 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-untagged\",\n action: \"DELETE\",\n condition: {\n tagState: \"UNTAGGED\",\n },\n },\n {\n id: \"keep-new-untagged\",\n action: \"KEEP\",\n condition: {\n tagState: \"UNTAGGED\",\n newerThan: \"7d\",\n },\n },\n {\n id: \"delete-prerelease\",\n action: \"DELETE\",\n condition: {\n tagState: \"TAGGED\",\n tagPrefixes: [\n \"alpha\",\n \"v0\",\n ],\n olderThan: \"30d\",\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-untagged\",\n \"action\": \"DELETE\",\n \"condition\": {\n \"tag_state\": \"UNTAGGED\",\n },\n },\n {\n \"id\": \"keep-new-untagged\",\n \"action\": \"KEEP\",\n \"condition\": {\n \"tag_state\": \"UNTAGGED\",\n \"newer_than\": \"7d\",\n },\n },\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\": \"30d\",\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-untagged\",\n Action = \"DELETE\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"UNTAGGED\",\n },\n },\n new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyArgs\n {\n Id = \"keep-new-untagged\",\n Action = \"KEEP\",\n Condition = new Gcp.ArtifactRegistry.Inputs.RepositoryCleanupPolicyConditionArgs\n {\n TagState = \"UNTAGGED\",\n NewerThan = \"7d\",\n },\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 = \"30d\",\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-untagged\"),\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(\"UNTAGGED\"),\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-new-untagged\"),\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(\"UNTAGGED\"),\n\t\t\t\t\t\tNewerThan: pulumi.String(\"7d\"),\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(\"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(\"30d\"),\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-untagged\")\n .action(\"DELETE\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"UNTAGGED\")\n .build())\n .build(),\n RepositoryCleanupPolicyArgs.builder()\n .id(\"keep-new-untagged\")\n .action(\"KEEP\")\n .condition(RepositoryCleanupPolicyConditionArgs.builder()\n .tagState(\"UNTAGGED\")\n .newerThan(\"7d\")\n .build())\n .build(),\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(\"30d\")\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-untagged\n action: DELETE\n condition:\n tagState: UNTAGGED\n - id: keep-new-untagged\n action: KEEP\n condition:\n tagState: UNTAGGED\n newerThan: 7d\n - id: delete-prerelease\n action: DELETE\n condition:\n tagState: TAGGED\n tagPrefixes:\n - alpha\n - v0\n olderThan: 30d\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\texample_remote_secret, 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\texample_remote_secretVersion, 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\texample_remote_secret, 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\texample_remote_secretVersion, 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\texample_remote_secret, 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\texample_remote_secretVersion, 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\texample_remote_secret, 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\texample_remote_secretVersion, 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\texample_remote_secret, 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\texample_remote_secretVersion, err := secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-python-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom python repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"PYTHON\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom npm with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tPythonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryArgs{\n\t\t\t\t\tCustomRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs{\n\t\t\t\t\t\tUri: pulumi.String(\"https://my.python.registry\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-python-custom-remote\")\n .description(\"example remote custom python repository with credentials\")\n .format(\"PYTHON\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom npm with credentials\")\n .disableUpstreamValidation(true)\n .pythonRepository(RepositoryRemoteRepositoryConfigPythonRepositoryArgs.builder()\n .customRepository(RepositoryRemoteRepositoryConfigPythonRepositoryCustomRepositoryArgs.builder()\n .uri(\"https://my.python.registry\")\n .build())\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-python-custom-remote\n description: example remote custom python repository with credentials\n format: PYTHON\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom npm with credentials\n disableUpstreamValidation: true\n pythonRepository:\n customRepository:\n uri: https://my.python.registry\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Common Repository With Docker\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst upstreamRepo = new gcp.artifactregistry.Repository(\"upstream_repo\", {\n location: \"us-central1\",\n repositoryId: \"example-upstream-repo\",\n description: \"example upstream repository\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-common-remote\",\n description: \"example remote common repository with docker upstream\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"pull-through cache of another Artifact Registry repository\",\n commonRepository: {\n uri: upstreamRepo.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nupstream_repo = gcp.artifactregistry.Repository(\"upstream_repo\",\n location=\"us-central1\",\n repository_id=\"example-upstream-repo\",\n description=\"example upstream repository\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-common-remote\",\n description=\"example remote common repository with docker upstream\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"pull-through cache of another Artifact Registry repository\",\n \"common_repository\": {\n \"uri\": upstream_repo.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var upstreamRepo = new Gcp.ArtifactRegistry.Repository(\"upstream_repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-upstream-repo\",\n Description = \"example upstream repository\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-common-remote\",\n Description = \"example remote common repository with docker upstream\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"pull-through cache of another Artifact Registry repository\",\n CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs\n {\n Uri = upstreamRepo.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tupstreamRepo, err := artifactregistry.NewRepository(ctx, \"upstream_repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-upstream-repo\"),\n\t\t\tDescription: pulumi.String(\"example upstream repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-common-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote common repository with docker upstream\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"pull-through cache of another Artifact Registry repository\"),\n\t\t\t\tCommonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{\n\t\t\t\t\tUri: upstreamRepo.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var upstreamRepo = new Repository(\"upstreamRepo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-upstream-repo\")\n .description(\"example upstream repository\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-common-remote\")\n .description(\"example remote common repository with docker upstream\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"pull-through cache of another Artifact Registry repository\")\n .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder()\n .uri(upstreamRepo.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n upstreamRepo:\n type: gcp:artifactregistry:Repository\n name: upstream_repo\n properties:\n location: us-central1\n repositoryId: example-upstream-repo\n description: example upstream repository\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-common-remote\n description: example remote common repository with docker upstream\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: pull-through cache of another Artifact Registry repository\n commonRepository:\n uri: ${upstreamRepo.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Common Repository With Artifact Registry Uri\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst upstreamRepo = new gcp.artifactregistry.Repository(\"upstream_repo\", {\n location: \"us-central1\",\n repositoryId: \"example-upstream-repo\",\n description: \"example upstream repository\",\n format: \"DOCKER\",\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-common-remote\",\n description: \"example remote common repository with docker upstream\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"pull-through cache of another Artifact Registry repository by URL\",\n commonRepository: {\n uri: project.then(project =\u003e `https://us-central1-docker.pkg.dev/${project.projectId}/example-upstream-repo`),\n },\n },\n}, {\n dependsOn: [upstreamRepo],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nupstream_repo = gcp.artifactregistry.Repository(\"upstream_repo\",\n location=\"us-central1\",\n repository_id=\"example-upstream-repo\",\n description=\"example upstream repository\",\n format=\"DOCKER\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-common-remote\",\n description=\"example remote common repository with docker upstream\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"pull-through cache of another Artifact Registry repository by URL\",\n \"common_repository\": {\n \"uri\": f\"https://us-central1-docker.pkg.dev/{project.project_id}/example-upstream-repo\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[upstream_repo]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var upstreamRepo = new Gcp.ArtifactRegistry.Repository(\"upstream_repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-upstream-repo\",\n Description = \"example upstream repository\",\n Format = \"DOCKER\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-common-remote\",\n Description = \"example remote common repository with docker upstream\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"pull-through cache of another Artifact Registry repository by URL\",\n CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs\n {\n Uri = $\"https://us-central1-docker.pkg.dev/{project.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}/example-upstream-repo\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n upstreamRepo,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tupstreamRepo, err := artifactregistry.NewRepository(ctx, \"upstream_repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-upstream-repo\"),\n\t\t\tDescription: pulumi.String(\"example upstream repository\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-common-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote common repository with docker upstream\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"pull-through cache of another Artifact Registry repository by URL\"),\n\t\t\t\tCommonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{\n\t\t\t\t\tUri: pulumi.Sprintf(\"https://us-central1-docker.pkg.dev/%v/example-upstream-repo\", project.ProjectId),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tupstreamRepo,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var upstreamRepo = new Repository(\"upstreamRepo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-upstream-repo\")\n .description(\"example upstream repository\")\n .format(\"DOCKER\")\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-common-remote\")\n .description(\"example remote common repository with docker upstream\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"pull-through cache of another Artifact Registry repository by URL\")\n .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder()\n .uri(String.format(\"https://us-central1-docker.pkg.dev/%s/example-upstream-repo\", project.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(upstreamRepo)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n upstreamRepo:\n type: gcp:artifactregistry:Repository\n name: upstream_repo\n properties:\n location: us-central1\n repositoryId: example-upstream-repo\n description: example upstream repository\n format: DOCKER\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-common-remote\n description: example remote common repository with docker upstream\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: pull-through cache of another Artifact Registry repository by URL\n commonRepository:\n uri: https://us-central1-docker.pkg.dev/${project.projectId}/example-upstream-repo\n options:\n dependsOn:\n - ${upstreamRepo}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Remote Common Repository With Custom Upstream\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst example_remote_secret = new gcp.secretmanager.Secret(\"example-remote-secret\", {\n secretId: \"example-secret\",\n replication: {\n auto: {},\n },\n});\nconst example_remote_secretVersion = new gcp.secretmanager.SecretVersion(\"example-remote-secret_version\", {\n secret: example_remote_secret.id,\n secretData: \"remote-password\",\n});\nconst secret_access = new gcp.secretmanager.SecretIamMember(\"secret-access\", {\n secretId: example_remote_secret.id,\n role: \"roles/secretmanager.secretAccessor\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com`),\n});\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"example-docker-custom-remote\",\n description: \"example remote custom docker repository with credentials\",\n format: \"DOCKER\",\n mode: \"REMOTE_REPOSITORY\",\n remoteRepositoryConfig: {\n description: \"custom common docker remote with credentials\",\n disableUpstreamValidation: true,\n commonRepository: {\n uri: \"https://registry-1.docker.io\",\n },\n upstreamCredentials: {\n usernamePasswordCredentials: {\n username: \"remote-username\",\n passwordSecretVersion: example_remote_secretVersion.name,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\nexample_remote_secret = gcp.secretmanager.Secret(\"example-remote-secret\",\n secret_id=\"example-secret\",\n replication={\n \"auto\": {},\n })\nexample_remote_secret_version = gcp.secretmanager.SecretVersion(\"example-remote-secret_version\",\n secret=example_remote_secret.id,\n secret_data=\"remote-password\")\nsecret_access = gcp.secretmanager.SecretIamMember(\"secret-access\",\n secret_id=example_remote_secret.id,\n role=\"roles/secretmanager.secretAccessor\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\")\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"example-docker-custom-remote\",\n description=\"example remote custom docker repository with credentials\",\n format=\"DOCKER\",\n mode=\"REMOTE_REPOSITORY\",\n remote_repository_config={\n \"description\": \"custom common docker remote with credentials\",\n \"disable_upstream_validation\": True,\n \"common_repository\": {\n \"uri\": \"https://registry-1.docker.io\",\n },\n \"upstream_credentials\": {\n \"username_password_credentials\": {\n \"username\": \"remote-username\",\n \"password_secret_version\": example_remote_secret_version.name,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var example_remote_secret = new Gcp.SecretManager.Secret(\"example-remote-secret\", new()\n {\n SecretId = \"example-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var example_remote_secretVersion = new Gcp.SecretManager.SecretVersion(\"example-remote-secret_version\", new()\n {\n Secret = example_remote_secret.Id,\n SecretData = \"remote-password\",\n });\n\n var secret_access = new Gcp.SecretManager.SecretIamMember(\"secret-access\", new()\n {\n SecretId = example_remote_secret.Id,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-artifactregistry.iam.gserviceaccount.com\",\n });\n\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"example-docker-custom-remote\",\n Description = \"example remote custom docker repository with credentials\",\n Format = \"DOCKER\",\n Mode = \"REMOTE_REPOSITORY\",\n RemoteRepositoryConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigArgs\n {\n Description = \"custom common docker remote with credentials\",\n DisableUpstreamValidation = true,\n CommonRepository = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs\n {\n Uri = \"https://registry-1.docker.io\",\n },\n UpstreamCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs\n {\n UsernamePasswordCredentials = new Gcp.ArtifactRegistry.Inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs\n {\n Username = \"remote-username\",\n PasswordSecretVersion = example_remote_secretVersion.Name,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_remote_secret, 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\texample_remote_secretVersion, err := secretmanager.NewSecretVersion(ctx, \"example-remote-secret_version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: example_remote_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"remote-password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"secret-access\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: example_remote_secret.ID(),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"example-docker-custom-remote\"),\n\t\t\tDescription: pulumi.String(\"example remote custom docker repository with credentials\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tMode: pulumi.String(\"REMOTE_REPOSITORY\"),\n\t\t\tRemoteRepositoryConfig: \u0026artifactregistry.RepositoryRemoteRepositoryConfigArgs{\n\t\t\t\tDescription: pulumi.String(\"custom common docker remote with credentials\"),\n\t\t\t\tDisableUpstreamValidation: pulumi.Bool(true),\n\t\t\t\tCommonRepository: \u0026artifactregistry.RepositoryRemoteRepositoryConfigCommonRepositoryArgs{\n\t\t\t\t\tUri: pulumi.String(\"https://registry-1.docker.io\"),\n\t\t\t\t},\n\t\t\t\tUpstreamCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs{\n\t\t\t\t\tUsernamePasswordCredentials: \u0026artifactregistry.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs{\n\t\t\t\t\t\tUsername: pulumi.String(\"remote-username\"),\n\t\t\t\t\t\tPasswordSecretVersion: example_remote_secretVersion.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigCommonRepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var example_remote_secret = new Secret(\"example-remote-secret\", SecretArgs.builder()\n .secretId(\"example-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var example_remote_secretVersion = new SecretVersion(\"example-remote-secretVersion\", SecretVersionArgs.builder()\n .secret(example_remote_secret.id())\n .secretData(\"remote-password\")\n .build());\n\n var secret_access = new SecretIamMember(\"secret-access\", SecretIamMemberArgs.builder()\n .secretId(example_remote_secret.id())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-artifactregistry.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"example-docker-custom-remote\")\n .description(\"example remote custom docker repository with credentials\")\n .format(\"DOCKER\")\n .mode(\"REMOTE_REPOSITORY\")\n .remoteRepositoryConfig(RepositoryRemoteRepositoryConfigArgs.builder()\n .description(\"custom common docker remote with credentials\")\n .disableUpstreamValidation(true)\n .commonRepository(RepositoryRemoteRepositoryConfigCommonRepositoryArgs.builder()\n .uri(\"https://registry-1.docker.io\")\n .build())\n .upstreamCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsArgs.builder()\n .usernamePasswordCredentials(RepositoryRemoteRepositoryConfigUpstreamCredentialsUsernamePasswordCredentialsArgs.builder()\n .username(\"remote-username\")\n .passwordSecretVersion(example_remote_secretVersion.name())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-remote-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: example-secret\n replication:\n auto: {}\n example-remote-secretVersion:\n type: gcp:secretmanager:SecretVersion\n name: example-remote-secret_version\n properties:\n secret: ${[\"example-remote-secret\"].id}\n secretData: remote-password\n secret-access:\n type: gcp:secretmanager:SecretIamMember\n properties:\n secretId: ${[\"example-remote-secret\"].id}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:service-${project.number}@gcp-sa-artifactregistry.iam.gserviceaccount.com\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: example-docker-custom-remote\n description: example remote custom docker repository with credentials\n format: DOCKER\n mode: REMOTE_REPOSITORY\n remoteRepositoryConfig:\n description: custom common docker remote with credentials\n disableUpstreamValidation: true\n commonRepository:\n uri: https://registry-1.docker.io\n upstreamCredentials:\n usernamePasswordCredentials:\n username: remote-username\n passwordSecretVersion: ${[\"example-remote-secretVersion\"].name}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Artifact Registry Repository Vulnerability Scanning\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_repo = new gcp.artifactregistry.Repository(\"my-repo\", {\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n description: \"example docker repository with vulnerability scanning config\",\n format: \"DOCKER\",\n vulnerabilityScanningConfig: {\n enablementConfig: \"INHERITED\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.Repository(\"my-repo\",\n location=\"us-central1\",\n repository_id=\"my-repository\",\n description=\"example docker repository with vulnerability scanning config\",\n format=\"DOCKER\",\n vulnerability_scanning_config={\n \"enablement_config\": \"INHERITED\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = new Gcp.ArtifactRegistry.Repository(\"my-repo\", new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\n Description = \"example docker repository with vulnerability scanning config\",\n Format = \"DOCKER\",\n VulnerabilityScanningConfig = new Gcp.ArtifactRegistry.Inputs.RepositoryVulnerabilityScanningConfigArgs\n {\n EnablementConfig = \"INHERITED\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/artifactregistry\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := artifactregistry.NewRepository(ctx, \"my-repo\", \u0026artifactregistry.RepositoryArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRepositoryId: pulumi.String(\"my-repository\"),\n\t\t\tDescription: pulumi.String(\"example docker repository with vulnerability scanning config\"),\n\t\t\tFormat: pulumi.String(\"DOCKER\"),\n\t\t\tVulnerabilityScanningConfig: \u0026artifactregistry.RepositoryVulnerabilityScanningConfigArgs{\n\t\t\t\tEnablementConfig: pulumi.String(\"INHERITED\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.artifactregistry.Repository;\nimport com.pulumi.gcp.artifactregistry.RepositoryArgs;\nimport com.pulumi.gcp.artifactregistry.inputs.RepositoryVulnerabilityScanningConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_repo = new Repository(\"my-repo\", RepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .description(\"example docker repository with vulnerability scanning config\")\n .format(\"DOCKER\")\n .vulnerabilityScanningConfig(RepositoryVulnerabilityScanningConfigArgs.builder()\n .enablementConfig(\"INHERITED\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-repo:\n type: gcp:artifactregistry:Repository\n properties:\n location: us-central1\n repositoryId: my-repository\n description: example docker repository with vulnerability scanning config\n format: DOCKER\n vulnerabilityScanningConfig:\n enablementConfig: INHERITED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRepository can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}`\n\n* `{{project}}/{{location}}/{{repository_id}}`\n\n* `{{location}}/{{repository_id}}`\n\nWhen using the `pulumi import` command, Repository can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default projects/{{project}}/locations/{{location}}/repositories/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{project}}/{{location}}/{{repository_id}}\n```\n\n```sh\n$ pulumi import gcp:artifactregistry/repository:Repository default {{location}}/{{repository_id}}\n```\n\n", "properties": { "cleanupPolicies": { "type": "array", @@ -143981,7 +143981,7 @@ } }, "gcp:backupdisasterrecovery/managementServer:ManagementServer": { - "description": "## Example Usage\n\n### Backup Dr Management Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"vpc-network\"});\nconst privateIpAddress = new gcp.compute.GlobalAddress(\"private_ip_address\", {\n name: \"vpc-network\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 20,\n network: _default.id,\n});\nconst defaultConnection = new gcp.servicenetworking.Connection(\"default\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAddress.name],\n});\nconst ms_console = new gcp.backupdisasterrecovery.ManagementServer(\"ms-console\", {\n location: \"us-central1\",\n name: \"ms-console\",\n type: \"BACKUP_RESTORE\",\n}, {\n dependsOn: [defaultConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"vpc-network\")\nprivate_ip_address = gcp.compute.GlobalAddress(\"private_ip_address\",\n name=\"vpc-network\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=20,\n network=default.id)\ndefault_connection = gcp.servicenetworking.Connection(\"default\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_address.name])\nms_console = gcp.backupdisasterrecovery.ManagementServer(\"ms-console\",\n location=\"us-central1\",\n name=\"ms-console\",\n type=\"BACKUP_RESTORE\",\n opts = pulumi.ResourceOptions(depends_on=[default_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"vpc-network\",\n });\n\n var privateIpAddress = new Gcp.Compute.GlobalAddress(\"private_ip_address\", new()\n {\n Name = \"vpc-network\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 20,\n Network = @default.Id,\n });\n\n var defaultConnection = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAddress.Name,\n },\n });\n\n var ms_console = new Gcp.BackupDisasterRecovery.ManagementServer(\"ms-console\", new()\n {\n Location = \"us-central1\",\n Name = \"ms-console\",\n Type = \"BACKUP_RESTORE\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/backupdisasterrecovery\"\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAddress, err := compute.NewGlobalAddress(ctx, \"private_ip_address\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(20),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultConnection, err := servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAddress.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = backupdisasterrecovery.NewManagementServer(ctx, \"ms-console\", \u0026backupdisasterrecovery.ManagementServerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"ms-console\"),\n\t\t\tType: pulumi.String(\"BACKUP_RESTORE\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.backupdisasterrecovery.ManagementServer;\nimport com.pulumi.gcp.backupdisasterrecovery.ManagementServerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"vpc-network\")\n .build());\n\n var privateIpAddress = new GlobalAddress(\"privateIpAddress\", GlobalAddressArgs.builder()\n .name(\"vpc-network\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(20)\n .network(default_.id())\n .build());\n\n var defaultConnection = new Connection(\"defaultConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAddress.name())\n .build());\n\n var ms_console = new ManagementServer(\"ms-console\", ManagementServerArgs.builder()\n .location(\"us-central1\")\n .name(\"ms-console\")\n .type(\"BACKUP_RESTORE\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: vpc-network\n privateIpAddress:\n type: gcp:compute:GlobalAddress\n name: private_ip_address\n properties:\n name: vpc-network\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 20\n network: ${default.id}\n defaultConnection:\n type: gcp:servicenetworking:Connection\n name: default\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAddress.name}\n ms-console:\n type: gcp:backupdisasterrecovery:ManagementServer\n properties:\n location: us-central1\n name: ms-console\n type: BACKUP_RESTORE\n options:\n dependsOn:\n - ${defaultConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManagementServer can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/managementServers/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ManagementServer can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default projects/{{project}}/locations/{{location}}/managementServers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{location}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Backup Dr Management Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"vpc-network\"});\nconst privateIpAddress = new gcp.compute.GlobalAddress(\"private_ip_address\", {\n name: \"vpc-network\",\n addressType: \"INTERNAL\",\n purpose: \"VPC_PEERING\",\n prefixLength: 20,\n network: _default.id,\n});\nconst defaultConnection = new gcp.servicenetworking.Connection(\"default\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAddress.name],\n});\nconst ms_console = new gcp.backupdisasterrecovery.ManagementServer(\"ms-console\", {\n location: \"us-central1\",\n name: \"ms-console\",\n type: \"BACKUP_RESTORE\",\n}, {\n dependsOn: [defaultConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"vpc-network\")\nprivate_ip_address = gcp.compute.GlobalAddress(\"private_ip_address\",\n name=\"vpc-network\",\n address_type=\"INTERNAL\",\n purpose=\"VPC_PEERING\",\n prefix_length=20,\n network=default.id)\ndefault_connection = gcp.servicenetworking.Connection(\"default\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_address.name])\nms_console = gcp.backupdisasterrecovery.ManagementServer(\"ms-console\",\n location=\"us-central1\",\n name=\"ms-console\",\n type=\"BACKUP_RESTORE\",\n opts = pulumi.ResourceOptions(depends_on=[default_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"vpc-network\",\n });\n\n var privateIpAddress = new Gcp.Compute.GlobalAddress(\"private_ip_address\", new()\n {\n Name = \"vpc-network\",\n AddressType = \"INTERNAL\",\n Purpose = \"VPC_PEERING\",\n PrefixLength = 20,\n Network = @default.Id,\n });\n\n var defaultConnection = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAddress.Name,\n },\n });\n\n var ms_console = new Gcp.BackupDisasterRecovery.ManagementServer(\"ms-console\", new()\n {\n Location = \"us-central1\",\n Name = \"ms-console\",\n Type = \"BACKUP_RESTORE\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/backupdisasterrecovery\"\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateIpAddress, err := compute.NewGlobalAddress(ctx, \"private_ip_address\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"vpc-network\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tPrefixLength: pulumi.Int(20),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultConnection, err := servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAddress.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = backupdisasterrecovery.NewManagementServer(ctx, \"ms-console\", \u0026backupdisasterrecovery.ManagementServerArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"ms-console\"),\n\t\t\tType: pulumi.String(\"BACKUP_RESTORE\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.backupdisasterrecovery.ManagementServer;\nimport com.pulumi.gcp.backupdisasterrecovery.ManagementServerArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"vpc-network\")\n .build());\n\n var privateIpAddress = new GlobalAddress(\"privateIpAddress\", GlobalAddressArgs.builder()\n .name(\"vpc-network\")\n .addressType(\"INTERNAL\")\n .purpose(\"VPC_PEERING\")\n .prefixLength(20)\n .network(default_.id())\n .build());\n\n var defaultConnection = new Connection(\"defaultConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAddress.name())\n .build());\n\n var ms_console = new ManagementServer(\"ms-console\", ManagementServerArgs.builder()\n .location(\"us-central1\")\n .name(\"ms-console\")\n .type(\"BACKUP_RESTORE\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: vpc-network\n privateIpAddress:\n type: gcp:compute:GlobalAddress\n name: private_ip_address\n properties:\n name: vpc-network\n addressType: INTERNAL\n purpose: VPC_PEERING\n prefixLength: 20\n network: ${default.id}\n defaultConnection:\n type: gcp:servicenetworking:Connection\n name: default\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAddress.name}\n ms-console:\n type: gcp:backupdisasterrecovery:ManagementServer\n properties:\n location: us-central1\n name: ms-console\n type: BACKUP_RESTORE\n options:\n dependsOn:\n - ${defaultConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nManagementServer can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/managementServers/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ManagementServer can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default projects/{{project}}/locations/{{location}}/managementServers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:backupdisasterrecovery/managementServer:ManagementServer default {{location}}/{{name}}\n```\n\n", "properties": { "location": { "type": "string", @@ -147409,7 +147409,7 @@ } }, "gcp:bigquery/job:Job": { - "description": "Jobs are actions that BigQuery runs on your behalf to load data, export data, query data, or copy data.\nOnce a BigQuery job is created, it cannot be changed or deleted.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs)\n* How-to Guides\n * [BigQuery Jobs Intro](https://cloud.google.com/bigquery/docs/jobs-overview)\n\n## Example Usage\n\n### Bigquery Job Query\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_query_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_query_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_query\",\n labels: {\n \"example-label\": \"example-value\",\n },\n query: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n destinationTable: {\n projectId: foo.project,\n datasetId: foo.datasetId,\n tableId: foo.tableId,\n },\n allowLargeResults: true,\n flattenResults: true,\n scriptOptions: {\n keyResultStatement: \"LAST\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_query_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_query_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_query\",\n labels={\n \"example-label\": \"example-value\",\n },\n query={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"destination_table\": {\n \"project_id\": foo.project,\n \"dataset_id\": foo.dataset_id,\n \"table_id\": foo.table_id,\n },\n \"allow_large_results\": True,\n \"flatten_results\": True,\n \"script_options\": {\n \"key_result_statement\": \"LAST\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_query_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_query_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_query\",\n Labels = \n {\n { \"example-label\", \"example-value\" },\n },\n Query = new Gcp.BigQuery.Inputs.JobQueryArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n DestinationTable = new Gcp.BigQuery.Inputs.JobQueryDestinationTableArgs\n {\n ProjectId = foo.Project,\n DatasetId = foo.DatasetId,\n TableId = foo.TableId,\n },\n AllowLargeResults = true,\n FlattenResults = true,\n ScriptOptions = new Gcp.BigQuery.Inputs.JobQueryScriptOptionsArgs\n {\n KeyResultStatement = \"LAST\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_query_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_query_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_query\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example-label\": pulumi.String(\"example-value\"),\n\t\t\t},\n\t\t\tQuery: \u0026bigquery.JobQueryArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tDestinationTable: \u0026bigquery.JobQueryDestinationTableArgs{\n\t\t\t\t\tProjectId: foo.Project,\n\t\t\t\t\tDatasetId: foo.DatasetId,\n\t\t\t\t\tTableId: foo.TableId,\n\t\t\t\t},\n\t\t\t\tAllowLargeResults: pulumi.Bool(true),\n\t\t\t\tFlattenResults: pulumi.Bool(true),\n\t\t\t\tScriptOptions: \u0026bigquery.JobQueryScriptOptionsArgs{\n\t\t\t\t\tKeyResultStatement: pulumi.String(\"LAST\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryScriptOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bar = new Dataset(\"bar\", DatasetArgs.builder()\n .datasetId(\"job_query_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_query_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_query\")\n .labels(Map.of(\"example-label\", \"example-value\"))\n .query(JobQueryArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .destinationTable(JobQueryDestinationTableArgs.builder()\n .projectId(foo.project())\n .datasetId(foo.datasetId())\n .tableId(foo.tableId())\n .build())\n .allowLargeResults(true)\n .flattenResults(true)\n .scriptOptions(JobQueryScriptOptionsArgs.builder()\n .keyResultStatement(\"LAST\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_query_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_query_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_query\n labels:\n example-label: example-value\n query:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n destinationTable:\n projectId: ${foo.project}\n datasetId: ${foo.datasetId}\n tableId: ${foo.tableId}\n allowLargeResults: true\n flattenResults: true\n scriptOptions:\n keyResultStatement: LAST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Query Table Reference\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_query_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_query_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_query\",\n labels: {\n \"example-label\": \"example-value\",\n },\n query: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n destinationTable: {\n tableId: foo.id,\n },\n defaultDataset: {\n datasetId: bar.id,\n },\n allowLargeResults: true,\n flattenResults: true,\n scriptOptions: {\n keyResultStatement: \"LAST\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_query_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_query_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_query\",\n labels={\n \"example-label\": \"example-value\",\n },\n query={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"destination_table\": {\n \"table_id\": foo.id,\n },\n \"default_dataset\": {\n \"dataset_id\": bar.id,\n },\n \"allow_large_results\": True,\n \"flatten_results\": True,\n \"script_options\": {\n \"key_result_statement\": \"LAST\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_query_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_query_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_query\",\n Labels = \n {\n { \"example-label\", \"example-value\" },\n },\n Query = new Gcp.BigQuery.Inputs.JobQueryArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n DestinationTable = new Gcp.BigQuery.Inputs.JobQueryDestinationTableArgs\n {\n TableId = foo.Id,\n },\n DefaultDataset = new Gcp.BigQuery.Inputs.JobQueryDefaultDatasetArgs\n {\n DatasetId = bar.Id,\n },\n AllowLargeResults = true,\n FlattenResults = true,\n ScriptOptions = new Gcp.BigQuery.Inputs.JobQueryScriptOptionsArgs\n {\n KeyResultStatement = \"LAST\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_query_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_query_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_query\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example-label\": pulumi.String(\"example-value\"),\n\t\t\t},\n\t\t\tQuery: \u0026bigquery.JobQueryArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tDestinationTable: \u0026bigquery.JobQueryDestinationTableArgs{\n\t\t\t\t\tTableId: foo.ID(),\n\t\t\t\t},\n\t\t\t\tDefaultDataset: \u0026bigquery.JobQueryDefaultDatasetArgs{\n\t\t\t\t\tDatasetId: bar.ID(),\n\t\t\t\t},\n\t\t\t\tAllowLargeResults: pulumi.Bool(true),\n\t\t\t\tFlattenResults: pulumi.Bool(true),\n\t\t\t\tScriptOptions: \u0026bigquery.JobQueryScriptOptionsArgs{\n\t\t\t\t\tKeyResultStatement: pulumi.String(\"LAST\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryDefaultDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryScriptOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bar = new Dataset(\"bar\", DatasetArgs.builder()\n .datasetId(\"job_query_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_query_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_query\")\n .labels(Map.of(\"example-label\", \"example-value\"))\n .query(JobQueryArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .destinationTable(JobQueryDestinationTableArgs.builder()\n .tableId(foo.id())\n .build())\n .defaultDataset(JobQueryDefaultDatasetArgs.builder()\n .datasetId(bar.id())\n .build())\n .allowLargeResults(true)\n .flattenResults(true)\n .scriptOptions(JobQueryScriptOptionsArgs.builder()\n .keyResultStatement(\"LAST\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_query_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_query_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_query\n labels:\n example-label: example-value\n query:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n destinationTable:\n tableId: ${foo.id}\n defaultDataset:\n datasetId: ${bar.id}\n allowLargeResults: true\n flattenResults: true\n scriptOptions:\n keyResultStatement: LAST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Load\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_load_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_load\",\n labels: {\n my_job: \"load\",\n },\n load: {\n sourceUris: [\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"],\n destinationTable: {\n projectId: foo.project,\n datasetId: foo.datasetId,\n tableId: foo.tableId,\n },\n skipLeadingRows: 1,\n schemaUpdateOptions: [\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n writeDisposition: \"WRITE_APPEND\",\n autodetect: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_load_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_load\",\n labels={\n \"my_job\": \"load\",\n },\n load={\n \"source_uris\": [\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"],\n \"destination_table\": {\n \"project_id\": foo.project,\n \"dataset_id\": foo.dataset_id,\n \"table_id\": foo.table_id,\n },\n \"skip_leading_rows\": 1,\n \"schema_update_options\": [\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n \"write_disposition\": \"WRITE_APPEND\",\n \"autodetect\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_load_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_load\",\n Labels = \n {\n { \"my_job\", \"load\" },\n },\n Load = new Gcp.BigQuery.Inputs.JobLoadArgs\n {\n SourceUris = new[]\n {\n \"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\",\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobLoadDestinationTableArgs\n {\n ProjectId = foo.Project,\n DatasetId = foo.DatasetId,\n TableId = foo.TableId,\n },\n SkipLeadingRows = 1,\n SchemaUpdateOptions = new[]\n {\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n },\n WriteDisposition = \"WRITE_APPEND\",\n Autodetect = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_load_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_load\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_job\": pulumi.String(\"load\"),\n\t\t\t},\n\t\t\tLoad: \u0026bigquery.JobLoadArgs{\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"),\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobLoadDestinationTableArgs{\n\t\t\t\t\tProjectId: foo.Project,\n\t\t\t\t\tDatasetId: foo.DatasetId,\n\t\t\t\t\tTableId: foo.TableId,\n\t\t\t\t},\n\t\t\t\tSkipLeadingRows: pulumi.Int(1),\n\t\t\t\tSchemaUpdateOptions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_RELAXATION\"),\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_ADDITION\"),\n\t\t\t\t},\n\t\t\t\tWriteDisposition: pulumi.String(\"WRITE_APPEND\"),\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadDestinationTableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bar = new Dataset(\"bar\", DatasetArgs.builder()\n .datasetId(\"job_load_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_load_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_load\")\n .labels(Map.of(\"my_job\", \"load\"))\n .load(JobLoadArgs.builder()\n .sourceUris(\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\")\n .destinationTable(JobLoadDestinationTableArgs.builder()\n .projectId(foo.project())\n .datasetId(foo.datasetId())\n .tableId(foo.tableId())\n .build())\n .skipLeadingRows(1)\n .schemaUpdateOptions( \n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\")\n .writeDisposition(\"WRITE_APPEND\")\n .autodetect(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_load_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_load\n labels:\n my_job: load\n load:\n sourceUris:\n - gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\n destinationTable:\n projectId: ${foo.project}\n datasetId: ${foo.datasetId}\n tableId: ${foo.tableId}\n skipLeadingRows: 1\n schemaUpdateOptions:\n - ALLOW_FIELD_RELAXATION\n - ALLOW_FIELD_ADDITION\n writeDisposition: WRITE_APPEND\n autodetect: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Load Geojson\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-bq-geojson`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"geojson-data.jsonl\",\n bucket: bucket.name,\n content: `{\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n`,\n});\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_load_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_load\",\n labels: {\n my_job: \"load\",\n },\n load: {\n sourceUris: [pulumi.interpolate`gs://${object.bucket}/${object.name}`],\n destinationTable: {\n projectId: foo.project,\n datasetId: foo.datasetId,\n tableId: foo.tableId,\n },\n writeDisposition: \"WRITE_TRUNCATE\",\n autodetect: true,\n sourceFormat: \"NEWLINE_DELIMITED_JSON\",\n jsonExtension: \"GEOJSON\",\n },\n}, {\n dependsOn: [object],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-bq-geojson\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"geojson-data.jsonl\",\n bucket=bucket.name,\n content=\"\"\"{\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n\"\"\")\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_load_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_load\",\n labels={\n \"my_job\": \"load\",\n },\n load={\n \"source_uris\": [pulumi.Output.all(\n bucket=object.bucket,\n name=object.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucket']}/{resolved_outputs['name']}\")\n],\n \"destination_table\": {\n \"project_id\": foo.project,\n \"dataset_id\": foo.dataset_id,\n \"table_id\": foo.table_id,\n },\n \"write_disposition\": \"WRITE_TRUNCATE\",\n \"autodetect\": True,\n \"source_format\": \"NEWLINE_DELIMITED_JSON\",\n \"json_extension\": \"GEOJSON\",\n },\n opts = pulumi.ResourceOptions(depends_on=[object]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-bq-geojson\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"geojson-data.jsonl\",\n Bucket = bucket.Name,\n Content = @\"{\"\"type\"\":\"\"Feature\"\",\"\"properties\"\":{\"\"continent\"\":\"\"Europe\"\",\"\"region\"\":\"\"Scandinavia\"\"},\"\"geometry\"\":{\"\"type\"\":\"\"Polygon\"\",\"\"coordinates\"\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"\"type\"\":\"\"Feature\"\",\"\"properties\"\":{\"\"continent\"\":\"\"Africa\"\",\"\"region\"\":\"\"West Africa\"\"},\"\"geometry\"\":{\"\"type\"\":\"\"Polygon\"\",\"\"coordinates\"\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n\",\n });\n\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_load_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_load\",\n Labels = \n {\n { \"my_job\", \"load\" },\n },\n Load = new Gcp.BigQuery.Inputs.JobLoadArgs\n {\n SourceUris = new[]\n {\n Output.Tuple(@object.Bucket, @object.Name).Apply(values =\u003e\n {\n var bucket = values.Item1;\n var name = values.Item2;\n return $\"gs://{bucket}/{name}\";\n }),\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobLoadDestinationTableArgs\n {\n ProjectId = foo.Project,\n DatasetId = foo.DatasetId,\n TableId = foo.TableId,\n },\n WriteDisposition = \"WRITE_TRUNCATE\",\n Autodetect = true,\n SourceFormat = \"NEWLINE_DELIMITED_JSON\",\n JsonExtension = \"GEOJSON\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @object,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-bq-geojson\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"geojson-data.jsonl\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"type\\\":\\\"Feature\\\",\\\"properties\\\":{\\\"continent\\\":\\\"Europe\\\",\\\"region\\\":\\\"Scandinavia\\\"},\\\"geometry\\\":{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\\n{\\\"type\\\":\\\"Feature\\\",\\\"properties\\\":{\\\"continent\\\":\\\"Africa\\\",\\\"region\\\":\\\"West Africa\\\"},\\\"geometry\\\":{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_load_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_load\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_job\": pulumi.String(\"load\"),\n\t\t\t},\n\t\t\tLoad: \u0026bigquery.JobLoadArgs{\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.All(object.Bucket, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucket := _args[0].(string)\n\t\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucket, name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobLoadDestinationTableArgs{\n\t\t\t\t\tProjectId: foo.Project,\n\t\t\t\t\tDatasetId: foo.DatasetId,\n\t\t\t\t\tTableId: foo.TableId,\n\t\t\t\t},\n\t\t\t\tWriteDisposition: pulumi.String(\"WRITE_TRUNCATE\"),\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t\tSourceFormat: pulumi.String(\"NEWLINE_DELIMITED_JSON\"),\n\t\t\t\tJsonExtension: pulumi.String(\"GEOJSON\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tobject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadDestinationTableArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-bq-geojson\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"geojson-data.jsonl\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n \"\"\")\n .build());\n\n var bar = new Dataset(\"bar\", DatasetArgs.builder()\n .datasetId(\"job_load_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_load_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_load\")\n .labels(Map.of(\"my_job\", \"load\"))\n .load(JobLoadArgs.builder()\n .sourceUris(Output.tuple(object.bucket(), object.name()).applyValue(values -\u003e {\n var bucket = values.t1;\n var name = values.t2;\n return String.format(\"gs://%s/%s\", bucket,name);\n }))\n .destinationTable(JobLoadDestinationTableArgs.builder()\n .projectId(foo.project())\n .datasetId(foo.datasetId())\n .tableId(foo.tableId())\n .build())\n .writeDisposition(\"WRITE_TRUNCATE\")\n .autodetect(true)\n .sourceFormat(\"NEWLINE_DELIMITED_JSON\")\n .jsonExtension(\"GEOJSON\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(object)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-bq-geojson\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: geojson-data.jsonl\n bucket: ${bucket.name}\n content: |\n {\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n {\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_load_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_load\n labels:\n my_job: load\n load:\n sourceUris:\n - gs://${object.bucket}/${object.name}\n destinationTable:\n projectId: ${foo.project}\n datasetId: ${foo.datasetId}\n tableId: ${foo.tableId}\n writeDisposition: WRITE_TRUNCATE\n autodetect: true\n sourceFormat: NEWLINE_DELIMITED_JSON\n jsonExtension: GEOJSON\n options:\n dependsOn:\n - ${object}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Load Parquet\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.storage.Bucket(\"test\", {\n name: \"job_load_bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst testBucketObject = new gcp.storage.BucketObject(\"test\", {\n name: \"job_load_bucket_object\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n bucket: test.name,\n});\nconst testDataset = new gcp.bigquery.Dataset(\"test\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"job_load_table\",\n datasetId: testDataset.datasetId,\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_load\",\n labels: {\n my_job: \"load\",\n },\n load: {\n sourceUris: [pulumi.interpolate`gs://${testBucketObject.bucket}/${testBucketObject.name}`],\n destinationTable: {\n projectId: testTable.project,\n datasetId: testTable.datasetId,\n tableId: testTable.tableId,\n },\n schemaUpdateOptions: [\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n writeDisposition: \"WRITE_APPEND\",\n sourceFormat: \"PARQUET\",\n autodetect: true,\n parquetOptions: {\n enumAsString: true,\n enableListInference: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.storage.Bucket(\"test\",\n name=\"job_load_bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\ntest_bucket_object = gcp.storage.BucketObject(\"test\",\n name=\"job_load_bucket_object\",\n source=pulumi.FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n bucket=test.name)\ntest_dataset = gcp.bigquery.Dataset(\"test\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"job_load_table\",\n dataset_id=test_dataset.dataset_id)\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_load\",\n labels={\n \"my_job\": \"load\",\n },\n load={\n \"source_uris\": [pulumi.Output.all(\n bucket=test_bucket_object.bucket,\n name=test_bucket_object.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucket']}/{resolved_outputs['name']}\")\n],\n \"destination_table\": {\n \"project_id\": test_table.project,\n \"dataset_id\": test_table.dataset_id,\n \"table_id\": test_table.table_id,\n },\n \"schema_update_options\": [\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n \"write_disposition\": \"WRITE_APPEND\",\n \"source_format\": \"PARQUET\",\n \"autodetect\": True,\n \"parquet_options\": {\n \"enum_as_string\": True,\n \"enable_list_inference\": True,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.Storage.Bucket(\"test\", new()\n {\n Name = \"job_load_bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var testBucketObject = new Gcp.Storage.BucketObject(\"test\", new()\n {\n Name = \"job_load_bucket_object\",\n Source = new FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n Bucket = test.Name,\n });\n\n var testDataset = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"job_load_table\",\n DatasetId = testDataset.DatasetId,\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_load\",\n Labels = \n {\n { \"my_job\", \"load\" },\n },\n Load = new Gcp.BigQuery.Inputs.JobLoadArgs\n {\n SourceUris = new[]\n {\n Output.Tuple(testBucketObject.Bucket, testBucketObject.Name).Apply(values =\u003e\n {\n var bucket = values.Item1;\n var name = values.Item2;\n return $\"gs://{bucket}/{name}\";\n }),\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobLoadDestinationTableArgs\n {\n ProjectId = testTable.Project,\n DatasetId = testTable.DatasetId,\n TableId = testTable.TableId,\n },\n SchemaUpdateOptions = new[]\n {\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n },\n WriteDisposition = \"WRITE_APPEND\",\n SourceFormat = \"PARQUET\",\n Autodetect = true,\n ParquetOptions = new Gcp.BigQuery.Inputs.JobLoadParquetOptionsArgs\n {\n EnumAsString = true,\n EnableListInference = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := storage.NewBucket(ctx, \"test\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"job_load_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestBucketObject, err := storage.NewBucketObject(ctx, \"test\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"job_load_bucket_object\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/test.parquet.gzip\"),\n\t\t\tBucket: test.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDataset, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_load_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t\tDatasetId: testDataset.DatasetId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_load\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_job\": pulumi.String(\"load\"),\n\t\t\t},\n\t\t\tLoad: \u0026bigquery.JobLoadArgs{\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.All(testBucketObject.Bucket, testBucketObject.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucket := _args[0].(string)\n\t\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucket, name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobLoadDestinationTableArgs{\n\t\t\t\t\tProjectId: testTable.Project,\n\t\t\t\t\tDatasetId: testTable.DatasetId,\n\t\t\t\t\tTableId: testTable.TableId,\n\t\t\t\t},\n\t\t\t\tSchemaUpdateOptions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_RELAXATION\"),\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_ADDITION\"),\n\t\t\t\t},\n\t\t\t\tWriteDisposition: pulumi.String(\"WRITE_APPEND\"),\n\t\t\t\tSourceFormat: pulumi.String(\"PARQUET\"),\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t\tParquetOptions: \u0026bigquery.JobLoadParquetOptionsArgs{\n\t\t\t\t\tEnumAsString: pulumi.Bool(true),\n\t\t\t\t\tEnableListInference: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadParquetOptionsArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Bucket(\"test\", BucketArgs.builder()\n .name(\"job_load_bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var testBucketObject = new BucketObject(\"testBucketObject\", BucketObjectArgs.builder()\n .name(\"job_load_bucket_object\")\n .source(new FileAsset(\"./test-fixtures/test.parquet.gzip\"))\n .bucket(test.name())\n .build());\n\n var testDataset = new Dataset(\"testDataset\", DatasetArgs.builder()\n .datasetId(\"job_load_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"job_load_table\")\n .datasetId(testDataset.datasetId())\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_load\")\n .labels(Map.of(\"my_job\", \"load\"))\n .load(JobLoadArgs.builder()\n .sourceUris(Output.tuple(testBucketObject.bucket(), testBucketObject.name()).applyValue(values -\u003e {\n var bucket = values.t1;\n var name = values.t2;\n return String.format(\"gs://%s/%s\", bucket,name);\n }))\n .destinationTable(JobLoadDestinationTableArgs.builder()\n .projectId(testTable.project())\n .datasetId(testTable.datasetId())\n .tableId(testTable.tableId())\n .build())\n .schemaUpdateOptions( \n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\")\n .writeDisposition(\"WRITE_APPEND\")\n .sourceFormat(\"PARQUET\")\n .autodetect(true)\n .parquetOptions(JobLoadParquetOptionsArgs.builder()\n .enumAsString(true)\n .enableListInference(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:storage:Bucket\n properties:\n name: job_load_bucket\n location: US\n uniformBucketLevelAccess: true\n testBucketObject:\n type: gcp:storage:BucketObject\n name: test\n properties:\n name: job_load_bucket_object\n source:\n fn::FileAsset: ./test-fixtures/test.parquet.gzip\n bucket: ${test.name}\n testDataset:\n type: gcp:bigquery:Dataset\n name: test\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: job_load_table\n datasetId: ${testDataset.datasetId}\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_load\n labels:\n my_job: load\n load:\n sourceUris:\n - gs://${testBucketObject.bucket}/${testBucketObject.name}\n destinationTable:\n projectId: ${testTable.project}\n datasetId: ${testTable.datasetId}\n tableId: ${testTable.tableId}\n schemaUpdateOptions:\n - ALLOW_FIELD_RELAXATION\n - ALLOW_FIELD_ADDITION\n writeDisposition: WRITE_APPEND\n sourceFormat: PARQUET\n autodetect: true\n parquetOptions:\n enumAsString: true\n enableListInference: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Copy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst count = 2;\nconst sourceDataset: gcp.bigquery.Dataset[] = [];\nfor (const range = {value: 0}; range.value \u003c count; range.value++) {\n sourceDataset.push(new gcp.bigquery.Dataset(`source-${range.value}`, {\n datasetId: `job_copy_${range.value}_dataset`,\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n }));\n}\nconst source: gcp.bigquery.Table[] = [];\nfor (const range = {value: 0}; range.value \u003c count; range.value++) {\n source.push(new gcp.bigquery.Table(`source-${range.value}`, {\n datasetId: sourceDataset[range.value].datasetId,\n tableId: `job_copy_${range.value}_table`,\n deletionProtection: false,\n schema: `[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n }));\n}\nconst destDataset = new gcp.bigquery.Dataset(\"dest\", {\n datasetId: \"job_copy_dest_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst project = gcp.organizations.getProject({\n projectId: \"my-project-name\",\n});\nconst encryptRole = new gcp.kms.CryptoKeyIAMMember(\"encrypt_role\", {\n cryptoKeyId: \"example-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:bq-${project.number}@bigquery-encryption.iam.gserviceaccount.com`),\n});\nconst dest = new gcp.bigquery.Table(\"dest\", {\n deletionProtection: false,\n datasetId: destDataset.datasetId,\n tableId: \"job_copy_dest_table\",\n schema: `[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n encryptionConfiguration: {\n kmsKeyName: \"example-key\",\n },\n}, {\n dependsOn: [encryptRole],\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_copy\",\n copy: {\n sourceTables: [\n {\n projectId: source[0].project,\n datasetId: source[0].datasetId,\n tableId: source[0].tableId,\n },\n {\n projectId: source[1].project,\n datasetId: source[1].datasetId,\n tableId: source[1].tableId,\n },\n ],\n destinationTable: {\n projectId: dest.project,\n datasetId: dest.datasetId,\n tableId: dest.tableId,\n },\n destinationEncryptionConfiguration: {\n kmsKeyName: \"example-key\",\n },\n },\n}, {\n dependsOn: [encryptRole],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncount = 2\nsource_dataset = []\nfor range in [{\"value\": i} for i in range(0, count)]:\n source_dataset.append(gcp.bigquery.Dataset(f\"source-{range['value']}\",\n dataset_id=f\"job_copy_{range['value']}_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\"))\nsource = []\nfor range in [{\"value\": i} for i in range(0, count)]:\n source.append(gcp.bigquery.Table(f\"source-{range['value']}\",\n dataset_id=source_dataset[range[\"value\"]].dataset_id,\n table_id=f\"job_copy_{range['value']}_table\",\n deletion_protection=False,\n schema=\"\"\"[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\"))\ndest_dataset = gcp.bigquery.Dataset(\"dest\",\n dataset_id=\"job_copy_dest_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nproject = gcp.organizations.get_project(project_id=\"my-project-name\")\nencrypt_role = gcp.kms.CryptoKeyIAMMember(\"encrypt_role\",\n crypto_key_id=\"example-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:bq-{project.number}@bigquery-encryption.iam.gserviceaccount.com\")\ndest = gcp.bigquery.Table(\"dest\",\n deletion_protection=False,\n dataset_id=dest_dataset.dataset_id,\n table_id=\"job_copy_dest_table\",\n schema=\"\"\"[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\",\n encryption_configuration={\n \"kms_key_name\": \"example-key\",\n },\n opts = pulumi.ResourceOptions(depends_on=[encrypt_role]))\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_copy\",\n copy={\n \"source_tables\": [\n {\n \"project_id\": source[0].project,\n \"dataset_id\": source[0].dataset_id,\n \"table_id\": source[0].table_id,\n },\n {\n \"project_id\": source[1].project,\n \"dataset_id\": source[1].dataset_id,\n \"table_id\": source[1].table_id,\n },\n ],\n \"destination_table\": {\n \"project_id\": dest.project,\n \"dataset_id\": dest.dataset_id,\n \"table_id\": dest.table_id,\n },\n \"destination_encryption_configuration\": {\n \"kms_key_name\": \"example-key\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[encrypt_role]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var count = 2;\n\n var sourceDataset = new List\u003cGcp.BigQuery.Dataset\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c count; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n sourceDataset.Add(new Gcp.BigQuery.Dataset($\"source-{range.Value}\", new()\n {\n DatasetId = $\"job_copy_{range.Value}_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n }));\n }\n var source = new List\u003cGcp.BigQuery.Table\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c count; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n source.Add(new Gcp.BigQuery.Table($\"source-{range.Value}\", new()\n {\n DatasetId = sourceDataset[range.Value].DatasetId,\n TableId = $\"job_copy_{range.Value}_table\",\n DeletionProtection = false,\n Schema = @\"[\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"post_abbr\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"date\"\",\n \"\"type\"\": \"\"DATE\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n }));\n }\n var destDataset = new Gcp.BigQuery.Dataset(\"dest\", new()\n {\n DatasetId = \"job_copy_dest_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n var encryptRole = new Gcp.Kms.CryptoKeyIAMMember(\"encrypt_role\", new()\n {\n CryptoKeyId = \"example-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:bq-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@bigquery-encryption.iam.gserviceaccount.com\",\n });\n\n var dest = new Gcp.BigQuery.Table(\"dest\", new()\n {\n DeletionProtection = false,\n DatasetId = destDataset.DatasetId,\n TableId = \"job_copy_dest_table\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"post_abbr\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"date\"\",\n \"\"type\"\": \"\"DATE\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n EncryptionConfiguration = new Gcp.BigQuery.Inputs.TableEncryptionConfigurationArgs\n {\n KmsKeyName = \"example-key\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n encryptRole,\n },\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_copy\",\n Copy = new Gcp.BigQuery.Inputs.JobCopyArgs\n {\n SourceTables = new[]\n {\n new Gcp.BigQuery.Inputs.JobCopySourceTableArgs\n {\n ProjectId = source[0].Project,\n DatasetId = source[0].DatasetId,\n TableId = source[0].TableId,\n },\n new Gcp.BigQuery.Inputs.JobCopySourceTableArgs\n {\n ProjectId = source[1].Project,\n DatasetId = source[1].DatasetId,\n TableId = source[1].TableId,\n },\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobCopyDestinationTableArgs\n {\n ProjectId = dest.Project,\n DatasetId = dest.DatasetId,\n TableId = dest.TableId,\n },\n DestinationEncryptionConfiguration = new Gcp.BigQuery.Inputs.JobCopyDestinationEncryptionConfigurationArgs\n {\n KmsKeyName = \"example-key\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n encryptRole,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcount := 2\n\t\tvar sourceDataset []*bigquery.Dataset\n\t\tfor index := 0; index \u003c count; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := bigquery.NewDataset(ctx, fmt.Sprintf(\"source-%v\", key0), \u0026bigquery.DatasetArgs{\n\t\t\t\tDatasetId: pulumi.Sprintf(\"job_copy_%v_dataset\", val0),\n\t\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tsourceDataset = append(sourceDataset, __res)\n\t\t}\n\t\tvar source []*bigquery.Table\n\t\tfor index := 0; index \u003c count; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := bigquery.NewTable(ctx, fmt.Sprintf(\"source-%v\", key0), \u0026bigquery.TableArgs{\n\t\t\t\tDatasetId: sourceDataset[val0].DatasetId,\n\t\t\t\tTableId: pulumi.Sprintf(\"job_copy_%v_table\", val0),\n\t\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tsource = append(source, __res)\n\t\t}\n\t\tdestDataset, err := bigquery.NewDataset(ctx, \"dest\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_copy_dest_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{\n\t\t\tProjectId: pulumi.StringRef(\"my-project-name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tencryptRole, err := kms.NewCryptoKeyIAMMember(ctx, \"encrypt_role\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"example-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:bq-%v@bigquery-encryption.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdest, err := bigquery.NewTable(ctx, \"dest\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: destDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_copy_dest_table\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t\tEncryptionConfiguration: \u0026bigquery.TableEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"example-key\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tencryptRole,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_copy\"),\n\t\t\tCopy: \u0026bigquery.JobCopyArgs{\n\t\t\t\tSourceTables: bigquery.JobCopySourceTableArray{\n\t\t\t\t\t\u0026bigquery.JobCopySourceTableArgs{\n\t\t\t\t\t\tProjectId: source[0].Project,\n\t\t\t\t\t\tDatasetId: source[0].DatasetId,\n\t\t\t\t\t\tTableId: source[0].TableId,\n\t\t\t\t\t},\n\t\t\t\t\t\u0026bigquery.JobCopySourceTableArgs{\n\t\t\t\t\t\tProjectId: source[1].Project,\n\t\t\t\t\t\tDatasetId: source[1].DatasetId,\n\t\t\t\t\t\tTableId: source[1].TableId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobCopyDestinationTableArgs{\n\t\t\t\t\tProjectId: dest.Project,\n\t\t\t\t\tDatasetId: dest.DatasetId,\n\t\t\t\t\tTableId: dest.TableId,\n\t\t\t\t},\n\t\t\t\tDestinationEncryptionConfiguration: \u0026bigquery.JobCopyDestinationEncryptionConfigurationArgs{\n\t\t\t\t\tKmsKeyName: pulumi.String(\"example-key\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tencryptRole,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableEncryptionConfigurationArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobCopyArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobCopyDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobCopyDestinationEncryptionConfigurationArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var count = 2;\n\n for (var i = 0; i \u003c count; i++) {\n new Dataset(\"sourceDataset-\" + i, DatasetArgs.builder()\n .datasetId(String.format(\"job_copy_%s_dataset\", range.value()))\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n \n}\n for (var i = 0; i \u003c count; i++) {\n new Table(\"source-\" + i, TableArgs.builder()\n .datasetId(sourceDataset[range.value()].datasetId())\n .tableId(String.format(\"job_copy_%s_table\", range.value()))\n .deletionProtection(false)\n .schema(\"\"\"\n[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n \n}\n var destDataset = new Dataset(\"destDataset\", DatasetArgs.builder()\n .datasetId(\"job_copy_dest_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n var encryptRole = new CryptoKeyIAMMember(\"encryptRole\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"example-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:bq-%s@bigquery-encryption.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var dest = new Table(\"dest\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(destDataset.datasetId())\n .tableId(\"job_copy_dest_table\")\n .schema(\"\"\"\n[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .encryptionConfiguration(TableEncryptionConfigurationArgs.builder()\n .kmsKeyName(\"example-key\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(encryptRole)\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_copy\")\n .copy(JobCopyArgs.builder()\n .sourceTables( \n JobCopySourceTableArgs.builder()\n .projectId(source[0].project())\n .datasetId(source[0].datasetId())\n .tableId(source[0].tableId())\n .build(),\n JobCopySourceTableArgs.builder()\n .projectId(source[1].project())\n .datasetId(source[1].datasetId())\n .tableId(source[1].tableId())\n .build())\n .destinationTable(JobCopyDestinationTableArgs.builder()\n .projectId(dest.project())\n .datasetId(dest.datasetId())\n .tableId(dest.tableId())\n .build())\n .destinationEncryptionConfiguration(JobCopyDestinationEncryptionConfigurationArgs.builder()\n .kmsKeyName(\"example-key\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(encryptRole)\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Extract\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_oneDataset = new gcp.bigquery.Dataset(\"source-one\", {\n datasetId: \"job_extract_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst source_one = new gcp.bigquery.Table(\"source-one\", {\n deletionProtection: false,\n datasetId: source_oneDataset.datasetId,\n tableId: \"job_extract_table\",\n schema: `[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"job_extract_bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_extract\",\n extract: {\n destinationUris: [pulumi.interpolate`${dest.url}/extract`],\n sourceTable: {\n projectId: source_one.project,\n datasetId: source_one.datasetId,\n tableId: source_one.tableId,\n },\n destinationFormat: \"NEWLINE_DELIMITED_JSON\",\n compression: \"GZIP\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource_one_dataset = gcp.bigquery.Dataset(\"source-one\",\n dataset_id=\"job_extract_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsource_one = gcp.bigquery.Table(\"source-one\",\n deletion_protection=False,\n dataset_id=source_one_dataset.dataset_id,\n table_id=\"job_extract_table\",\n schema=\"\"\"[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\ndest = gcp.storage.Bucket(\"dest\",\n name=\"job_extract_bucket\",\n location=\"US\",\n force_destroy=True)\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_extract\",\n extract={\n \"destination_uris\": [dest.url.apply(lambda url: f\"{url}/extract\")],\n \"source_table\": {\n \"project_id\": source_one.project,\n \"dataset_id\": source_one.dataset_id,\n \"table_id\": source_one.table_id,\n },\n \"destination_format\": \"NEWLINE_DELIMITED_JSON\",\n \"compression\": \"GZIP\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source_oneDataset = new Gcp.BigQuery.Dataset(\"source-one\", new()\n {\n DatasetId = \"job_extract_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var source_one = new Gcp.BigQuery.Table(\"source-one\", new()\n {\n DeletionProtection = false,\n DatasetId = source_oneDataset.DatasetId,\n TableId = \"job_extract_table\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"post_abbr\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"date\"\",\n \"\"type\"\": \"\"DATE\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"job_extract_bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_extract\",\n Extract = new Gcp.BigQuery.Inputs.JobExtractArgs\n {\n DestinationUris = new[]\n {\n dest.Url.Apply(url =\u003e $\"{url}/extract\"),\n },\n SourceTable = new Gcp.BigQuery.Inputs.JobExtractSourceTableArgs\n {\n ProjectId = source_one.Project,\n DatasetId = source_one.DatasetId,\n TableId = source_one.TableId,\n },\n DestinationFormat = \"NEWLINE_DELIMITED_JSON\",\n Compression = \"GZIP\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewDataset(ctx, \"source-one\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_extract_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"source-one\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: source_oneDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_extract_table\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"job_extract_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_extract\"),\n\t\t\tExtract: \u0026bigquery.JobExtractArgs{\n\t\t\t\tDestinationUris: pulumi.StringArray{\n\t\t\t\t\tdest.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/extract\", url), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tSourceTable: \u0026bigquery.JobExtractSourceTableArgs{\n\t\t\t\t\tProjectId: source_one.Project,\n\t\t\t\t\tDatasetId: source_one.DatasetId,\n\t\t\t\t\tTableId: source_one.TableId,\n\t\t\t\t},\n\t\t\t\tDestinationFormat: pulumi.String(\"NEWLINE_DELIMITED_JSON\"),\n\t\t\t\tCompression: pulumi.String(\"GZIP\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobExtractArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobExtractSourceTableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source_oneDataset = new Dataset(\"source-oneDataset\", DatasetArgs.builder()\n .datasetId(\"job_extract_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var source_one = new Table(\"source-one\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(source_oneDataset.datasetId())\n .tableId(\"job_extract_table\")\n .schema(\"\"\"\n[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"job_extract_bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_extract\")\n .extract(JobExtractArgs.builder()\n .destinationUris(dest.url().applyValue(url -\u003e String.format(\"%s/extract\", url)))\n .sourceTable(JobExtractSourceTableArgs.builder()\n .projectId(source_one.project())\n .datasetId(source_one.datasetId())\n .tableId(source_one.tableId())\n .build())\n .destinationFormat(\"NEWLINE_DELIMITED_JSON\")\n .compression(\"GZIP\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-one:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"source-oneDataset\"].datasetId}\n tableId: job_extract_table\n schema: |\n [\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n ]\n source-oneDataset:\n type: gcp:bigquery:Dataset\n name: source-one\n properties:\n datasetId: job_extract_dataset\n friendlyName: test\n description: This is a test description\n location: US\n dest:\n type: gcp:storage:Bucket\n properties:\n name: job_extract_bucket\n location: US\n forceDestroy: true\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_extract\n extract:\n destinationUris:\n - ${dest.url}/extract\n sourceTable:\n projectId: ${[\"source-one\"].project}\n datasetId: ${[\"source-one\"].datasetId}\n tableId: ${[\"source-one\"].tableId}\n destinationFormat: NEWLINE_DELIMITED_JSON\n compression: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/jobs/{{job_id}}/location/{{location}}`\n\n* `projects/{{project}}/jobs/{{job_id}}`\n\n* `{{project}}/{{job_id}}/{{location}}`\n\n* `{{job_id}}/{{location}}`\n\n* `{{project}}/{{job_id}}`\n\n* `{{job_id}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default projects/{{project}}/jobs/{{job_id}}/location/{{location}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default projects/{{project}}/jobs/{{job_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{project}}/{{job_id}}/{{location}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{job_id}}/{{location}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{project}}/{{job_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{job_id}}\n```\n\n", + "description": "Jobs are actions that BigQuery runs on your behalf to load data, export data, query data, or copy data.\nOnce a BigQuery job is created, it cannot be changed or deleted.\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs)\n* How-to Guides\n * [BigQuery Jobs Intro](https://cloud.google.com/bigquery/docs/jobs-overview)\n\n## Example Usage\n\n### Bigquery Job Query\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_query_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_query_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_query\",\n labels: {\n \"example-label\": \"example-value\",\n },\n query: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n destinationTable: {\n projectId: foo.project,\n datasetId: foo.datasetId,\n tableId: foo.tableId,\n },\n allowLargeResults: true,\n flattenResults: true,\n scriptOptions: {\n keyResultStatement: \"LAST\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_query_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_query_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_query\",\n labels={\n \"example-label\": \"example-value\",\n },\n query={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"destination_table\": {\n \"project_id\": foo.project,\n \"dataset_id\": foo.dataset_id,\n \"table_id\": foo.table_id,\n },\n \"allow_large_results\": True,\n \"flatten_results\": True,\n \"script_options\": {\n \"key_result_statement\": \"LAST\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_query_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_query_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_query\",\n Labels = \n {\n { \"example-label\", \"example-value\" },\n },\n Query = new Gcp.BigQuery.Inputs.JobQueryArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n DestinationTable = new Gcp.BigQuery.Inputs.JobQueryDestinationTableArgs\n {\n ProjectId = foo.Project,\n DatasetId = foo.DatasetId,\n TableId = foo.TableId,\n },\n AllowLargeResults = true,\n FlattenResults = true,\n ScriptOptions = new Gcp.BigQuery.Inputs.JobQueryScriptOptionsArgs\n {\n KeyResultStatement = \"LAST\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_query_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_query_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_query\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example-label\": pulumi.String(\"example-value\"),\n\t\t\t},\n\t\t\tQuery: \u0026bigquery.JobQueryArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tDestinationTable: \u0026bigquery.JobQueryDestinationTableArgs{\n\t\t\t\t\tProjectId: foo.Project,\n\t\t\t\t\tDatasetId: foo.DatasetId,\n\t\t\t\t\tTableId: foo.TableId,\n\t\t\t\t},\n\t\t\t\tAllowLargeResults: pulumi.Bool(true),\n\t\t\t\tFlattenResults: pulumi.Bool(true),\n\t\t\t\tScriptOptions: \u0026bigquery.JobQueryScriptOptionsArgs{\n\t\t\t\t\tKeyResultStatement: pulumi.String(\"LAST\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryScriptOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bar = new Dataset(\"bar\", DatasetArgs.builder()\n .datasetId(\"job_query_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_query_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_query\")\n .labels(Map.of(\"example-label\", \"example-value\"))\n .query(JobQueryArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .destinationTable(JobQueryDestinationTableArgs.builder()\n .projectId(foo.project())\n .datasetId(foo.datasetId())\n .tableId(foo.tableId())\n .build())\n .allowLargeResults(true)\n .flattenResults(true)\n .scriptOptions(JobQueryScriptOptionsArgs.builder()\n .keyResultStatement(\"LAST\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_query_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_query_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_query\n labels:\n example-label: example-value\n query:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n destinationTable:\n projectId: ${foo.project}\n datasetId: ${foo.datasetId}\n tableId: ${foo.tableId}\n allowLargeResults: true\n flattenResults: true\n scriptOptions:\n keyResultStatement: LAST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Query Table Reference\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_query_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_query_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_query\",\n labels: {\n \"example-label\": \"example-value\",\n },\n query: {\n query: \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n destinationTable: {\n tableId: foo.id,\n },\n defaultDataset: {\n datasetId: bar.id,\n },\n allowLargeResults: true,\n flattenResults: true,\n scriptOptions: {\n keyResultStatement: \"LAST\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_query_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_query_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_query\",\n labels={\n \"example-label\": \"example-value\",\n },\n query={\n \"query\": \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n \"destination_table\": {\n \"table_id\": foo.id,\n },\n \"default_dataset\": {\n \"dataset_id\": bar.id,\n },\n \"allow_large_results\": True,\n \"flatten_results\": True,\n \"script_options\": {\n \"key_result_statement\": \"LAST\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_query_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_query_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_query\",\n Labels = \n {\n { \"example-label\", \"example-value\" },\n },\n Query = new Gcp.BigQuery.Inputs.JobQueryArgs\n {\n Query = \"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\",\n DestinationTable = new Gcp.BigQuery.Inputs.JobQueryDestinationTableArgs\n {\n TableId = foo.Id,\n },\n DefaultDataset = new Gcp.BigQuery.Inputs.JobQueryDefaultDatasetArgs\n {\n DatasetId = bar.Id,\n },\n AllowLargeResults = true,\n FlattenResults = true,\n ScriptOptions = new Gcp.BigQuery.Inputs.JobQueryScriptOptionsArgs\n {\n KeyResultStatement = \"LAST\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_query_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_query_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_query\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"example-label\": pulumi.String(\"example-value\"),\n\t\t\t},\n\t\t\tQuery: \u0026bigquery.JobQueryArgs{\n\t\t\t\tQuery: pulumi.String(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\"),\n\t\t\t\tDestinationTable: \u0026bigquery.JobQueryDestinationTableArgs{\n\t\t\t\t\tTableId: foo.ID(),\n\t\t\t\t},\n\t\t\t\tDefaultDataset: \u0026bigquery.JobQueryDefaultDatasetArgs{\n\t\t\t\t\tDatasetId: bar.ID(),\n\t\t\t\t},\n\t\t\t\tAllowLargeResults: pulumi.Bool(true),\n\t\t\t\tFlattenResults: pulumi.Bool(true),\n\t\t\t\tScriptOptions: \u0026bigquery.JobQueryScriptOptionsArgs{\n\t\t\t\t\tKeyResultStatement: pulumi.String(\"LAST\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryDefaultDatasetArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobQueryScriptOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bar = new Dataset(\"bar\", DatasetArgs.builder()\n .datasetId(\"job_query_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_query_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_query\")\n .labels(Map.of(\"example-label\", \"example-value\"))\n .query(JobQueryArgs.builder()\n .query(\"SELECT state FROM [lookerdata:cdc.project_tycho_reports]\")\n .destinationTable(JobQueryDestinationTableArgs.builder()\n .tableId(foo.id())\n .build())\n .defaultDataset(JobQueryDefaultDatasetArgs.builder()\n .datasetId(bar.id())\n .build())\n .allowLargeResults(true)\n .flattenResults(true)\n .scriptOptions(JobQueryScriptOptionsArgs.builder()\n .keyResultStatement(\"LAST\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_query_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_query_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_query\n labels:\n example-label: example-value\n query:\n query: SELECT state FROM [lookerdata:cdc.project_tycho_reports]\n destinationTable:\n tableId: ${foo.id}\n defaultDataset:\n datasetId: ${bar.id}\n allowLargeResults: true\n flattenResults: true\n scriptOptions:\n keyResultStatement: LAST\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Load\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_load_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_load\",\n labels: {\n my_job: \"load\",\n },\n load: {\n sourceUris: [\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"],\n destinationTable: {\n projectId: foo.project,\n datasetId: foo.datasetId,\n tableId: foo.tableId,\n },\n skipLeadingRows: 1,\n schemaUpdateOptions: [\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n writeDisposition: \"WRITE_APPEND\",\n autodetect: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_load_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_load\",\n labels={\n \"my_job\": \"load\",\n },\n load={\n \"source_uris\": [\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"],\n \"destination_table\": {\n \"project_id\": foo.project,\n \"dataset_id\": foo.dataset_id,\n \"table_id\": foo.table_id,\n },\n \"skip_leading_rows\": 1,\n \"schema_update_options\": [\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n \"write_disposition\": \"WRITE_APPEND\",\n \"autodetect\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_load_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_load\",\n Labels = \n {\n { \"my_job\", \"load\" },\n },\n Load = new Gcp.BigQuery.Inputs.JobLoadArgs\n {\n SourceUris = new[]\n {\n \"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\",\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobLoadDestinationTableArgs\n {\n ProjectId = foo.Project,\n DatasetId = foo.DatasetId,\n TableId = foo.TableId,\n },\n SkipLeadingRows = 1,\n SchemaUpdateOptions = new[]\n {\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n },\n WriteDisposition = \"WRITE_APPEND\",\n Autodetect = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_load_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_load\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_job\": pulumi.String(\"load\"),\n\t\t\t},\n\t\t\tLoad: \u0026bigquery.JobLoadArgs{\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\"),\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobLoadDestinationTableArgs{\n\t\t\t\t\tProjectId: foo.Project,\n\t\t\t\t\tDatasetId: foo.DatasetId,\n\t\t\t\t\tTableId: foo.TableId,\n\t\t\t\t},\n\t\t\t\tSkipLeadingRows: pulumi.Int(1),\n\t\t\t\tSchemaUpdateOptions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_RELAXATION\"),\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_ADDITION\"),\n\t\t\t\t},\n\t\t\t\tWriteDisposition: pulumi.String(\"WRITE_APPEND\"),\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadDestinationTableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var bar = new Dataset(\"bar\", DatasetArgs.builder()\n .datasetId(\"job_load_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_load_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_load\")\n .labels(Map.of(\"my_job\", \"load\"))\n .load(JobLoadArgs.builder()\n .sourceUris(\"gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\")\n .destinationTable(JobLoadDestinationTableArgs.builder()\n .projectId(foo.project())\n .datasetId(foo.datasetId())\n .tableId(foo.tableId())\n .build())\n .skipLeadingRows(1)\n .schemaUpdateOptions( \n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\")\n .writeDisposition(\"WRITE_APPEND\")\n .autodetect(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_load_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_load\n labels:\n my_job: load\n load:\n sourceUris:\n - gs://cloud-samples-data/bigquery/us-states/us-states-by-date.csv\n destinationTable:\n projectId: ${foo.project}\n datasetId: ${foo.datasetId}\n tableId: ${foo.tableId}\n skipLeadingRows: 1\n schemaUpdateOptions:\n - ALLOW_FIELD_RELAXATION\n - ALLOW_FIELD_ADDITION\n writeDisposition: WRITE_APPEND\n autodetect: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Load Geojson\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = \"my-project-name\";\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n name: `${project}-bq-geojson`,\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"geojson-data.jsonl\",\n bucket: bucket.name,\n content: `{\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n`,\n});\nconst bar = new gcp.bigquery.Dataset(\"bar\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst foo = new gcp.bigquery.Table(\"foo\", {\n deletionProtection: false,\n datasetId: bar.datasetId,\n tableId: \"job_load_table\",\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_load\",\n labels: {\n my_job: \"load\",\n },\n load: {\n sourceUris: [pulumi.interpolate`gs://${object.bucket}/${object.name}`],\n destinationTable: {\n projectId: foo.project,\n datasetId: foo.datasetId,\n tableId: foo.tableId,\n },\n writeDisposition: \"WRITE_TRUNCATE\",\n autodetect: true,\n sourceFormat: \"NEWLINE_DELIMITED_JSON\",\n jsonExtension: \"GEOJSON\",\n },\n}, {\n dependsOn: [object],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = \"my-project-name\"\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project}-bq-geojson\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"geojson-data.jsonl\",\n bucket=bucket.name,\n content=\"\"\"{\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n\"\"\")\nbar = gcp.bigquery.Dataset(\"bar\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nfoo = gcp.bigquery.Table(\"foo\",\n deletion_protection=False,\n dataset_id=bar.dataset_id,\n table_id=\"job_load_table\")\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_load\",\n labels={\n \"my_job\": \"load\",\n },\n load={\n \"source_uris\": [pulumi.Output.all(\n bucket=object.bucket,\n name=object.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucket']}/{resolved_outputs['name']}\")\n],\n \"destination_table\": {\n \"project_id\": foo.project,\n \"dataset_id\": foo.dataset_id,\n \"table_id\": foo.table_id,\n },\n \"write_disposition\": \"WRITE_TRUNCATE\",\n \"autodetect\": True,\n \"source_format\": \"NEWLINE_DELIMITED_JSON\",\n \"json_extension\": \"GEOJSON\",\n },\n opts = pulumi.ResourceOptions(depends_on=[object]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = \"my-project-name\";\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project}-bq-geojson\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"geojson-data.jsonl\",\n Bucket = bucket.Name,\n Content = @\"{\"\"type\"\":\"\"Feature\"\",\"\"properties\"\":{\"\"continent\"\":\"\"Europe\"\",\"\"region\"\":\"\"Scandinavia\"\"},\"\"geometry\"\":{\"\"type\"\":\"\"Polygon\"\",\"\"coordinates\"\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"\"type\"\":\"\"Feature\"\",\"\"properties\"\":{\"\"continent\"\":\"\"Africa\"\",\"\"region\"\":\"\"West Africa\"\"},\"\"geometry\"\":{\"\"type\"\":\"\"Polygon\"\",\"\"coordinates\"\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n\",\n });\n\n var bar = new Gcp.BigQuery.Dataset(\"bar\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var foo = new Gcp.BigQuery.Table(\"foo\", new()\n {\n DeletionProtection = false,\n DatasetId = bar.DatasetId,\n TableId = \"job_load_table\",\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_load\",\n Labels = \n {\n { \"my_job\", \"load\" },\n },\n Load = new Gcp.BigQuery.Inputs.JobLoadArgs\n {\n SourceUris = new[]\n {\n Output.Tuple(@object.Bucket, @object.Name).Apply(values =\u003e\n {\n var bucket = values.Item1;\n var name = values.Item2;\n return $\"gs://{bucket}/{name}\";\n }),\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobLoadDestinationTableArgs\n {\n ProjectId = foo.Project,\n DatasetId = foo.DatasetId,\n TableId = foo.TableId,\n },\n WriteDisposition = \"WRITE_TRUNCATE\",\n Autodetect = true,\n SourceFormat = \"NEWLINE_DELIMITED_JSON\",\n JsonExtension = \"GEOJSON\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @object,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject := \"my-project-name\"\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-bq-geojson\", project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"geojson-data.jsonl\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tContent: pulumi.String(\"{\\\"type\\\":\\\"Feature\\\",\\\"properties\\\":{\\\"continent\\\":\\\"Europe\\\",\\\"region\\\":\\\"Scandinavia\\\"},\\\"geometry\\\":{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\\n{\\\"type\\\":\\\"Feature\\\",\\\"properties\\\":{\\\"continent\\\":\\\"Africa\\\",\\\"region\\\":\\\"West Africa\\\"},\\\"geometry\\\":{\\\"type\\\":\\\"Polygon\\\",\\\"coordinates\\\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\\n\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbar, err := bigquery.NewDataset(ctx, \"bar\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_load_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfoo, err := bigquery.NewTable(ctx, \"foo\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: bar.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_load\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_job\": pulumi.String(\"load\"),\n\t\t\t},\n\t\t\tLoad: \u0026bigquery.JobLoadArgs{\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.All(object.Bucket, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucket := _args[0].(string)\n\t\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucket, name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobLoadDestinationTableArgs{\n\t\t\t\t\tProjectId: foo.Project,\n\t\t\t\t\tDatasetId: foo.DatasetId,\n\t\t\t\t\tTableId: foo.TableId,\n\t\t\t\t},\n\t\t\t\tWriteDisposition: pulumi.String(\"WRITE_TRUNCATE\"),\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t\tSourceFormat: pulumi.String(\"NEWLINE_DELIMITED_JSON\"),\n\t\t\t\tJsonExtension: pulumi.String(\"GEOJSON\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tobject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadDestinationTableArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = \"my-project-name\";\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-bq-geojson\", project))\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"geojson-data.jsonl\")\n .bucket(bucket.name())\n .content(\"\"\"\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n{\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n \"\"\")\n .build());\n\n var bar = new Dataset(\"bar\", DatasetArgs.builder()\n .datasetId(\"job_load_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var foo = new Table(\"foo\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(bar.datasetId())\n .tableId(\"job_load_table\")\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_load\")\n .labels(Map.of(\"my_job\", \"load\"))\n .load(JobLoadArgs.builder()\n .sourceUris(Output.tuple(object.bucket(), object.name()).applyValue(values -\u003e {\n var bucket = values.t1;\n var name = values.t2;\n return String.format(\"gs://%s/%s\", bucket,name);\n }))\n .destinationTable(JobLoadDestinationTableArgs.builder()\n .projectId(foo.project())\n .datasetId(foo.datasetId())\n .tableId(foo.tableId())\n .build())\n .writeDisposition(\"WRITE_TRUNCATE\")\n .autodetect(true)\n .sourceFormat(\"NEWLINE_DELIMITED_JSON\")\n .jsonExtension(\"GEOJSON\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(object)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project}-bq-geojson\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: geojson-data.jsonl\n bucket: ${bucket.name}\n content: |\n {\"type\":\"Feature\",\"properties\":{\"continent\":\"Europe\",\"region\":\"Scandinavia\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-30.94,53.33],[33.05,53.33],[33.05,71.86],[-30.94,71.86],[-30.94,53.33]]]}}\n {\"type\":\"Feature\",\"properties\":{\"continent\":\"Africa\",\"region\":\"West Africa\"},\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-23.91,0],[11.95,0],[11.95,18.98],[-23.91,18.98],[-23.91,0]]]}}\n foo:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${bar.datasetId}\n tableId: job_load_table\n bar:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_load\n labels:\n my_job: load\n load:\n sourceUris:\n - gs://${object.bucket}/${object.name}\n destinationTable:\n projectId: ${foo.project}\n datasetId: ${foo.datasetId}\n tableId: ${foo.tableId}\n writeDisposition: WRITE_TRUNCATE\n autodetect: true\n sourceFormat: NEWLINE_DELIMITED_JSON\n jsonExtension: GEOJSON\n options:\n dependsOn:\n - ${object}\nvariables:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Load Parquet\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst test = new gcp.storage.Bucket(\"test\", {\n name: \"job_load_bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst testBucketObject = new gcp.storage.BucketObject(\"test\", {\n name: \"job_load_bucket_object\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n bucket: test.name,\n});\nconst testDataset = new gcp.bigquery.Dataset(\"test\", {\n datasetId: \"job_load_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst testTable = new gcp.bigquery.Table(\"test\", {\n deletionProtection: false,\n tableId: \"job_load_table\",\n datasetId: testDataset.datasetId,\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_load\",\n labels: {\n my_job: \"load\",\n },\n load: {\n sourceUris: [pulumi.interpolate`gs://${testBucketObject.bucket}/${testBucketObject.name}`],\n destinationTable: {\n projectId: testTable.project,\n datasetId: testTable.datasetId,\n tableId: testTable.tableId,\n },\n schemaUpdateOptions: [\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n writeDisposition: \"WRITE_APPEND\",\n sourceFormat: \"PARQUET\",\n autodetect: true,\n parquetOptions: {\n enumAsString: true,\n enableListInference: true,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ntest = gcp.storage.Bucket(\"test\",\n name=\"job_load_bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\ntest_bucket_object = gcp.storage.BucketObject(\"test\",\n name=\"job_load_bucket_object\",\n source=pulumi.FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n bucket=test.name)\ntest_dataset = gcp.bigquery.Dataset(\"test\",\n dataset_id=\"job_load_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntest_table = gcp.bigquery.Table(\"test\",\n deletion_protection=False,\n table_id=\"job_load_table\",\n dataset_id=test_dataset.dataset_id)\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_load\",\n labels={\n \"my_job\": \"load\",\n },\n load={\n \"source_uris\": [pulumi.Output.all(\n bucket=test_bucket_object.bucket,\n name=test_bucket_object.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucket']}/{resolved_outputs['name']}\")\n],\n \"destination_table\": {\n \"project_id\": test_table.project,\n \"dataset_id\": test_table.dataset_id,\n \"table_id\": test_table.table_id,\n },\n \"schema_update_options\": [\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n ],\n \"write_disposition\": \"WRITE_APPEND\",\n \"source_format\": \"PARQUET\",\n \"autodetect\": True,\n \"parquet_options\": {\n \"enum_as_string\": True,\n \"enable_list_inference\": True,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var test = new Gcp.Storage.Bucket(\"test\", new()\n {\n Name = \"job_load_bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var testBucketObject = new Gcp.Storage.BucketObject(\"test\", new()\n {\n Name = \"job_load_bucket_object\",\n Source = new FileAsset(\"./test-fixtures/test.parquet.gzip\"),\n Bucket = test.Name,\n });\n\n var testDataset = new Gcp.BigQuery.Dataset(\"test\", new()\n {\n DatasetId = \"job_load_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var testTable = new Gcp.BigQuery.Table(\"test\", new()\n {\n DeletionProtection = false,\n TableId = \"job_load_table\",\n DatasetId = testDataset.DatasetId,\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_load\",\n Labels = \n {\n { \"my_job\", \"load\" },\n },\n Load = new Gcp.BigQuery.Inputs.JobLoadArgs\n {\n SourceUris = new[]\n {\n Output.Tuple(testBucketObject.Bucket, testBucketObject.Name).Apply(values =\u003e\n {\n var bucket = values.Item1;\n var name = values.Item2;\n return $\"gs://{bucket}/{name}\";\n }),\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobLoadDestinationTableArgs\n {\n ProjectId = testTable.Project,\n DatasetId = testTable.DatasetId,\n TableId = testTable.TableId,\n },\n SchemaUpdateOptions = new[]\n {\n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\",\n },\n WriteDisposition = \"WRITE_APPEND\",\n SourceFormat = \"PARQUET\",\n Autodetect = true,\n ParquetOptions = new Gcp.BigQuery.Inputs.JobLoadParquetOptionsArgs\n {\n EnumAsString = true,\n EnableListInference = true,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\ttest, err := storage.NewBucket(ctx, \"test\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"job_load_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestBucketObject, err := storage.NewBucketObject(ctx, \"test\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"job_load_bucket_object\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/test.parquet.gzip\"),\n\t\t\tBucket: test.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestDataset, err := bigquery.NewDataset(ctx, \"test\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_load_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttestTable, err := bigquery.NewTable(ctx, \"test\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tTableId: pulumi.String(\"job_load_table\"),\n\t\t\tDatasetId: testDataset.DatasetId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_load\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_job\": pulumi.String(\"load\"),\n\t\t\t},\n\t\t\tLoad: \u0026bigquery.JobLoadArgs{\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.All(testBucketObject.Bucket, testBucketObject.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tbucket := _args[0].(string)\n\t\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucket, name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobLoadDestinationTableArgs{\n\t\t\t\t\tProjectId: testTable.Project,\n\t\t\t\t\tDatasetId: testTable.DatasetId,\n\t\t\t\t\tTableId: testTable.TableId,\n\t\t\t\t},\n\t\t\t\tSchemaUpdateOptions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_RELAXATION\"),\n\t\t\t\t\tpulumi.String(\"ALLOW_FIELD_ADDITION\"),\n\t\t\t\t},\n\t\t\t\tWriteDisposition: pulumi.String(\"WRITE_APPEND\"),\n\t\t\t\tSourceFormat: pulumi.String(\"PARQUET\"),\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t\tParquetOptions: \u0026bigquery.JobLoadParquetOptionsArgs{\n\t\t\t\t\tEnumAsString: pulumi.Bool(true),\n\t\t\t\t\tEnableListInference: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobLoadParquetOptionsArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var test = new Bucket(\"test\", BucketArgs.builder()\n .name(\"job_load_bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var testBucketObject = new BucketObject(\"testBucketObject\", BucketObjectArgs.builder()\n .name(\"job_load_bucket_object\")\n .source(new FileAsset(\"./test-fixtures/test.parquet.gzip\"))\n .bucket(test.name())\n .build());\n\n var testDataset = new Dataset(\"testDataset\", DatasetArgs.builder()\n .datasetId(\"job_load_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var testTable = new Table(\"testTable\", TableArgs.builder()\n .deletionProtection(false)\n .tableId(\"job_load_table\")\n .datasetId(testDataset.datasetId())\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_load\")\n .labels(Map.of(\"my_job\", \"load\"))\n .load(JobLoadArgs.builder()\n .sourceUris(Output.tuple(testBucketObject.bucket(), testBucketObject.name()).applyValue(values -\u003e {\n var bucket = values.t1;\n var name = values.t2;\n return String.format(\"gs://%s/%s\", bucket,name);\n }))\n .destinationTable(JobLoadDestinationTableArgs.builder()\n .projectId(testTable.project())\n .datasetId(testTable.datasetId())\n .tableId(testTable.tableId())\n .build())\n .schemaUpdateOptions( \n \"ALLOW_FIELD_RELAXATION\",\n \"ALLOW_FIELD_ADDITION\")\n .writeDisposition(\"WRITE_APPEND\")\n .sourceFormat(\"PARQUET\")\n .autodetect(true)\n .parquetOptions(JobLoadParquetOptionsArgs.builder()\n .enumAsString(true)\n .enableListInference(true)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n test:\n type: gcp:storage:Bucket\n properties:\n name: job_load_bucket\n location: US\n uniformBucketLevelAccess: true\n testBucketObject:\n type: gcp:storage:BucketObject\n name: test\n properties:\n name: job_load_bucket_object\n source:\n fn::FileAsset: ./test-fixtures/test.parquet.gzip\n bucket: ${test.name}\n testDataset:\n type: gcp:bigquery:Dataset\n name: test\n properties:\n datasetId: job_load_dataset\n friendlyName: test\n description: This is a test description\n location: US\n testTable:\n type: gcp:bigquery:Table\n name: test\n properties:\n deletionProtection: false\n tableId: job_load_table\n datasetId: ${testDataset.datasetId}\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_load\n labels:\n my_job: load\n load:\n sourceUris:\n - gs://${testBucketObject.bucket}/${testBucketObject.name}\n destinationTable:\n projectId: ${testTable.project}\n datasetId: ${testTable.datasetId}\n tableId: ${testTable.tableId}\n schemaUpdateOptions:\n - ALLOW_FIELD_RELAXATION\n - ALLOW_FIELD_ADDITION\n writeDisposition: WRITE_APPEND\n sourceFormat: PARQUET\n autodetect: true\n parquetOptions:\n enumAsString: true\n enableListInference: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Copy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst count = 2;\nconst sourceDataset: gcp.bigquery.Dataset[] = [];\nfor (const range = {value: 0}; range.value \u003c count; range.value++) {\n sourceDataset.push(new gcp.bigquery.Dataset(`source-${range.value}`, {\n datasetId: `job_copy_${range.value}_dataset`,\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n }));\n}\nconst source: gcp.bigquery.Table[] = [];\nfor (const range = {value: 0}; range.value \u003c count; range.value++) {\n source.push(new gcp.bigquery.Table(`source-${range.value}`, {\n datasetId: sourceDataset[range.value].datasetId,\n tableId: `job_copy_${range.value}_table`,\n deletionProtection: false,\n schema: `[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n }));\n}\nconst destDataset = new gcp.bigquery.Dataset(\"dest\", {\n datasetId: \"job_copy_dest_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst project = gcp.organizations.getProject({\n projectId: \"my-project-name\",\n});\nconst encryptRole = new gcp.kms.CryptoKeyIAMMember(\"encrypt_role\", {\n cryptoKeyId: \"example-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:bq-${project.number}@bigquery-encryption.iam.gserviceaccount.com`),\n});\nconst dest = new gcp.bigquery.Table(\"dest\", {\n deletionProtection: false,\n datasetId: destDataset.datasetId,\n tableId: \"job_copy_dest_table\",\n schema: `[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n encryptionConfiguration: {\n kmsKeyName: \"example-key\",\n },\n}, {\n dependsOn: [encryptRole],\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_copy\",\n copy: {\n sourceTables: [\n {\n projectId: source[0].project,\n datasetId: source[0].datasetId,\n tableId: source[0].tableId,\n },\n {\n projectId: source[1].project,\n datasetId: source[1].datasetId,\n tableId: source[1].tableId,\n },\n ],\n destinationTable: {\n projectId: dest.project,\n datasetId: dest.datasetId,\n tableId: dest.tableId,\n },\n destinationEncryptionConfiguration: {\n kmsKeyName: \"example-key\",\n },\n },\n}, {\n dependsOn: [encryptRole],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncount = 2\nsource_dataset = []\nfor range in [{\"value\": i} for i in range(0, count)]:\n source_dataset.append(gcp.bigquery.Dataset(f\"source-{range['value']}\",\n dataset_id=f\"job_copy_{range['value']}_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\"))\nsource = []\nfor range in [{\"value\": i} for i in range(0, count)]:\n source.append(gcp.bigquery.Table(f\"source-{range['value']}\",\n dataset_id=source_dataset[range[\"value\"]].dataset_id,\n table_id=f\"job_copy_{range['value']}_table\",\n deletion_protection=False,\n schema=\"\"\"[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\"))\ndest_dataset = gcp.bigquery.Dataset(\"dest\",\n dataset_id=\"job_copy_dest_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nproject = gcp.organizations.get_project(project_id=\"my-project-name\")\nencrypt_role = gcp.kms.CryptoKeyIAMMember(\"encrypt_role\",\n crypto_key_id=\"example-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:bq-{project.number}@bigquery-encryption.iam.gserviceaccount.com\")\ndest = gcp.bigquery.Table(\"dest\",\n deletion_protection=False,\n dataset_id=dest_dataset.dataset_id,\n table_id=\"job_copy_dest_table\",\n schema=\"\"\"[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\",\n encryption_configuration={\n \"kms_key_name\": \"example-key\",\n },\n opts = pulumi.ResourceOptions(depends_on=[encrypt_role]))\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_copy\",\n copy={\n \"source_tables\": [\n {\n \"project_id\": source[0].project,\n \"dataset_id\": source[0].dataset_id,\n \"table_id\": source[0].table_id,\n },\n {\n \"project_id\": source[1].project,\n \"dataset_id\": source[1].dataset_id,\n \"table_id\": source[1].table_id,\n },\n ],\n \"destination_table\": {\n \"project_id\": dest.project,\n \"dataset_id\": dest.dataset_id,\n \"table_id\": dest.table_id,\n },\n \"destination_encryption_configuration\": {\n \"kms_key_name\": \"example-key\",\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[encrypt_role]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var count = 2;\n\n var sourceDataset = new List\u003cGcp.BigQuery.Dataset\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c count; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n sourceDataset.Add(new Gcp.BigQuery.Dataset($\"source-{range.Value}\", new()\n {\n DatasetId = $\"job_copy_{range.Value}_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n }));\n }\n var source = new List\u003cGcp.BigQuery.Table\u003e();\n for (var rangeIndex = 0; rangeIndex \u003c count; rangeIndex++)\n {\n var range = new { Value = rangeIndex };\n source.Add(new Gcp.BigQuery.Table($\"source-{range.Value}\", new()\n {\n DatasetId = sourceDataset[range.Value].DatasetId,\n TableId = $\"job_copy_{range.Value}_table\",\n DeletionProtection = false,\n Schema = @\"[\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"post_abbr\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"date\"\",\n \"\"type\"\": \"\"DATE\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n }));\n }\n var destDataset = new Gcp.BigQuery.Dataset(\"dest\", new()\n {\n DatasetId = \"job_copy_dest_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = \"my-project-name\",\n });\n\n var encryptRole = new Gcp.Kms.CryptoKeyIAMMember(\"encrypt_role\", new()\n {\n CryptoKeyId = \"example-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:bq-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@bigquery-encryption.iam.gserviceaccount.com\",\n });\n\n var dest = new Gcp.BigQuery.Table(\"dest\", new()\n {\n DeletionProtection = false,\n DatasetId = destDataset.DatasetId,\n TableId = \"job_copy_dest_table\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"post_abbr\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"date\"\",\n \"\"type\"\": \"\"DATE\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n EncryptionConfiguration = new Gcp.BigQuery.Inputs.TableEncryptionConfigurationArgs\n {\n KmsKeyName = \"example-key\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n encryptRole,\n },\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_copy\",\n Copy = new Gcp.BigQuery.Inputs.JobCopyArgs\n {\n SourceTables = new[]\n {\n new Gcp.BigQuery.Inputs.JobCopySourceTableArgs\n {\n ProjectId = source[0].Project,\n DatasetId = source[0].DatasetId,\n TableId = source[0].TableId,\n },\n new Gcp.BigQuery.Inputs.JobCopySourceTableArgs\n {\n ProjectId = source[1].Project,\n DatasetId = source[1].DatasetId,\n TableId = source[1].TableId,\n },\n },\n DestinationTable = new Gcp.BigQuery.Inputs.JobCopyDestinationTableArgs\n {\n ProjectId = dest.Project,\n DatasetId = dest.DatasetId,\n TableId = dest.TableId,\n },\n DestinationEncryptionConfiguration = new Gcp.BigQuery.Inputs.JobCopyDestinationEncryptionConfigurationArgs\n {\n KmsKeyName = \"example-key\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n encryptRole,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcount := 2\n\t\tvar sourceDataset []*bigquery.Dataset\n\t\tfor index := 0; index \u003c count; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := bigquery.NewDataset(ctx, fmt.Sprintf(\"source-%v\", key0), \u0026bigquery.DatasetArgs{\n\t\t\t\tDatasetId: pulumi.Sprintf(\"job_copy_%v_dataset\", val0),\n\t\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tsourceDataset = append(sourceDataset, __res)\n\t\t}\n\t\tvar source []*bigquery.Table\n\t\tfor index := 0; index \u003c count; index++ {\n\t\t\tkey0 := index\n\t\t\tval0 := index\n\t\t\t__res, err := bigquery.NewTable(ctx, fmt.Sprintf(\"source-%v\", key0), \u0026bigquery.TableArgs{\n\t\t\t\tDatasetId: sourceDataset[val0].DatasetId,\n\t\t\t\tTableId: pulumi.Sprintf(\"job_copy_%v_table\", val0),\n\t\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t\t})\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tsource = append(source, __res)\n\t\t}\n\t\tdestDataset, err := bigquery.NewDataset(ctx, \"dest\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_copy_dest_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{\n\t\t\tProjectId: pulumi.StringRef(\"my-project-name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tencryptRole, err := kms.NewCryptoKeyIAMMember(ctx, \"encrypt_role\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"example-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:bq-%v@bigquery-encryption.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdest, err := bigquery.NewTable(ctx, \"dest\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: destDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_copy_dest_table\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t\tEncryptionConfiguration: \u0026bigquery.TableEncryptionConfigurationArgs{\n\t\t\t\tKmsKeyName: pulumi.String(\"example-key\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tencryptRole,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_copy\"),\n\t\t\tCopy: \u0026bigquery.JobCopyArgs{\n\t\t\t\tSourceTables: bigquery.JobCopySourceTableArray{\n\t\t\t\t\t\u0026bigquery.JobCopySourceTableArgs{\n\t\t\t\t\t\tProjectId: source[0].Project,\n\t\t\t\t\t\tDatasetId: source[0].DatasetId,\n\t\t\t\t\t\tTableId: source[0].TableId,\n\t\t\t\t\t},\n\t\t\t\t\t\u0026bigquery.JobCopySourceTableArgs{\n\t\t\t\t\t\tProjectId: source[1].Project,\n\t\t\t\t\t\tDatasetId: source[1].DatasetId,\n\t\t\t\t\t\tTableId: source[1].TableId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tDestinationTable: \u0026bigquery.JobCopyDestinationTableArgs{\n\t\t\t\t\tProjectId: dest.Project,\n\t\t\t\t\tDatasetId: dest.DatasetId,\n\t\t\t\t\tTableId: dest.TableId,\n\t\t\t\t},\n\t\t\t\tDestinationEncryptionConfiguration: \u0026bigquery.JobCopyDestinationEncryptionConfigurationArgs{\n\t\t\t\t\tKmsKeyName: pulumi.String(\"example-key\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tencryptRole,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableEncryptionConfigurationArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobCopyArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobCopyDestinationTableArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobCopyDestinationEncryptionConfigurationArgs;\nimport com.pulumi.codegen.internal.KeyedValue;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var count = 2;\n\n for (var i = 0; i \u003c count; i++) {\n new Dataset(\"sourceDataset-\" + i, DatasetArgs.builder()\n .datasetId(String.format(\"job_copy_%s_dataset\", range.value()))\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n \n}\n for (var i = 0; i \u003c count; i++) {\n new Table(\"source-\" + i, TableArgs.builder()\n .datasetId(sourceDataset[range.value()].datasetId())\n .tableId(String.format(\"job_copy_%s_table\", range.value()))\n .deletionProtection(false)\n .schema(\"\"\"\n[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n \n}\n var destDataset = new Dataset(\"destDataset\", DatasetArgs.builder()\n .datasetId(\"job_copy_dest_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n final var project = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(\"my-project-name\")\n .build());\n\n var encryptRole = new CryptoKeyIAMMember(\"encryptRole\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"example-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:bq-%s@bigquery-encryption.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var dest = new Table(\"dest\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(destDataset.datasetId())\n .tableId(\"job_copy_dest_table\")\n .schema(\"\"\"\n[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .encryptionConfiguration(TableEncryptionConfigurationArgs.builder()\n .kmsKeyName(\"example-key\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(encryptRole)\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_copy\")\n .copy(JobCopyArgs.builder()\n .sourceTables( \n JobCopySourceTableArgs.builder()\n .projectId(source[0].project())\n .datasetId(source[0].datasetId())\n .tableId(source[0].tableId())\n .build(),\n JobCopySourceTableArgs.builder()\n .projectId(source[1].project())\n .datasetId(source[1].datasetId())\n .tableId(source[1].tableId())\n .build())\n .destinationTable(JobCopyDestinationTableArgs.builder()\n .projectId(dest.project())\n .datasetId(dest.datasetId())\n .tableId(dest.tableId())\n .build())\n .destinationEncryptionConfiguration(JobCopyDestinationEncryptionConfigurationArgs.builder()\n .kmsKeyName(\"example-key\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(encryptRole)\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Bigquery Job Extract\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst source_oneDataset = new gcp.bigquery.Dataset(\"source-one\", {\n datasetId: \"job_extract_dataset\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst source_one = new gcp.bigquery.Table(\"source-one\", {\n deletionProtection: false,\n datasetId: source_oneDataset.datasetId,\n tableId: \"job_extract_table\",\n schema: `[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst dest = new gcp.storage.Bucket(\"dest\", {\n name: \"job_extract_bucket\",\n location: \"US\",\n forceDestroy: true,\n});\nconst job = new gcp.bigquery.Job(\"job\", {\n jobId: \"job_extract\",\n extract: {\n destinationUris: [pulumi.interpolate`${dest.url}/extract`],\n sourceTable: {\n projectId: source_one.project,\n datasetId: source_one.datasetId,\n tableId: source_one.tableId,\n },\n destinationFormat: \"NEWLINE_DELIMITED_JSON\",\n compression: \"GZIP\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsource_one_dataset = gcp.bigquery.Dataset(\"source-one\",\n dataset_id=\"job_extract_dataset\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsource_one = gcp.bigquery.Table(\"source-one\",\n deletion_protection=False,\n dataset_id=source_one_dataset.dataset_id,\n table_id=\"job_extract_table\",\n schema=\"\"\"[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\ndest = gcp.storage.Bucket(\"dest\",\n name=\"job_extract_bucket\",\n location=\"US\",\n force_destroy=True)\njob = gcp.bigquery.Job(\"job\",\n job_id=\"job_extract\",\n extract={\n \"destination_uris\": [dest.url.apply(lambda url: f\"{url}/extract\")],\n \"source_table\": {\n \"project_id\": source_one.project,\n \"dataset_id\": source_one.dataset_id,\n \"table_id\": source_one.table_id,\n },\n \"destination_format\": \"NEWLINE_DELIMITED_JSON\",\n \"compression\": \"GZIP\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var source_oneDataset = new Gcp.BigQuery.Dataset(\"source-one\", new()\n {\n DatasetId = \"job_extract_dataset\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var source_one = new Gcp.BigQuery.Table(\"source-one\", new()\n {\n DeletionProtection = false,\n DatasetId = source_oneDataset.DatasetId,\n TableId = \"job_extract_table\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"name\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"post_abbr\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"date\"\",\n \"\"type\"\": \"\"DATE\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var dest = new Gcp.Storage.Bucket(\"dest\", new()\n {\n Name = \"job_extract_bucket\",\n Location = \"US\",\n ForceDestroy = true,\n });\n\n var job = new Gcp.BigQuery.Job(\"job\", new()\n {\n JobId = \"job_extract\",\n Extract = new Gcp.BigQuery.Inputs.JobExtractArgs\n {\n DestinationUris = new[]\n {\n dest.Url.Apply(url =\u003e $\"{url}/extract\"),\n },\n SourceTable = new Gcp.BigQuery.Inputs.JobExtractSourceTableArgs\n {\n ProjectId = source_one.Project,\n DatasetId = source_one.DatasetId,\n TableId = source_one.TableId,\n },\n DestinationFormat = \"NEWLINE_DELIMITED_JSON\",\n Compression = \"GZIP\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsource_oneDataset, err := bigquery.NewDataset(ctx, \"source-one\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"job_extract_dataset\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsource_one, err := bigquery.NewTable(ctx, \"source-one\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: source_oneDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"job_extract_table\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdest, err := storage.NewBucket(ctx, \"dest\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"job_extract_bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewJob(ctx, \"job\", \u0026bigquery.JobArgs{\n\t\t\tJobId: pulumi.String(\"job_extract\"),\n\t\t\tExtract: \u0026bigquery.JobExtractArgs{\n\t\t\t\tDestinationUris: pulumi.StringArray{\n\t\t\t\t\tdest.Url.ApplyT(func(url string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"%v/extract\", url), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tSourceTable: \u0026bigquery.JobExtractSourceTableArgs{\n\t\t\t\t\tProjectId: source_one.Project,\n\t\t\t\t\tDatasetId: source_one.DatasetId,\n\t\t\t\t\tTableId: source_one.TableId,\n\t\t\t\t},\n\t\t\t\tDestinationFormat: pulumi.String(\"NEWLINE_DELIMITED_JSON\"),\n\t\t\t\tCompression: pulumi.String(\"GZIP\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.bigquery.Job;\nimport com.pulumi.gcp.bigquery.JobArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobExtractArgs;\nimport com.pulumi.gcp.bigquery.inputs.JobExtractSourceTableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var source_oneDataset = new Dataset(\"source-oneDataset\", DatasetArgs.builder()\n .datasetId(\"job_extract_dataset\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var source_one = new Table(\"source-one\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(source_oneDataset.datasetId())\n .tableId(\"job_extract_table\")\n .schema(\"\"\"\n[\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var dest = new Bucket(\"dest\", BucketArgs.builder()\n .name(\"job_extract_bucket\")\n .location(\"US\")\n .forceDestroy(true)\n .build());\n\n var job = new Job(\"job\", JobArgs.builder()\n .jobId(\"job_extract\")\n .extract(JobExtractArgs.builder()\n .destinationUris(dest.url().applyValue(url -\u003e String.format(\"%s/extract\", url)))\n .sourceTable(JobExtractSourceTableArgs.builder()\n .projectId(source_one.project())\n .datasetId(source_one.datasetId())\n .tableId(source_one.tableId())\n .build())\n .destinationFormat(\"NEWLINE_DELIMITED_JSON\")\n .compression(\"GZIP\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n source-one:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"source-oneDataset\"].datasetId}\n tableId: job_extract_table\n schema: |\n [\n {\n \"name\": \"name\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"post_abbr\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"date\",\n \"type\": \"DATE\",\n \"mode\": \"NULLABLE\"\n }\n ]\n source-oneDataset:\n type: gcp:bigquery:Dataset\n name: source-one\n properties:\n datasetId: job_extract_dataset\n friendlyName: test\n description: This is a test description\n location: US\n dest:\n type: gcp:storage:Bucket\n properties:\n name: job_extract_bucket\n location: US\n forceDestroy: true\n job:\n type: gcp:bigquery:Job\n properties:\n jobId: job_extract\n extract:\n destinationUris:\n - ${dest.url}/extract\n sourceTable:\n projectId: ${[\"source-one\"].project}\n datasetId: ${[\"source-one\"].datasetId}\n tableId: ${[\"source-one\"].tableId}\n destinationFormat: NEWLINE_DELIMITED_JSON\n compression: GZIP\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `projects/{{project}}/jobs/{{job_id}}/location/{{location}}`\n\n* `projects/{{project}}/jobs/{{job_id}}`\n\n* `{{project}}/{{job_id}}/{{location}}`\n\n* `{{job_id}}/{{location}}`\n\n* `{{project}}/{{job_id}}`\n\n* `{{job_id}}`\n\nWhen using the `pulumi import` command, Job can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default projects/{{project}}/jobs/{{job_id}}/location/{{location}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default projects/{{project}}/jobs/{{job_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{project}}/{{job_id}}/{{location}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{job_id}}/{{location}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{project}}/{{job_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/job:Job default {{job_id}}\n```\n\n", "properties": { "copy": { "$ref": "#/types/gcp:bigquery/JobCopy:JobCopy", @@ -148116,7 +148116,7 @@ } }, "gcp:bigquery/table:Table": { - "description": "Creates a table resource in a dataset for Google BigQuery. For more information see\n[the official documentation](https://cloud.google.com/bigquery/docs/) and\n[API](https://cloud.google.com/bigquery/docs/reference/rest/v2/tables).\n\n\u003e **Note**: On newer versions of the provider, you must explicitly set `deletion_protection=false`\n(and run `pulumi update` to write the field to state) in order to destroy an instance.\nIt is recommended to not set this field (or set it to true) until you're ready to destroy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.bigquery.Dataset(\"default\", {\n datasetId: \"foo\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n});\nconst defaultTable = new gcp.bigquery.Table(\"default\", {\n datasetId: _default.datasetId,\n tableId: \"bar\",\n timePartitioning: {\n type: \"DAY\",\n },\n labels: {\n env: \"default\",\n },\n schema: `[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n`,\n});\nconst sheet = new gcp.bigquery.Table(\"sheet\", {\n datasetId: _default.datasetId,\n tableId: \"sheet\",\n externalDataConfiguration: {\n autodetect: true,\n sourceFormat: \"GOOGLE_SHEETS\",\n googleSheetsOptions: {\n skipLeadingRows: 1,\n },\n sourceUris: [\"https://docs.google.com/spreadsheets/d/123456789012345\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"foo\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n })\ndefault_table = gcp.bigquery.Table(\"default\",\n dataset_id=default.dataset_id,\n table_id=\"bar\",\n time_partitioning={\n \"type\": \"DAY\",\n },\n labels={\n \"env\": \"default\",\n },\n schema=\"\"\"[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n\"\"\")\nsheet = gcp.bigquery.Table(\"sheet\",\n dataset_id=default.dataset_id,\n table_id=\"sheet\",\n external_data_configuration={\n \"autodetect\": True,\n \"source_format\": \"GOOGLE_SHEETS\",\n \"google_sheets_options\": {\n \"skip_leading_rows\": 1,\n },\n \"source_uris\": [\"https://docs.google.com/spreadsheets/d/123456789012345\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.BigQuery.Dataset(\"default\", new()\n {\n DatasetId = \"foo\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var defaultTable = new Gcp.BigQuery.Table(\"default\", new()\n {\n DatasetId = @default.DatasetId,\n TableId = \"bar\",\n TimePartitioning = new Gcp.BigQuery.Inputs.TableTimePartitioningArgs\n {\n Type = \"DAY\",\n },\n Labels = \n {\n { \"env\", \"default\" },\n },\n Schema = @\"[\n {\n \"\"name\"\": \"\"permalink\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The Permalink\"\"\n },\n {\n \"\"name\"\": \"\"state\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"State where the head office is located\"\"\n }\n]\n\",\n });\n\n var sheet = new Gcp.BigQuery.Table(\"sheet\", new()\n {\n DatasetId = @default.DatasetId,\n TableId = \"sheet\",\n ExternalDataConfiguration = new Gcp.BigQuery.Inputs.TableExternalDataConfigurationArgs\n {\n Autodetect = true,\n SourceFormat = \"GOOGLE_SHEETS\",\n GoogleSheetsOptions = new Gcp.BigQuery.Inputs.TableExternalDataConfigurationGoogleSheetsOptionsArgs\n {\n SkipLeadingRows = 1,\n },\n SourceUris = new[]\n {\n \"https://docs.google.com/spreadsheets/d/123456789012345\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"foo\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"default\", \u0026bigquery.TableArgs{\n\t\t\tDatasetId: _default.DatasetId,\n\t\t\tTableId: pulumi.String(\"bar\"),\n\t\t\tTimePartitioning: \u0026bigquery.TableTimePartitioningArgs{\n\t\t\t\tType: pulumi.String(\"DAY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"sheet\", \u0026bigquery.TableArgs{\n\t\t\tDatasetId: _default.DatasetId,\n\t\t\tTableId: pulumi.String(\"sheet\"),\n\t\t\tExternalDataConfiguration: \u0026bigquery.TableExternalDataConfigurationArgs{\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t\tSourceFormat: pulumi.String(\"GOOGLE_SHEETS\"),\n\t\t\t\tGoogleSheetsOptions: \u0026bigquery.TableExternalDataConfigurationGoogleSheetsOptionsArgs{\n\t\t\t\t\tSkipLeadingRows: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://docs.google.com/spreadsheets/d/123456789012345\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableTimePartitioningArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableExternalDataConfigurationArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableExternalDataConfigurationGoogleSheetsOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .datasetId(\"foo\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var defaultTable = new Table(\"defaultTable\", TableArgs.builder()\n .datasetId(default_.datasetId())\n .tableId(\"bar\")\n .timePartitioning(TableTimePartitioningArgs.builder()\n .type(\"DAY\")\n .build())\n .labels(Map.of(\"env\", \"default\"))\n .schema(\"\"\"\n[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n \"\"\")\n .build());\n\n var sheet = new Table(\"sheet\", TableArgs.builder()\n .datasetId(default_.datasetId())\n .tableId(\"sheet\")\n .externalDataConfiguration(TableExternalDataConfigurationArgs.builder()\n .autodetect(true)\n .sourceFormat(\"GOOGLE_SHEETS\")\n .googleSheetsOptions(TableExternalDataConfigurationGoogleSheetsOptionsArgs.builder()\n .skipLeadingRows(1)\n .build())\n .sourceUris(\"https://docs.google.com/spreadsheets/d/123456789012345\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: foo\n friendlyName: test\n description: This is a test description\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n defaultTable:\n type: gcp:bigquery:Table\n name: default\n properties:\n datasetId: ${default.datasetId}\n tableId: bar\n timePartitioning:\n type: DAY\n labels:\n env: default\n schema: |\n [\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n ]\n sheet:\n type: gcp:bigquery:Table\n properties:\n datasetId: ${default.datasetId}\n tableId: sheet\n externalDataConfiguration:\n autodetect: true\n sourceFormat: GOOGLE_SHEETS\n googleSheetsOptions:\n skipLeadingRows: 1\n sourceUris:\n - https://docs.google.com/spreadsheets/d/123456789012345\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBigQuery tables can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}`\n\n* `{{project}}/{{dataset_id}}/{{table_id}}`\n\n* `{{dataset_id}}/{{table_id}}`\n\nWhen using the `pulumi import` command, BigQuery tables can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/table:Table default projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/table:Table default {{project}}/{{dataset_id}}/{{table_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/table:Table default {{dataset_id}}/{{table_id}}\n```\n\n", + "description": "Creates a table resource in a dataset for Google BigQuery. For more information see\n[the official documentation](https://cloud.google.com/bigquery/docs/) and\n[API](https://cloud.google.com/bigquery/docs/reference/rest/v2/tables).\n\n\u003e **Note**: On newer versions of the provider, you must explicitly set `deletion_protection=false`\n(and run `pulumi update` to write the field to state) in order to destroy an instance.\nIt is recommended to not set this field (or set it to true) until you're ready to destroy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.bigquery.Dataset(\"default\", {\n datasetId: \"foo\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"EU\",\n defaultTableExpirationMs: 3600000,\n labels: {\n env: \"default\",\n },\n});\nconst defaultTable = new gcp.bigquery.Table(\"default\", {\n datasetId: _default.datasetId,\n tableId: \"bar\",\n timePartitioning: {\n type: \"DAY\",\n },\n labels: {\n env: \"default\",\n },\n schema: `[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n`,\n});\nconst sheet = new gcp.bigquery.Table(\"sheet\", {\n datasetId: _default.datasetId,\n tableId: \"sheet\",\n externalDataConfiguration: {\n autodetect: true,\n sourceFormat: \"GOOGLE_SHEETS\",\n googleSheetsOptions: {\n skipLeadingRows: 1,\n },\n sourceUris: [\"https://docs.google.com/spreadsheets/d/123456789012345\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"foo\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"EU\",\n default_table_expiration_ms=3600000,\n labels={\n \"env\": \"default\",\n })\ndefault_table = gcp.bigquery.Table(\"default\",\n dataset_id=default.dataset_id,\n table_id=\"bar\",\n time_partitioning={\n \"type\": \"DAY\",\n },\n labels={\n \"env\": \"default\",\n },\n schema=\"\"\"[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n\"\"\")\nsheet = gcp.bigquery.Table(\"sheet\",\n dataset_id=default.dataset_id,\n table_id=\"sheet\",\n external_data_configuration={\n \"autodetect\": True,\n \"source_format\": \"GOOGLE_SHEETS\",\n \"google_sheets_options\": {\n \"skip_leading_rows\": 1,\n },\n \"source_uris\": [\"https://docs.google.com/spreadsheets/d/123456789012345\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.BigQuery.Dataset(\"default\", new()\n {\n DatasetId = \"foo\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"EU\",\n DefaultTableExpirationMs = 3600000,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var defaultTable = new Gcp.BigQuery.Table(\"default\", new()\n {\n DatasetId = @default.DatasetId,\n TableId = \"bar\",\n TimePartitioning = new Gcp.BigQuery.Inputs.TableTimePartitioningArgs\n {\n Type = \"DAY\",\n },\n Labels = \n {\n { \"env\", \"default\" },\n },\n Schema = @\"[\n {\n \"\"name\"\": \"\"permalink\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"The Permalink\"\"\n },\n {\n \"\"name\"\": \"\"state\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"description\"\": \"\"State where the head office is located\"\"\n }\n]\n\",\n });\n\n var sheet = new Gcp.BigQuery.Table(\"sheet\", new()\n {\n DatasetId = @default.DatasetId,\n TableId = \"sheet\",\n ExternalDataConfiguration = new Gcp.BigQuery.Inputs.TableExternalDataConfigurationArgs\n {\n Autodetect = true,\n SourceFormat = \"GOOGLE_SHEETS\",\n GoogleSheetsOptions = new Gcp.BigQuery.Inputs.TableExternalDataConfigurationGoogleSheetsOptionsArgs\n {\n SkipLeadingRows = 1,\n },\n SourceUris = new[]\n {\n \"https://docs.google.com/spreadsheets/d/123456789012345\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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_default, err := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"foo\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t\tDefaultTableExpirationMs: pulumi.Int(3600000),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"default\", \u0026bigquery.TableArgs{\n\t\t\tDatasetId: _default.DatasetId,\n\t\t\tTableId: pulumi.String(\"bar\"),\n\t\t\tTimePartitioning: \u0026bigquery.TableTimePartitioningArgs{\n\t\t\t\tType: pulumi.String(\"DAY\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"sheet\", \u0026bigquery.TableArgs{\n\t\t\tDatasetId: _default.DatasetId,\n\t\t\tTableId: pulumi.String(\"sheet\"),\n\t\t\tExternalDataConfiguration: \u0026bigquery.TableExternalDataConfigurationArgs{\n\t\t\t\tAutodetect: pulumi.Bool(true),\n\t\t\t\tSourceFormat: pulumi.String(\"GOOGLE_SHEETS\"),\n\t\t\t\tGoogleSheetsOptions: \u0026bigquery.TableExternalDataConfigurationGoogleSheetsOptionsArgs{\n\t\t\t\t\tSkipLeadingRows: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tSourceUris: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://docs.google.com/spreadsheets/d/123456789012345\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableTimePartitioningArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableExternalDataConfigurationArgs;\nimport com.pulumi.gcp.bigquery.inputs.TableExternalDataConfigurationGoogleSheetsOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .datasetId(\"foo\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"EU\")\n .defaultTableExpirationMs(3600000)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var defaultTable = new Table(\"defaultTable\", TableArgs.builder()\n .datasetId(default_.datasetId())\n .tableId(\"bar\")\n .timePartitioning(TableTimePartitioningArgs.builder()\n .type(\"DAY\")\n .build())\n .labels(Map.of(\"env\", \"default\"))\n .schema(\"\"\"\n[\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n]\n \"\"\")\n .build());\n\n var sheet = new Table(\"sheet\", TableArgs.builder()\n .datasetId(default_.datasetId())\n .tableId(\"sheet\")\n .externalDataConfiguration(TableExternalDataConfigurationArgs.builder()\n .autodetect(true)\n .sourceFormat(\"GOOGLE_SHEETS\")\n .googleSheetsOptions(TableExternalDataConfigurationGoogleSheetsOptionsArgs.builder()\n .skipLeadingRows(1)\n .build())\n .sourceUris(\"https://docs.google.com/spreadsheets/d/123456789012345\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: foo\n friendlyName: test\n description: This is a test description\n location: EU\n defaultTableExpirationMs: 3.6e+06\n labels:\n env: default\n defaultTable:\n type: gcp:bigquery:Table\n name: default\n properties:\n datasetId: ${default.datasetId}\n tableId: bar\n timePartitioning:\n type: DAY\n labels:\n env: default\n schema: |\n [\n {\n \"name\": \"permalink\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"The Permalink\"\n },\n {\n \"name\": \"state\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\",\n \"description\": \"State where the head office is located\"\n }\n ]\n sheet:\n type: gcp:bigquery:Table\n properties:\n datasetId: ${default.datasetId}\n tableId: sheet\n externalDataConfiguration:\n autodetect: true\n sourceFormat: GOOGLE_SHEETS\n googleSheetsOptions:\n skipLeadingRows: 1\n sourceUris:\n - https://docs.google.com/spreadsheets/d/123456789012345\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBigQuery tables can be imported using any of these accepted formats:\n\n* `projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}`\n\n* `{{project}}/{{dataset_id}}/{{table_id}}`\n\n* `{{dataset_id}}/{{table_id}}`\n\nWhen using the `pulumi import` command, BigQuery tables can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:bigquery/table:Table default projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/table:Table default {{project}}/{{dataset_id}}/{{table_id}}\n```\n\n```sh\n$ pulumi import gcp:bigquery/table:Table default {{dataset_id}}/{{table_id}}\n```\n\n", "properties": { "biglakeConfiguration": { "$ref": "#/types/gcp:bigquery/TableBiglakeConfiguration:TableBiglakeConfiguration", @@ -151759,7 +151759,7 @@ } }, "gcp:binaryauthorization/attestor:Attestor": { - "description": "An attestor that attests to container image artifacts.\n\n\nTo get more information about Attestor, see:\n\n* [API documentation](https://cloud.google.com/binary-authorization/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/binary-authorization/)\n\n## Example Usage\n\n### Binary Authorization Attestor Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"test-attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"Attestor Note\",\n },\n },\n});\nconst attestor = new gcp.binaryauthorization.Attestor(\"attestor\", {\n name: \"test-attestor\",\n attestationAuthorityNote: {\n noteReference: note.name,\n publicKeys: [{\n asciiArmoredPgpPublicKey: `mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n`,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"test-attestor-note\",\n attestation_authority={\n \"hint\": {\n \"human_readable_name\": \"Attestor Note\",\n },\n })\nattestor = gcp.binaryauthorization.Attestor(\"attestor\",\n name=\"test-attestor\",\n attestation_authority_note={\n \"note_reference\": note.name,\n \"public_keys\": [{\n \"ascii_armored_pgp_public_key\": \"\"\"mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n\"\"\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"test-attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"Attestor Note\",\n },\n },\n });\n\n var attestor = new Gcp.BinaryAuthorization.Attestor(\"attestor\", new()\n {\n Name = \"test-attestor\",\n AttestationAuthorityNote = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNoteArgs\n {\n NoteReference = note.Name,\n PublicKeys = new[]\n {\n new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNotePublicKeyArgs\n {\n AsciiArmoredPgpPublicKey = @\"mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/binaryauthorization\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/containeranalysis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnote, err := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"test-attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"Attestor Note\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = binaryauthorization.NewAttestor(ctx, \"attestor\", \u0026binaryauthorization.AttestorArgs{\n\t\t\tName: pulumi.String(\"test-attestor\"),\n\t\t\tAttestationAuthorityNote: \u0026binaryauthorization.AttestorAttestationAuthorityNoteArgs{\n\t\t\t\tNoteReference: note.Name,\n\t\t\t\tPublicKeys: binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArray{\n\t\t\t\t\t\u0026binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArgs{\n\t\t\t\t\t\tAsciiArmoredPgpPublicKey: pulumi.String(`mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n`),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\nimport com.pulumi.gcp.binaryauthorization.Attestor;\nimport com.pulumi.gcp.binaryauthorization.AttestorArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.AttestorAttestationAuthorityNoteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var note = new Note(\"note\", NoteArgs.builder()\n .name(\"test-attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"Attestor Note\")\n .build())\n .build())\n .build());\n\n var attestor = new Attestor(\"attestor\", AttestorArgs.builder()\n .name(\"test-attestor\")\n .attestationAuthorityNote(AttestorAttestationAuthorityNoteArgs.builder()\n .noteReference(note.name())\n .publicKeys(AttestorAttestationAuthorityNotePublicKeyArgs.builder()\n .asciiArmoredPgpPublicKey(\"\"\"\nmQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n \"\"\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n attestor:\n type: gcp:binaryauthorization:Attestor\n properties:\n name: test-attestor\n attestationAuthorityNote:\n noteReference: ${note.name}\n publicKeys:\n - asciiArmoredPgpPublicKey: |\n mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\n bB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\n oR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\n V39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\n Mpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n 83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\n IiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\n uY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n 0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n 51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\n WTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\n MAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n +OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\n qoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n =6Bvm\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: test-attestor-note\n attestationAuthority:\n hint:\n humanReadableName: Attestor Note\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Binary Authorization Attestor Kms\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"test-attestor-key-ring\",\n location: \"global\",\n});\nconst crypto_key = new gcp.kms.CryptoKey(\"crypto-key\", {\n name: \"test-attestor-key\",\n keyRing: keyring.id,\n purpose: \"ASYMMETRIC_SIGN\",\n versionTemplate: {\n algorithm: \"RSA_SIGN_PKCS1_4096_SHA512\",\n },\n});\nconst version = gcp.kms.getKMSCryptoKeyVersionOutput({\n cryptoKey: crypto_key.id,\n});\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"test-attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"Attestor Note\",\n },\n },\n});\nconst attestor = new gcp.binaryauthorization.Attestor(\"attestor\", {\n name: \"test-attestor\",\n attestationAuthorityNote: {\n noteReference: note.name,\n publicKeys: [{\n id: version.apply(version =\u003e version.id),\n pkixPublicKey: {\n publicKeyPem: version.apply(version =\u003e version.publicKeys?.[0]?.pem),\n signatureAlgorithm: version.apply(version =\u003e version.publicKeys?.[0]?.algorithm),\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"test-attestor-key-ring\",\n location=\"global\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto-key\",\n name=\"test-attestor-key\",\n key_ring=keyring.id,\n purpose=\"ASYMMETRIC_SIGN\",\n version_template={\n \"algorithm\": \"RSA_SIGN_PKCS1_4096_SHA512\",\n })\nversion = gcp.kms.get_kms_crypto_key_version_output(crypto_key=crypto_key.id)\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"test-attestor-note\",\n attestation_authority={\n \"hint\": {\n \"human_readable_name\": \"Attestor Note\",\n },\n })\nattestor = gcp.binaryauthorization.Attestor(\"attestor\",\n name=\"test-attestor\",\n attestation_authority_note={\n \"note_reference\": note.name,\n \"public_keys\": [{\n \"id\": version.id,\n \"pkix_public_key\": {\n \"public_key_pem\": version.public_keys[0].pem,\n \"signature_algorithm\": version.public_keys[0].algorithm,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"test-attestor-key-ring\",\n Location = \"global\",\n });\n\n var crypto_key = new Gcp.Kms.CryptoKey(\"crypto-key\", new()\n {\n Name = \"test-attestor-key\",\n KeyRing = keyring.Id,\n Purpose = \"ASYMMETRIC_SIGN\",\n VersionTemplate = new Gcp.Kms.Inputs.CryptoKeyVersionTemplateArgs\n {\n Algorithm = \"RSA_SIGN_PKCS1_4096_SHA512\",\n },\n });\n\n var version = Gcp.Kms.GetKMSCryptoKeyVersion.Invoke(new()\n {\n CryptoKey = crypto_key.Id,\n });\n\n var note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"test-attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"Attestor Note\",\n },\n },\n });\n\n var attestor = new Gcp.BinaryAuthorization.Attestor(\"attestor\", new()\n {\n Name = \"test-attestor\",\n AttestationAuthorityNote = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNoteArgs\n {\n NoteReference = note.Name,\n PublicKeys = new[]\n {\n new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNotePublicKeyArgs\n {\n Id = version.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.Id),\n PkixPublicKey = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNotePublicKeyPkixPublicKeyArgs\n {\n PublicKeyPem = version.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.PublicKeys[0]?.Pem),\n SignatureAlgorithm = version.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.PublicKeys[0]?.Algorithm),\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/binaryauthorization\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/containeranalysis\"\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(\"test-attestor-key-ring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewCryptoKey(ctx, \"crypto-key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"test-attestor-key\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tPurpose: pulumi.String(\"ASYMMETRIC_SIGN\"),\n\t\t\tVersionTemplate: \u0026kms.CryptoKeyVersionTemplateArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_SIGN_PKCS1_4096_SHA512\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tversion := kms.GetKMSCryptoKeyVersionOutput(ctx, kms.GetKMSCryptoKeyVersionOutputArgs{\n\t\t\tCryptoKey: crypto_key.ID(),\n\t\t}, nil)\n\t\tnote, err := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"test-attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"Attestor Note\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = binaryauthorization.NewAttestor(ctx, \"attestor\", \u0026binaryauthorization.AttestorArgs{\n\t\t\tName: pulumi.String(\"test-attestor\"),\n\t\t\tAttestationAuthorityNote: \u0026binaryauthorization.AttestorAttestationAuthorityNoteArgs{\n\t\t\t\tNoteReference: note.Name,\n\t\t\t\tPublicKeys: binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArray{\n\t\t\t\t\t\u0026binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArgs{\n\t\t\t\t\t\tId: version.ApplyT(func(version kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\t\t\t\treturn \u0026version.Id, nil\n\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\tPkixPublicKey: \u0026binaryauthorization.AttestorAttestationAuthorityNotePublicKeyPkixPublicKeyArgs{\n\t\t\t\t\t\t\tPublicKeyPem: version.ApplyT(func(version kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026version.PublicKeys[0].Pem, nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\tSignatureAlgorithm: version.ApplyT(func(version kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026version.PublicKeys[0].Algorithm, nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.inputs.CryptoKeyVersionTemplateArgs;\nimport com.pulumi.gcp.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSCryptoKeyVersionArgs;\nimport com.pulumi.gcp.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\nimport com.pulumi.gcp.binaryauthorization.Attestor;\nimport com.pulumi.gcp.binaryauthorization.AttestorArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.AttestorAttestationAuthorityNoteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"test-attestor-key-ring\")\n .location(\"global\")\n .build());\n\n var crypto_key = new CryptoKey(\"crypto-key\", CryptoKeyArgs.builder()\n .name(\"test-attestor-key\")\n .keyRing(keyring.id())\n .purpose(\"ASYMMETRIC_SIGN\")\n .versionTemplate(CryptoKeyVersionTemplateArgs.builder()\n .algorithm(\"RSA_SIGN_PKCS1_4096_SHA512\")\n .build())\n .build());\n\n final var version = KmsFunctions.getKMSCryptoKeyVersion(GetKMSCryptoKeyVersionArgs.builder()\n .cryptoKey(crypto_key.id())\n .build());\n\n var note = new Note(\"note\", NoteArgs.builder()\n .name(\"test-attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"Attestor Note\")\n .build())\n .build())\n .build());\n\n var attestor = new Attestor(\"attestor\", AttestorArgs.builder()\n .name(\"test-attestor\")\n .attestationAuthorityNote(AttestorAttestationAuthorityNoteArgs.builder()\n .noteReference(note.name())\n .publicKeys(AttestorAttestationAuthorityNotePublicKeyArgs.builder()\n .id(version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(version -\u003e version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.id())))\n .pkixPublicKey(AttestorAttestationAuthorityNotePublicKeyPkixPublicKeyArgs.builder()\n .publicKeyPem(version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(version -\u003e version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.publicKeys()[0].pem())))\n .signatureAlgorithm(version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(version -\u003e version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.publicKeys()[0].algorithm())))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n attestor:\n type: gcp:binaryauthorization:Attestor\n properties:\n name: test-attestor\n attestationAuthorityNote:\n noteReference: ${note.name}\n publicKeys:\n - id: ${version.id}\n pkixPublicKey:\n publicKeyPem: ${version.publicKeys[0].pem}\n signatureAlgorithm: ${version.publicKeys[0].algorithm}\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: test-attestor-note\n attestationAuthority:\n hint:\n humanReadableName: Attestor Note\n crypto-key:\n type: gcp:kms:CryptoKey\n properties:\n name: test-attestor-key\n keyRing: ${keyring.id}\n purpose: ASYMMETRIC_SIGN\n versionTemplate:\n algorithm: RSA_SIGN_PKCS1_4096_SHA512\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: test-attestor-key-ring\n location: global\nvariables:\n version:\n fn::invoke:\n function: gcp:kms:getKMSCryptoKeyVersion\n arguments:\n cryptoKey: ${[\"crypto-key\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAttestor can be imported using any of these accepted formats:\n\n* `projects/{{project}}/attestors/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Attestor can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:binaryauthorization/attestor:Attestor default projects/{{project}}/attestors/{{name}}\n```\n\n```sh\n$ pulumi import gcp:binaryauthorization/attestor:Attestor default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:binaryauthorization/attestor:Attestor default {{name}}\n```\n\n", + "description": "An attestor that attests to container image artifacts.\n\n\nTo get more information about Attestor, see:\n\n* [API documentation](https://cloud.google.com/binary-authorization/docs/reference/rest/)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/binary-authorization/)\n\n## Example Usage\n\n### Binary Authorization Attestor Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"test-attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"Attestor Note\",\n },\n },\n});\nconst attestor = new gcp.binaryauthorization.Attestor(\"attestor\", {\n name: \"test-attestor\",\n attestationAuthorityNote: {\n noteReference: note.name,\n publicKeys: [{\n asciiArmoredPgpPublicKey: `mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n`,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"test-attestor-note\",\n attestation_authority={\n \"hint\": {\n \"human_readable_name\": \"Attestor Note\",\n },\n })\nattestor = gcp.binaryauthorization.Attestor(\"attestor\",\n name=\"test-attestor\",\n attestation_authority_note={\n \"note_reference\": note.name,\n \"public_keys\": [{\n \"ascii_armored_pgp_public_key\": \"\"\"mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n\"\"\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"test-attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"Attestor Note\",\n },\n },\n });\n\n var attestor = new Gcp.BinaryAuthorization.Attestor(\"attestor\", new()\n {\n Name = \"test-attestor\",\n AttestationAuthorityNote = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNoteArgs\n {\n NoteReference = note.Name,\n PublicKeys = new[]\n {\n new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNotePublicKeyArgs\n {\n AsciiArmoredPgpPublicKey = @\"mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/binaryauthorization\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/containeranalysis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnote, err := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"test-attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"Attestor Note\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = binaryauthorization.NewAttestor(ctx, \"attestor\", \u0026binaryauthorization.AttestorArgs{\n\t\t\tName: pulumi.String(\"test-attestor\"),\n\t\t\tAttestationAuthorityNote: \u0026binaryauthorization.AttestorAttestationAuthorityNoteArgs{\n\t\t\t\tNoteReference: note.Name,\n\t\t\t\tPublicKeys: binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArray{\n\t\t\t\t\t\u0026binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArgs{\n\t\t\t\t\t\tAsciiArmoredPgpPublicKey: pulumi.String(`mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n`),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\nimport com.pulumi.gcp.binaryauthorization.Attestor;\nimport com.pulumi.gcp.binaryauthorization.AttestorArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.AttestorAttestationAuthorityNoteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var note = new Note(\"note\", NoteArgs.builder()\n .name(\"test-attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"Attestor Note\")\n .build())\n .build())\n .build());\n\n var attestor = new Attestor(\"attestor\", AttestorArgs.builder()\n .name(\"test-attestor\")\n .attestationAuthorityNote(AttestorAttestationAuthorityNoteArgs.builder()\n .noteReference(note.name())\n .publicKeys(AttestorAttestationAuthorityNotePublicKeyArgs.builder()\n .asciiArmoredPgpPublicKey(\"\"\"\nmQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\nbB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\noR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\nV39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\nMpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\nIiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\nuY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\nWTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\nMAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n+OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\nqoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n=6Bvm\n \"\"\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n attestor:\n type: gcp:binaryauthorization:Attestor\n properties:\n name: test-attestor\n attestationAuthorityNote:\n noteReference: ${note.name}\n publicKeys:\n - asciiArmoredPgpPublicKey: |\n mQENBFtP0doBCADF+joTiXWKVuP8kJt3fgpBSjT9h8ezMfKA4aXZctYLx5wslWQl\n bB7Iu2ezkECNzoEeU7WxUe8a61pMCh9cisS9H5mB2K2uM4Jnf8tgFeXn3akJDVo0\n oR1IC+Dp9mXbRSK3MAvKkOwWlG99sx3uEdvmeBRHBOO+grchLx24EThXFOyP9Fk6\n V39j6xMjw4aggLD15B4V0v9JqBDdJiIYFzszZDL6pJwZrzcP0z8JO4rTZd+f64bD\n Mpj52j/pQfA8lZHOaAgb1OrthLdMrBAjoDjArV4Ek7vSbrcgYWcI6BhsQrFoxKdX\n 83TZKai55ZCfCLIskwUIzA1NLVwyzCS+fSN/ABEBAAG0KCJUZXN0IEF0dGVzdG9y\n IiA8ZGFuYWhvZmZtYW5AZ29vZ2xlLmNvbT6JAU4EEwEIADgWIQRfWkqHt6hpTA1L\n uY060eeM4dc66AUCW0/R2gIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRA6\n 0eeM4dc66HdpCAC4ot3b0OyxPb0Ip+WT2U0PbpTBPJklesuwpIrM4Lh0N+1nVRLC\n 51WSmVbM8BiAFhLbN9LpdHhds1kUrHF7+wWAjdR8sqAj9otc6HGRM/3qfa2qgh+U\n WTEk/3us/rYSi7T7TkMuutRMIa1IkR13uKiW56csEMnbOQpn9rDqwIr5R8nlZP5h\n MAU9vdm1DIv567meMqTaVZgR3w7bck2P49AO8lO5ERFpVkErtu/98y+rUy9d789l\n +OPuS1NGnxI1YKsNaWJF4uJVuvQuZ1twrhCbGNtVorO2U12+cEq+YtUxj7kmdOC1\n qoIRW6y0+UlAc+MbqfL0ziHDOAmcqz1GnROg\n =6Bvm\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: test-attestor-note\n attestationAuthority:\n hint:\n humanReadableName: Attestor Note\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Binary Authorization Attestor Kms\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"test-attestor-key-ring\",\n location: \"global\",\n});\nconst crypto_key = new gcp.kms.CryptoKey(\"crypto-key\", {\n name: \"test-attestor-key\",\n keyRing: keyring.id,\n purpose: \"ASYMMETRIC_SIGN\",\n versionTemplate: {\n algorithm: \"RSA_SIGN_PKCS1_4096_SHA512\",\n },\n});\nconst version = gcp.kms.getKMSCryptoKeyVersionOutput({\n cryptoKey: crypto_key.id,\n});\nconst note = new gcp.containeranalysis.Note(\"note\", {\n name: \"test-attestor-note\",\n attestationAuthority: {\n hint: {\n humanReadableName: \"Attestor Note\",\n },\n },\n});\nconst attestor = new gcp.binaryauthorization.Attestor(\"attestor\", {\n name: \"test-attestor\",\n attestationAuthorityNote: {\n noteReference: note.name,\n publicKeys: [{\n id: version.apply(version =\u003e version.id),\n pkixPublicKey: {\n publicKeyPem: version.apply(version =\u003e version.publicKeys?.[0]?.pem),\n signatureAlgorithm: version.apply(version =\u003e version.publicKeys?.[0]?.algorithm),\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"test-attestor-key-ring\",\n location=\"global\")\ncrypto_key = gcp.kms.CryptoKey(\"crypto-key\",\n name=\"test-attestor-key\",\n key_ring=keyring.id,\n purpose=\"ASYMMETRIC_SIGN\",\n version_template={\n \"algorithm\": \"RSA_SIGN_PKCS1_4096_SHA512\",\n })\nversion = gcp.kms.get_kms_crypto_key_version_output(crypto_key=crypto_key.id)\nnote = gcp.containeranalysis.Note(\"note\",\n name=\"test-attestor-note\",\n attestation_authority={\n \"hint\": {\n \"human_readable_name\": \"Attestor Note\",\n },\n })\nattestor = gcp.binaryauthorization.Attestor(\"attestor\",\n name=\"test-attestor\",\n attestation_authority_note={\n \"note_reference\": note.name,\n \"public_keys\": [{\n \"id\": version.id,\n \"pkix_public_key\": {\n \"public_key_pem\": version.public_keys[0].pem,\n \"signature_algorithm\": version.public_keys[0].algorithm,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"test-attestor-key-ring\",\n Location = \"global\",\n });\n\n var crypto_key = new Gcp.Kms.CryptoKey(\"crypto-key\", new()\n {\n Name = \"test-attestor-key\",\n KeyRing = keyring.Id,\n Purpose = \"ASYMMETRIC_SIGN\",\n VersionTemplate = new Gcp.Kms.Inputs.CryptoKeyVersionTemplateArgs\n {\n Algorithm = \"RSA_SIGN_PKCS1_4096_SHA512\",\n },\n });\n\n var version = Gcp.Kms.GetKMSCryptoKeyVersion.Invoke(new()\n {\n CryptoKey = crypto_key.Id,\n });\n\n var note = new Gcp.ContainerAnalysis.Note(\"note\", new()\n {\n Name = \"test-attestor-note\",\n AttestationAuthority = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityArgs\n {\n Hint = new Gcp.ContainerAnalysis.Inputs.NoteAttestationAuthorityHintArgs\n {\n HumanReadableName = \"Attestor Note\",\n },\n },\n });\n\n var attestor = new Gcp.BinaryAuthorization.Attestor(\"attestor\", new()\n {\n Name = \"test-attestor\",\n AttestationAuthorityNote = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNoteArgs\n {\n NoteReference = note.Name,\n PublicKeys = new[]\n {\n new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNotePublicKeyArgs\n {\n Id = version.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.Id),\n PkixPublicKey = new Gcp.BinaryAuthorization.Inputs.AttestorAttestationAuthorityNotePublicKeyPkixPublicKeyArgs\n {\n PublicKeyPem = version.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.PublicKeys[0]?.Pem),\n SignatureAlgorithm = version.Apply(getKMSCryptoKeyVersionResult =\u003e getKMSCryptoKeyVersionResult.PublicKeys[0]?.Algorithm),\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/binaryauthorization\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/containeranalysis\"\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(\"test-attestor-key-ring\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcrypto_key, err := kms.NewCryptoKey(ctx, \"crypto-key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"test-attestor-key\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tPurpose: pulumi.String(\"ASYMMETRIC_SIGN\"),\n\t\t\tVersionTemplate: \u0026kms.CryptoKeyVersionTemplateArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_SIGN_PKCS1_4096_SHA512\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tversion := kms.GetKMSCryptoKeyVersionOutput(ctx, kms.GetKMSCryptoKeyVersionOutputArgs{\n\t\t\tCryptoKey: crypto_key.ID(),\n\t\t}, nil)\n\t\tnote, err := containeranalysis.NewNote(ctx, \"note\", \u0026containeranalysis.NoteArgs{\n\t\t\tName: pulumi.String(\"test-attestor-note\"),\n\t\t\tAttestationAuthority: \u0026containeranalysis.NoteAttestationAuthorityArgs{\n\t\t\t\tHint: \u0026containeranalysis.NoteAttestationAuthorityHintArgs{\n\t\t\t\t\tHumanReadableName: pulumi.String(\"Attestor Note\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = binaryauthorization.NewAttestor(ctx, \"attestor\", \u0026binaryauthorization.AttestorArgs{\n\t\t\tName: pulumi.String(\"test-attestor\"),\n\t\t\tAttestationAuthorityNote: \u0026binaryauthorization.AttestorAttestationAuthorityNoteArgs{\n\t\t\t\tNoteReference: note.Name,\n\t\t\t\tPublicKeys: binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArray{\n\t\t\t\t\t\u0026binaryauthorization.AttestorAttestationAuthorityNotePublicKeyArgs{\n\t\t\t\t\t\tId: version.ApplyT(func(version kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\t\t\t\treturn \u0026version.Id, nil\n\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\tPkixPublicKey: \u0026binaryauthorization.AttestorAttestationAuthorityNotePublicKeyPkixPublicKeyArgs{\n\t\t\t\t\t\t\tPublicKeyPem: version.ApplyT(func(version kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026version.PublicKeys[0].Pem, nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\tSignatureAlgorithm: version.ApplyT(func(version kms.GetKMSCryptoKeyVersionResult) (*string, error) {\n\t\t\t\t\t\t\t\treturn \u0026version.PublicKeys[0].Algorithm, nil\n\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.inputs.CryptoKeyVersionTemplateArgs;\nimport com.pulumi.gcp.kms.KmsFunctions;\nimport com.pulumi.gcp.kms.inputs.GetKMSCryptoKeyVersionArgs;\nimport com.pulumi.gcp.containeranalysis.Note;\nimport com.pulumi.gcp.containeranalysis.NoteArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityArgs;\nimport com.pulumi.gcp.containeranalysis.inputs.NoteAttestationAuthorityHintArgs;\nimport com.pulumi.gcp.binaryauthorization.Attestor;\nimport com.pulumi.gcp.binaryauthorization.AttestorArgs;\nimport com.pulumi.gcp.binaryauthorization.inputs.AttestorAttestationAuthorityNoteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"test-attestor-key-ring\")\n .location(\"global\")\n .build());\n\n var crypto_key = new CryptoKey(\"crypto-key\", CryptoKeyArgs.builder()\n .name(\"test-attestor-key\")\n .keyRing(keyring.id())\n .purpose(\"ASYMMETRIC_SIGN\")\n .versionTemplate(CryptoKeyVersionTemplateArgs.builder()\n .algorithm(\"RSA_SIGN_PKCS1_4096_SHA512\")\n .build())\n .build());\n\n final var version = KmsFunctions.getKMSCryptoKeyVersion(GetKMSCryptoKeyVersionArgs.builder()\n .cryptoKey(crypto_key.id())\n .build());\n\n var note = new Note(\"note\", NoteArgs.builder()\n .name(\"test-attestor-note\")\n .attestationAuthority(NoteAttestationAuthorityArgs.builder()\n .hint(NoteAttestationAuthorityHintArgs.builder()\n .humanReadableName(\"Attestor Note\")\n .build())\n .build())\n .build());\n\n var attestor = new Attestor(\"attestor\", AttestorArgs.builder()\n .name(\"test-attestor\")\n .attestationAuthorityNote(AttestorAttestationAuthorityNoteArgs.builder()\n .noteReference(note.name())\n .publicKeys(AttestorAttestationAuthorityNotePublicKeyArgs.builder()\n .id(version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(version -\u003e version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.id())))\n .pkixPublicKey(AttestorAttestationAuthorityNotePublicKeyPkixPublicKeyArgs.builder()\n .publicKeyPem(version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(version -\u003e version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.publicKeys()[0].pem())))\n .signatureAlgorithm(version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult).applyValue(version -\u003e version.applyValue(getKMSCryptoKeyVersionResult -\u003e getKMSCryptoKeyVersionResult.publicKeys()[0].algorithm())))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n attestor:\n type: gcp:binaryauthorization:Attestor\n properties:\n name: test-attestor\n attestationAuthorityNote:\n noteReference: ${note.name}\n publicKeys:\n - id: ${version.id}\n pkixPublicKey:\n publicKeyPem: ${version.publicKeys[0].pem}\n signatureAlgorithm: ${version.publicKeys[0].algorithm}\n note:\n type: gcp:containeranalysis:Note\n properties:\n name: test-attestor-note\n attestationAuthority:\n hint:\n humanReadableName: Attestor Note\n crypto-key:\n type: gcp:kms:CryptoKey\n properties:\n name: test-attestor-key\n keyRing: ${keyring.id}\n purpose: ASYMMETRIC_SIGN\n versionTemplate:\n algorithm: RSA_SIGN_PKCS1_4096_SHA512\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: test-attestor-key-ring\n location: global\nvariables:\n version:\n fn::invoke:\n function: gcp:kms:getKMSCryptoKeyVersion\n arguments:\n cryptoKey: ${[\"crypto-key\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAttestor can be imported using any of these accepted formats:\n\n* `projects/{{project}}/attestors/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Attestor can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:binaryauthorization/attestor:Attestor default projects/{{project}}/attestors/{{name}}\n```\n\n```sh\n$ pulumi import gcp:binaryauthorization/attestor:Attestor default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:binaryauthorization/attestor:Attestor default {{name}}\n```\n\n", "properties": { "attestationAuthorityNote": { "$ref": "#/types/gcp:binaryauthorization/AttestorAttestationAuthorityNote:AttestorAttestationAuthorityNote", @@ -152402,7 +152402,7 @@ } }, "gcp:certificateauthority/authority:Authority": { - "description": "A CertificateAuthority represents an individual Certificate Authority. A\nCertificateAuthority can be used to create Certificates.\n\n\nTo get more information about CertificateAuthority, see:\n\n* [API documentation](https://cloud.google.com/certificate-authority-service/docs/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/certificate-authority-service)\n\n\u003e **Warning:** On newer versions of the provider, you must explicitly set `deletion_protection=false`\n(and run `pulumi up` to write the field to state) in order to destroy a CertificateAuthority.\nIt is recommended to not set this field (or set it to true) until you're ready to destroy.\n\n## Example Usage\n\n### Privateca Certificate Authority Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority\",\n location: \"us-central1\",\n deletionProtection: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"ACME\",\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 },\n },\n },\n lifetime: `${10 * 365 * 24 * 3600}s`,\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority\",\n location=\"us-central1\",\n deletion_protection=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"ACME\",\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 },\n },\n },\n lifetime=f\"{10 * 365 * 24 * 3600}s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority\",\n Location = \"us-central1\",\n DeletionProtection = true,\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"ACME\",\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 = null,\n },\n },\n },\n Lifetime = $\"{10 * 365 * 24 * 3600}s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"ACME\"),\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},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.Sprintf(\"%vs\", 10*365*24*3600),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority\")\n .location(\"us-central1\")\n .deletionProtection(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"ACME\")\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()\n .build())\n .build())\n .build())\n .lifetime(String.format(\"%ss\", 10 * 365 * 24 * 3600))\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Authority Subordinate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst root_ca = new gcp.certificateauthority.Authority(\"root-ca\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority-root\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"ACME\",\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 },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority-sub\",\n location: \"us-central1\",\n deletionProtection: true,\n subordinateConfig: {\n certificateAuthority: root_ca.name,\n },\n config: {\n subjectConfig: {\n subject: {\n organization: \"ACME\",\n commonName: \"my-subordinate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n zeroMaxIssuerPathLength: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {},\n },\n },\n },\n lifetime: `${5 * 365 * 24 * 3600}s`,\n keySpec: {\n algorithm: \"RSA_PKCS1_2048_SHA256\",\n },\n type: \"SUBORDINATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nroot_ca = gcp.certificateauthority.Authority(\"root-ca\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority-root\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"ACME\",\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 },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority-sub\",\n location=\"us-central1\",\n deletion_protection=True,\n subordinate_config={\n \"certificate_authority\": root_ca.name,\n },\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"ACME\",\n \"common_name\": \"my-subordinate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n \"zero_max_issuer_path_length\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {},\n },\n },\n },\n lifetime=f\"{5 * 365 * 24 * 3600}s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_2048_SHA256\",\n },\n type=\"SUBORDINATE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var root_ca = new Gcp.CertificateAuthority.Authority(\"root-ca\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority-root\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"ACME\",\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 = null,\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority-sub\",\n Location = \"us-central1\",\n DeletionProtection = true,\n SubordinateConfig = new Gcp.CertificateAuthority.Inputs.AuthoritySubordinateConfigArgs\n {\n CertificateAuthority = root_ca.Name,\n },\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"ACME\",\n CommonName = \"my-subordinate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n ZeroMaxIssuerPathLength = 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 = null,\n },\n },\n },\n Lifetime = $\"{5 * 365 * 24 * 3600}s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_2048_SHA256\",\n },\n Type = \"SUBORDINATE\",\n });\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewAuthority(ctx, \"root-ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority-root\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"ACME\"),\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},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority-sub\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tSubordinateConfig: \u0026certificateauthority.AuthoritySubordinateConfigArgs{\n\t\t\t\tCertificateAuthority: root_ca.Name,\n\t\t\t},\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"ACME\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-subordinate-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\tZeroMaxIssuerPathLength: 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},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.Sprintf(\"%vs\", 5*365*24*3600),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_2048_SHA256\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SUBORDINATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthoritySubordinateConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var root_ca = new Authority(\"root-ca\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority-root\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"ACME\")\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()\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var default_ = new Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority-sub\")\n .location(\"us-central1\")\n .deletionProtection(true)\n .subordinateConfig(AuthoritySubordinateConfigArgs.builder()\n .certificateAuthority(root_ca.name())\n .build())\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"ACME\")\n .commonName(\"my-subordinate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .zeroMaxIssuerPathLength(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage()\n .build())\n .build())\n .build())\n .lifetime(String.format(\"%ss\", 5 * 365 * 24 * 3600))\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_2048_SHA256\")\n .build())\n .type(\"SUBORDINATE\")\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Authority Byo Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst privatecaSa = new gcp.projects.ServiceIdentity(\"privateca_sa\", {service: \"privateca.googleapis.com\"});\nconst privatecaSaKeyuserSignerverifier = new gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_signerverifier\", {\n cryptoKeyId: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role: \"roles/cloudkms.signerVerifier\",\n member: privatecaSa.member,\n});\nconst privatecaSaKeyuserViewer = new gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_viewer\", {\n cryptoKeyId: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role: \"roles/viewer\",\n member: privatecaSa.member,\n});\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority\",\n location: \"us-central1\",\n deletionProtection: true,\n keySpec: {\n cloudKmsKeyVersion: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n config: {\n subjectConfig: {\n subject: {\n organization: \"Example, Org.\",\n commonName: \"Example Authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {},\n },\n nameConstraints: {\n critical: true,\n permittedDnsNames: [\"*.example.com\"],\n excludedDnsNames: [\"*.deny.example.com\"],\n permittedIpRanges: [\"10.0.0.0/8\"],\n excludedIpRanges: [\"10.1.1.0/24\"],\n permittedEmailAddresses: [\".example.com\"],\n excludedEmailAddresses: [\".deny.example.com\"],\n permittedUris: [\".example.com\"],\n excludedUris: [\".deny.example.com\"],\n },\n },\n },\n}, {\n dependsOn: [\n privatecaSaKeyuserSignerverifier,\n privatecaSaKeyuserViewer,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivateca_sa = gcp.projects.ServiceIdentity(\"privateca_sa\", service=\"privateca.googleapis.com\")\nprivateca_sa_keyuser_signerverifier = gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_signerverifier\",\n crypto_key_id=\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role=\"roles/cloudkms.signerVerifier\",\n member=privateca_sa.member)\nprivateca_sa_keyuser_viewer = gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_viewer\",\n crypto_key_id=\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role=\"roles/viewer\",\n member=privateca_sa.member)\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority\",\n location=\"us-central1\",\n deletion_protection=True,\n key_spec={\n \"cloud_kms_key_version\": \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"Example, Org.\",\n \"common_name\": \"Example Authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {},\n },\n \"name_constraints\": {\n \"critical\": True,\n \"permitted_dns_names\": [\"*.example.com\"],\n \"excluded_dns_names\": [\"*.deny.example.com\"],\n \"permitted_ip_ranges\": [\"10.0.0.0/8\"],\n \"excluded_ip_ranges\": [\"10.1.1.0/24\"],\n \"permitted_email_addresses\": [\".example.com\"],\n \"excluded_email_addresses\": [\".deny.example.com\"],\n \"permitted_uris\": [\".example.com\"],\n \"excluded_uris\": [\".deny.example.com\"],\n },\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n privateca_sa_keyuser_signerverifier,\n privateca_sa_keyuser_viewer,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var privatecaSa = new Gcp.Projects.ServiceIdentity(\"privateca_sa\", new()\n {\n Service = \"privateca.googleapis.com\",\n });\n\n var privatecaSaKeyuserSignerverifier = new Gcp.Kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_signerverifier\", new()\n {\n CryptoKeyId = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n Role = \"roles/cloudkms.signerVerifier\",\n Member = privatecaSa.Member,\n });\n\n var privatecaSaKeyuserViewer = new Gcp.Kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_viewer\", new()\n {\n CryptoKeyId = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n Role = \"roles/viewer\",\n Member = privatecaSa.Member,\n });\n\n var @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority\",\n Location = \"us-central1\",\n DeletionProtection = true,\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n CloudKmsKeyVersion = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"Example, Org.\",\n CommonName = \"Example Authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\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 = null,\n },\n NameConstraints = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigNameConstraintsArgs\n {\n Critical = true,\n PermittedDnsNames = new[]\n {\n \"*.example.com\",\n },\n ExcludedDnsNames = new[]\n {\n \"*.deny.example.com\",\n },\n PermittedIpRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n ExcludedIpRanges = new[]\n {\n \"10.1.1.0/24\",\n },\n PermittedEmailAddresses = new[]\n {\n \".example.com\",\n },\n ExcludedEmailAddresses = new[]\n {\n \".deny.example.com\",\n },\n PermittedUris = new[]\n {\n \".example.com\",\n },\n ExcludedUris = new[]\n {\n \".deny.example.com\",\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privatecaSaKeyuserSignerverifier,\n privatecaSaKeyuserViewer,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\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\tprivatecaSa, err := projects.NewServiceIdentity(ctx, \"privateca_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"privateca.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivatecaSaKeyuserSignerverifier, err := kms.NewCryptoKeyIAMMember(ctx, \"privateca_sa_keyuser_signerverifier\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.signerVerifier\"),\n\t\t\tMember: privatecaSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivatecaSaKeyuserViewer, err := kms.NewCryptoKeyIAMMember(ctx, \"privateca_sa_keyuser_viewer\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\"),\n\t\t\tRole: pulumi.String(\"roles/viewer\"),\n\t\t\tMember: privatecaSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tCloudKmsKeyVersion: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\"),\n\t\t\t},\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"Example, Org.\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"Example Authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\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},\n\t\t\t\t\tNameConstraints: \u0026certificateauthority.AuthorityConfigX509ConfigNameConstraintsArgs{\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t\tPermittedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.1.1.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivatecaSaKeyuserSignerverifier,\n\t\t\tprivatecaSaKeyuserViewer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigNameConstraintsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var privatecaSa = new ServiceIdentity(\"privatecaSa\", ServiceIdentityArgs.builder()\n .service(\"privateca.googleapis.com\")\n .build());\n\n var privatecaSaKeyuserSignerverifier = new CryptoKeyIAMMember(\"privatecaSaKeyuserSignerverifier\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\")\n .role(\"roles/cloudkms.signerVerifier\")\n .member(privatecaSa.member())\n .build());\n\n var privatecaSaKeyuserViewer = new CryptoKeyIAMMember(\"privatecaSaKeyuserViewer\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\")\n .role(\"roles/viewer\")\n .member(privatecaSa.member())\n .build());\n\n var default_ = new Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority\")\n .location(\"us-central1\")\n .deletionProtection(true)\n .keySpec(AuthorityKeySpecArgs.builder()\n .cloudKmsKeyVersion(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\")\n .build())\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Example, Org.\")\n .commonName(\"Example Authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage()\n .build())\n .nameConstraints(AuthorityConfigX509ConfigNameConstraintsArgs.builder()\n .critical(true)\n .permittedDnsNames(\"*.example.com\")\n .excludedDnsNames(\"*.deny.example.com\")\n .permittedIpRanges(\"10.0.0.0/8\")\n .excludedIpRanges(\"10.1.1.0/24\")\n .permittedEmailAddresses(\".example.com\")\n .excludedEmailAddresses(\".deny.example.com\")\n .permittedUris(\".example.com\")\n .excludedUris(\".deny.example.com\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n privatecaSaKeyuserSignerverifier,\n privatecaSaKeyuserViewer)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n privatecaSa:\n type: gcp:projects:ServiceIdentity\n name: privateca_sa\n properties:\n service: privateca.googleapis.com\n privatecaSaKeyuserSignerverifier:\n type: gcp:kms:CryptoKeyIAMMember\n name: privateca_sa_keyuser_signerverifier\n properties:\n cryptoKeyId: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\n role: roles/cloudkms.signerVerifier\n member: ${privatecaSa.member}\n privatecaSaKeyuserViewer:\n type: gcp:kms:CryptoKeyIAMMember\n name: privateca_sa_keyuser_viewer\n properties:\n cryptoKeyId: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\n role: roles/viewer\n member: ${privatecaSa.member}\n default:\n type: gcp:certificateauthority:Authority\n properties:\n pool: ca-pool\n certificateAuthorityId: my-certificate-authority\n location: us-central1\n deletionProtection: true\n keySpec:\n cloudKmsKeyVersion: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\n config:\n subjectConfig:\n subject:\n organization: Example, Org.\n commonName: Example Authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage: {}\n nameConstraints:\n critical: true\n permittedDnsNames:\n - '*.example.com'\n excludedDnsNames:\n - '*.deny.example.com'\n permittedIpRanges:\n - 10.0.0.0/8\n excludedIpRanges:\n - 10.1.1.0/24\n permittedEmailAddresses:\n - .example.com\n excludedEmailAddresses:\n - .deny.example.com\n permittedUris:\n - .example.com\n excludedUris:\n - .deny.example.com\n options:\n dependsOn:\n - ${privatecaSaKeyuserSignerverifier}\n - ${privatecaSaKeyuserViewer}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Authority Custom Ski\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority\",\n location: \"us-central1\",\n deletionProtection: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"ACME\",\n commonName: \"my-certificate-authority\",\n },\n },\n subjectKeyId: {\n keyId: \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {},\n },\n },\n },\n lifetime: `${10 * 365 * 24 * 3600}s`,\n keySpec: {\n cloudKmsKeyVersion: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority\",\n location=\"us-central1\",\n deletion_protection=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"ACME\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"subject_key_id\": {\n \"key_id\": \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\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 },\n },\n },\n lifetime=f\"{10 * 365 * 24 * 3600}s\",\n key_spec={\n \"cloud_kms_key_version\": \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority\",\n Location = \"us-central1\",\n DeletionProtection = true,\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"ACME\",\n CommonName = \"my-certificate-authority\",\n },\n },\n SubjectKeyId = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectKeyIdArgs\n {\n KeyId = \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\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 = null,\n },\n },\n },\n Lifetime = $\"{10 * 365 * 24 * 3600}s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n CloudKmsKeyVersion = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"ACME\"),\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\tSubjectKeyId: \u0026certificateauthority.AuthorityConfigSubjectKeyIdArgs{\n\t\t\t\t\tKeyId: pulumi.String(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\"),\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\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},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.Sprintf(\"%vs\", 10*365*24*3600),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tCloudKmsKeyVersion: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectKeyIdArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority\")\n .location(\"us-central1\")\n .deletionProtection(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"ACME\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .subjectKeyId(AuthorityConfigSubjectKeyIdArgs.builder()\n .keyId(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\")\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage()\n .build())\n .build())\n .build())\n .lifetime(String.format(\"%ss\", 10 * 365 * 24 * 3600))\n .keySpec(AuthorityKeySpecArgs.builder()\n .cloudKmsKeyVersion(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\")\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificateAuthority can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificateAuthorities/{{certificate_authority_id}}`\n\n* `{{project}}/{{location}}/{{pool}}/{{certificate_authority_id}}`\n\n* `{{location}}/{{pool}}/{{certificate_authority_id}}`\n\nWhen using the `pulumi import` command, CertificateAuthority can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificateauthority/authority:Authority default projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificateAuthorities/{{certificate_authority_id}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/authority:Authority default {{project}}/{{location}}/{{pool}}/{{certificate_authority_id}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/authority:Authority default {{location}}/{{pool}}/{{certificate_authority_id}}\n```\n\n", + "description": "A CertificateAuthority represents an individual Certificate Authority. A\nCertificateAuthority can be used to create Certificates.\n\n\nTo get more information about CertificateAuthority, see:\n\n* [API documentation](https://cloud.google.com/certificate-authority-service/docs/reference/rest)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/certificate-authority-service)\n\n\u003e **Warning:** On newer versions of the provider, you must explicitly set `deletion_protection=false`\n(and run `pulumi up` to write the field to state) in order to destroy a CertificateAuthority.\nIt is recommended to not set this field (or set it to true) until you're ready to destroy.\n\n## Example Usage\n\n### Privateca Certificate Authority Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority\",\n location: \"us-central1\",\n deletionProtection: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"ACME\",\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 },\n },\n },\n lifetime: `${10 * 365 * 24 * 3600}s`,\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority\",\n location=\"us-central1\",\n deletion_protection=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"ACME\",\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 },\n },\n },\n lifetime=f\"{10 * 365 * 24 * 3600}s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority\",\n Location = \"us-central1\",\n DeletionProtection = true,\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"ACME\",\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 = null,\n },\n },\n },\n Lifetime = $\"{10 * 365 * 24 * 3600}s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"ACME\"),\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},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.Sprintf(\"%vs\", 10*365*24*3600),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority\")\n .location(\"us-central1\")\n .deletionProtection(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"ACME\")\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()\n .build())\n .build())\n .build())\n .lifetime(String.format(\"%ss\", 10 * 365 * 24 * 3600))\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Authority Subordinate\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst root_ca = new gcp.certificateauthority.Authority(\"root-ca\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority-root\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"ACME\",\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 },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority-sub\",\n location: \"us-central1\",\n deletionProtection: true,\n subordinateConfig: {\n certificateAuthority: root_ca.name,\n },\n config: {\n subjectConfig: {\n subject: {\n organization: \"ACME\",\n commonName: \"my-subordinate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n zeroMaxIssuerPathLength: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {},\n },\n },\n },\n lifetime: `${5 * 365 * 24 * 3600}s`,\n keySpec: {\n algorithm: \"RSA_PKCS1_2048_SHA256\",\n },\n type: \"SUBORDINATE\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nroot_ca = gcp.certificateauthority.Authority(\"root-ca\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority-root\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"ACME\",\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 },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority-sub\",\n location=\"us-central1\",\n deletion_protection=True,\n subordinate_config={\n \"certificate_authority\": root_ca.name,\n },\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"ACME\",\n \"common_name\": \"my-subordinate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n \"zero_max_issuer_path_length\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {},\n },\n },\n },\n lifetime=f\"{5 * 365 * 24 * 3600}s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_2048_SHA256\",\n },\n type=\"SUBORDINATE\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var root_ca = new Gcp.CertificateAuthority.Authority(\"root-ca\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority-root\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"ACME\",\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 = null,\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority-sub\",\n Location = \"us-central1\",\n DeletionProtection = true,\n SubordinateConfig = new Gcp.CertificateAuthority.Inputs.AuthoritySubordinateConfigArgs\n {\n CertificateAuthority = root_ca.Name,\n },\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"ACME\",\n CommonName = \"my-subordinate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n ZeroMaxIssuerPathLength = 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 = null,\n },\n },\n },\n Lifetime = $\"{5 * 365 * 24 * 3600}s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_2048_SHA256\",\n },\n Type = \"SUBORDINATE\",\n });\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\troot_ca, err := certificateauthority.NewAuthority(ctx, \"root-ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority-root\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"ACME\"),\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},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority-sub\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tSubordinateConfig: \u0026certificateauthority.AuthoritySubordinateConfigArgs{\n\t\t\t\tCertificateAuthority: root_ca.Name,\n\t\t\t},\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"ACME\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-subordinate-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\tZeroMaxIssuerPathLength: 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},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.Sprintf(\"%vs\", 5*365*24*3600),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_2048_SHA256\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SUBORDINATE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthoritySubordinateConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var root_ca = new Authority(\"root-ca\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority-root\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"ACME\")\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()\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var default_ = new Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority-sub\")\n .location(\"us-central1\")\n .deletionProtection(true)\n .subordinateConfig(AuthoritySubordinateConfigArgs.builder()\n .certificateAuthority(root_ca.name())\n .build())\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"ACME\")\n .commonName(\"my-subordinate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .zeroMaxIssuerPathLength(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage()\n .build())\n .build())\n .build())\n .lifetime(String.format(\"%ss\", 5 * 365 * 24 * 3600))\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_2048_SHA256\")\n .build())\n .type(\"SUBORDINATE\")\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Authority Byo Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst privatecaSa = new gcp.projects.ServiceIdentity(\"privateca_sa\", {service: \"privateca.googleapis.com\"});\nconst privatecaSaKeyuserSignerverifier = new gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_signerverifier\", {\n cryptoKeyId: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role: \"roles/cloudkms.signerVerifier\",\n member: privatecaSa.member,\n});\nconst privatecaSaKeyuserViewer = new gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_viewer\", {\n cryptoKeyId: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role: \"roles/viewer\",\n member: privatecaSa.member,\n});\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority\",\n location: \"us-central1\",\n deletionProtection: true,\n keySpec: {\n cloudKmsKeyVersion: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n config: {\n subjectConfig: {\n subject: {\n organization: \"Example, Org.\",\n commonName: \"Example Authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {},\n },\n nameConstraints: {\n critical: true,\n permittedDnsNames: [\"*.example.com\"],\n excludedDnsNames: [\"*.deny.example.com\"],\n permittedIpRanges: [\"10.0.0.0/8\"],\n excludedIpRanges: [\"10.1.1.0/24\"],\n permittedEmailAddresses: [\".example.com\"],\n excludedEmailAddresses: [\".deny.example.com\"],\n permittedUris: [\".example.com\"],\n excludedUris: [\".deny.example.com\"],\n },\n },\n },\n}, {\n dependsOn: [\n privatecaSaKeyuserSignerverifier,\n privatecaSaKeyuserViewer,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprivateca_sa = gcp.projects.ServiceIdentity(\"privateca_sa\", service=\"privateca.googleapis.com\")\nprivateca_sa_keyuser_signerverifier = gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_signerverifier\",\n crypto_key_id=\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role=\"roles/cloudkms.signerVerifier\",\n member=privateca_sa.member)\nprivateca_sa_keyuser_viewer = gcp.kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_viewer\",\n crypto_key_id=\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n role=\"roles/viewer\",\n member=privateca_sa.member)\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority\",\n location=\"us-central1\",\n deletion_protection=True,\n key_spec={\n \"cloud_kms_key_version\": \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"Example, Org.\",\n \"common_name\": \"Example Authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {},\n },\n \"name_constraints\": {\n \"critical\": True,\n \"permitted_dns_names\": [\"*.example.com\"],\n \"excluded_dns_names\": [\"*.deny.example.com\"],\n \"permitted_ip_ranges\": [\"10.0.0.0/8\"],\n \"excluded_ip_ranges\": [\"10.1.1.0/24\"],\n \"permitted_email_addresses\": [\".example.com\"],\n \"excluded_email_addresses\": [\".deny.example.com\"],\n \"permitted_uris\": [\".example.com\"],\n \"excluded_uris\": [\".deny.example.com\"],\n },\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[\n privateca_sa_keyuser_signerverifier,\n privateca_sa_keyuser_viewer,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var privatecaSa = new Gcp.Projects.ServiceIdentity(\"privateca_sa\", new()\n {\n Service = \"privateca.googleapis.com\",\n });\n\n var privatecaSaKeyuserSignerverifier = new Gcp.Kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_signerverifier\", new()\n {\n CryptoKeyId = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n Role = \"roles/cloudkms.signerVerifier\",\n Member = privatecaSa.Member,\n });\n\n var privatecaSaKeyuserViewer = new Gcp.Kms.CryptoKeyIAMMember(\"privateca_sa_keyuser_viewer\", new()\n {\n CryptoKeyId = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\",\n Role = \"roles/viewer\",\n Member = privatecaSa.Member,\n });\n\n var @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority\",\n Location = \"us-central1\",\n DeletionProtection = true,\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n CloudKmsKeyVersion = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"Example, Org.\",\n CommonName = \"Example Authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\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 = null,\n },\n NameConstraints = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigNameConstraintsArgs\n {\n Critical = true,\n PermittedDnsNames = new[]\n {\n \"*.example.com\",\n },\n ExcludedDnsNames = new[]\n {\n \"*.deny.example.com\",\n },\n PermittedIpRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n ExcludedIpRanges = new[]\n {\n \"10.1.1.0/24\",\n },\n PermittedEmailAddresses = new[]\n {\n \".example.com\",\n },\n ExcludedEmailAddresses = new[]\n {\n \".deny.example.com\",\n },\n PermittedUris = new[]\n {\n \".example.com\",\n },\n ExcludedUris = new[]\n {\n \".deny.example.com\",\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privatecaSaKeyuserSignerverifier,\n privatecaSaKeyuserViewer,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\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\tprivatecaSa, err := projects.NewServiceIdentity(ctx, \"privateca_sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"privateca.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivatecaSaKeyuserSignerverifier, err := kms.NewCryptoKeyIAMMember(ctx, \"privateca_sa_keyuser_signerverifier\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.signerVerifier\"),\n\t\t\tMember: privatecaSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivatecaSaKeyuserViewer, err := kms.NewCryptoKeyIAMMember(ctx, \"privateca_sa_keyuser_viewer\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\"),\n\t\t\tRole: pulumi.String(\"roles/viewer\"),\n\t\t\tMember: privatecaSa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tCloudKmsKeyVersion: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\"),\n\t\t\t},\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"Example, Org.\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"Example Authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\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},\n\t\t\t\t\tNameConstraints: \u0026certificateauthority.AuthorityConfigX509ConfigNameConstraintsArgs{\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t\tPermittedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.1.1.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivatecaSaKeyuserSignerverifier,\n\t\t\tprivatecaSaKeyuserViewer,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigNameConstraintsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var privatecaSa = new ServiceIdentity(\"privatecaSa\", ServiceIdentityArgs.builder()\n .service(\"privateca.googleapis.com\")\n .build());\n\n var privatecaSaKeyuserSignerverifier = new CryptoKeyIAMMember(\"privatecaSaKeyuserSignerverifier\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\")\n .role(\"roles/cloudkms.signerVerifier\")\n .member(privatecaSa.member())\n .build());\n\n var privatecaSaKeyuserViewer = new CryptoKeyIAMMember(\"privatecaSaKeyuserViewer\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\")\n .role(\"roles/viewer\")\n .member(privatecaSa.member())\n .build());\n\n var default_ = new Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority\")\n .location(\"us-central1\")\n .deletionProtection(true)\n .keySpec(AuthorityKeySpecArgs.builder()\n .cloudKmsKeyVersion(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\")\n .build())\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"Example, Org.\")\n .commonName(\"Example Authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage()\n .build())\n .nameConstraints(AuthorityConfigX509ConfigNameConstraintsArgs.builder()\n .critical(true)\n .permittedDnsNames(\"*.example.com\")\n .excludedDnsNames(\"*.deny.example.com\")\n .permittedIpRanges(\"10.0.0.0/8\")\n .excludedIpRanges(\"10.1.1.0/24\")\n .permittedEmailAddresses(\".example.com\")\n .excludedEmailAddresses(\".deny.example.com\")\n .permittedUris(\".example.com\")\n .excludedUris(\".deny.example.com\")\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n privatecaSaKeyuserSignerverifier,\n privatecaSaKeyuserViewer)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n privatecaSa:\n type: gcp:projects:ServiceIdentity\n name: privateca_sa\n properties:\n service: privateca.googleapis.com\n privatecaSaKeyuserSignerverifier:\n type: gcp:kms:CryptoKeyIAMMember\n name: privateca_sa_keyuser_signerverifier\n properties:\n cryptoKeyId: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\n role: roles/cloudkms.signerVerifier\n member: ${privatecaSa.member}\n privatecaSaKeyuserViewer:\n type: gcp:kms:CryptoKeyIAMMember\n name: privateca_sa_keyuser_viewer\n properties:\n cryptoKeyId: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key\n role: roles/viewer\n member: ${privatecaSa.member}\n default:\n type: gcp:certificateauthority:Authority\n properties:\n pool: ca-pool\n certificateAuthorityId: my-certificate-authority\n location: us-central1\n deletionProtection: true\n keySpec:\n cloudKmsKeyVersion: projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\n config:\n subjectConfig:\n subject:\n organization: Example, Org.\n commonName: Example Authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage: {}\n nameConstraints:\n critical: true\n permittedDnsNames:\n - '*.example.com'\n excludedDnsNames:\n - '*.deny.example.com'\n permittedIpRanges:\n - 10.0.0.0/8\n excludedIpRanges:\n - 10.1.1.0/24\n permittedEmailAddresses:\n - .example.com\n excludedEmailAddresses:\n - .deny.example.com\n permittedUris:\n - .example.com\n excludedUris:\n - .deny.example.com\n options:\n dependsOn:\n - ${privatecaSaKeyuserSignerverifier}\n - ${privatecaSaKeyuserViewer}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Authority Custom Ski\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificateauthority.Authority(\"default\", {\n pool: \"ca-pool\",\n certificateAuthorityId: \"my-certificate-authority\",\n location: \"us-central1\",\n deletionProtection: true,\n config: {\n subjectConfig: {\n subject: {\n organization: \"ACME\",\n commonName: \"my-certificate-authority\",\n },\n },\n subjectKeyId: {\n keyId: \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {},\n },\n },\n },\n lifetime: `${10 * 365 * 24 * 3600}s`,\n keySpec: {\n cloudKmsKeyVersion: \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.Authority(\"default\",\n pool=\"ca-pool\",\n certificate_authority_id=\"my-certificate-authority\",\n location=\"us-central1\",\n deletion_protection=True,\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"ACME\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"subject_key_id\": {\n \"key_id\": \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\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 },\n },\n },\n lifetime=f\"{10 * 365 * 24 * 3600}s\",\n key_spec={\n \"cloud_kms_key_version\": \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Pool = \"ca-pool\",\n CertificateAuthorityId = \"my-certificate-authority\",\n Location = \"us-central1\",\n DeletionProtection = true,\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"ACME\",\n CommonName = \"my-certificate-authority\",\n },\n },\n SubjectKeyId = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectKeyIdArgs\n {\n KeyId = \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\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 = null,\n },\n },\n },\n Lifetime = $\"{10 * 365 * 24 * 3600}s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n CloudKmsKeyVersion = \"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: pulumi.String(\"ca-pool\"),\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-certificate-authority\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"ACME\"),\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\tSubjectKeyId: \u0026certificateauthority.AuthorityConfigSubjectKeyIdArgs{\n\t\t\t\t\tKeyId: pulumi.String(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\"),\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\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},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.Sprintf(\"%vs\", 10*365*24*3600),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tCloudKmsKeyVersion: pulumi.String(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectKeyIdArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Authority(\"default\", AuthorityArgs.builder()\n .pool(\"ca-pool\")\n .certificateAuthorityId(\"my-certificate-authority\")\n .location(\"us-central1\")\n .deletionProtection(true)\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"ACME\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .subjectKeyId(AuthorityConfigSubjectKeyIdArgs.builder()\n .keyId(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\")\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage()\n .build())\n .build())\n .build())\n .lifetime(String.format(\"%ss\", 10 * 365 * 24 * 3600))\n .keySpec(AuthorityKeySpecArgs.builder()\n .cloudKmsKeyVersion(\"projects/keys-project/locations/us-central1/keyRings/key-ring/cryptoKeys/crypto-key/cryptoKeyVersions/1\")\n .build())\n .build());\n\n }\n}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificateAuthority can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificateAuthorities/{{certificate_authority_id}}`\n\n* `{{project}}/{{location}}/{{pool}}/{{certificate_authority_id}}`\n\n* `{{location}}/{{pool}}/{{certificate_authority_id}}`\n\nWhen using the `pulumi import` command, CertificateAuthority can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificateauthority/authority:Authority default projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificateAuthorities/{{certificate_authority_id}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/authority:Authority default {{project}}/{{location}}/{{pool}}/{{certificate_authority_id}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/authority:Authority default {{location}}/{{pool}}/{{certificate_authority_id}}\n```\n\n", "properties": { "accessUrls": { "type": "array", @@ -153230,7 +153230,7 @@ } }, "gcp:certificateauthority/certificate:Certificate": { - "description": "A Certificate corresponds to a signed X.509 certificate issued by a Certificate.\n\n\n\u003e **Note:** The Certificate Authority that is referenced by this resource **must** be\n`tier = \"ENTERPRISE\"`\n\n\n\n## Example Usage\n\n### Privateca Certificate Generated Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\nimport * as tls from \"@pulumi/tls\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"default\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-authority\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst certKey = new tls.PrivateKey(\"cert_key\", {algorithm: \"RSA\"});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthority: defaultAuthority.certificateAuthorityId,\n lifetime: \"86000s\",\n name: \"cert-1\",\n config: {\n subjectConfig: {\n subject: {\n commonName: \"san1.example.com\",\n countryCode: \"us\",\n organization: \"google\",\n organizationalUnit: \"enterprise\",\n locality: \"mountain view\",\n province: \"california\",\n streetAddress: \"1600 amphitheatre parkway\",\n },\n subjectAltName: {\n emailAddresses: [\"email@example.com\"],\n ipAddresses: [\"127.0.0.1\"],\n uris: [\"http://www.ietf.org/rfc/rfc3986.txt\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n nameConstraints: {\n critical: true,\n permittedDnsNames: [\"*.example.com\"],\n excludedDnsNames: [\"*.deny.example.com\"],\n permittedIpRanges: [\"10.0.0.0/8\"],\n excludedIpRanges: [\"10.1.1.0/24\"],\n permittedEmailAddresses: [\".example.com\"],\n excludedEmailAddresses: [\".deny.example.com\"],\n permittedUris: [\".example.com\"],\n excludedUris: [\".deny.example.com\"],\n },\n },\n publicKey: {\n format: \"PEM\",\n key: std.base64encodeOutput({\n input: certKey.publicKeyPem,\n }).apply(invoke =\u003e invoke.result),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\nimport pulumi_tls as tls\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"default\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ncert_key = tls.PrivateKey(\"cert_key\", algorithm=\"RSA\")\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority=default_authority.certificate_authority_id,\n lifetime=\"86000s\",\n name=\"cert-1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"common_name\": \"san1.example.com\",\n \"country_code\": \"us\",\n \"organization\": \"google\",\n \"organizational_unit\": \"enterprise\",\n \"locality\": \"mountain view\",\n \"province\": \"california\",\n \"street_address\": \"1600 amphitheatre parkway\",\n },\n \"subject_alt_name\": {\n \"email_addresses\": [\"email@example.com\"],\n \"ip_addresses\": [\"127.0.0.1\"],\n \"uris\": [\"http://www.ietf.org/rfc/rfc3986.txt\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n \"name_constraints\": {\n \"critical\": True,\n \"permitted_dns_names\": [\"*.example.com\"],\n \"excluded_dns_names\": [\"*.deny.example.com\"],\n \"permitted_ip_ranges\": [\"10.0.0.0/8\"],\n \"excluded_ip_ranges\": [\"10.1.1.0/24\"],\n \"permitted_email_addresses\": [\".example.com\"],\n \"excluded_email_addresses\": [\".deny.example.com\"],\n \"permitted_uris\": [\".example.com\"],\n \"excluded_uris\": [\".deny.example.com\"],\n },\n },\n \"public_key\": {\n \"format\": \"PEM\",\n \"key\": std.base64encode_output(input=cert_key.public_key_pem).apply(lambda invoke: invoke.result),\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"default\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-authority\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var certKey = new Tls.PrivateKey(\"cert_key\", new()\n {\n Algorithm = \"RSA\",\n });\n\n var defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthority = defaultAuthority.CertificateAuthorityId,\n Lifetime = \"86000s\",\n Name = \"cert-1\",\n Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectArgs\n {\n CommonName = \"san1.example.com\",\n CountryCode = \"us\",\n Organization = \"google\",\n OrganizationalUnit = \"enterprise\",\n Locality = \"mountain view\",\n Province = \"california\",\n StreetAddress = \"1600 amphitheatre parkway\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectAltNameArgs\n {\n EmailAddresses = new[]\n {\n \"email@example.com\",\n },\n IpAddresses = new[]\n {\n \"127.0.0.1\",\n },\n Uris = new[]\n {\n \"http://www.ietf.org/rfc/rfc3986.txt\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n NameConstraints = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigNameConstraintsArgs\n {\n Critical = true,\n PermittedDnsNames = new[]\n {\n \"*.example.com\",\n },\n ExcludedDnsNames = new[]\n {\n \"*.deny.example.com\",\n },\n PermittedIpRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n ExcludedIpRanges = new[]\n {\n \"10.1.1.0/24\",\n },\n PermittedEmailAddresses = new[]\n {\n \".example.com\",\n },\n ExcludedEmailAddresses = new[]\n {\n \".deny.example.com\",\n },\n PermittedUris = new[]\n {\n \".example.com\",\n },\n ExcludedUris = new[]\n {\n \".deny.example.com\",\n },\n },\n },\n PublicKey = new Gcp.CertificateAuthority.Inputs.CertificateConfigPublicKeyArgs\n {\n Format = \"PEM\",\n Key = Std.Base64encode.Invoke(new()\n {\n Input = certKey.PublicKeyPem,\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi-tls/sdk/v5/go/tls\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-authority\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcertKey, err := tls.NewPrivateKey(ctx, \"cert_key\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: pulumi.String(\"RSA\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthority: defaultAuthority.CertificateAuthorityId,\n\t\t\tLifetime: pulumi.String(\"86000s\"),\n\t\t\tName: pulumi.String(\"cert-1\"),\n\t\t\tConfig: \u0026certificateauthority.CertificateConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.CertificateConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tCommonName: pulumi.String(\"san1.example.com\"),\n\t\t\t\t\t\tCountryCode: pulumi.String(\"us\"),\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tOrganizationalUnit: pulumi.String(\"enterprise\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"mountain view\"),\n\t\t\t\t\t\tProvince: pulumi.String(\"california\"),\n\t\t\t\t\t\tStreetAddress: pulumi.String(\"1600 amphitheatre parkway\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"email@example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tIpAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"http://www.ietf.org/rfc/rfc3986.txt\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.CertificateConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CertificateConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNameConstraints: \u0026certificateauthority.CertificateConfigX509ConfigNameConstraintsArgs{\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t\tPermittedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.1.1.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPublicKey: \u0026certificateauthority.CertificateConfigPublicKeyArgs{\n\t\t\t\t\tFormat: pulumi.String(\"PEM\"),\n\t\t\t\t\tKey: std.Base64encodeOutput(ctx, std.Base64encodeOutputArgs{\n\t\t\t\t\t\tInput: certKey.PublicKeyPem,\n\t\t\t\t\t}, nil).ApplyT(func(invoke std.Base64encodeResult) (*string, error) {\n\t\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.tls.PrivateKey;\nimport com.pulumi.tls.PrivateKeyArgs;\nimport com.pulumi.gcp.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigNameConstraintsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigPublicKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"default\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-authority\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var certKey = new PrivateKey(\"certKey\", PrivateKeyArgs.builder()\n .algorithm(\"RSA\")\n .build());\n\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthority(defaultAuthority.certificateAuthorityId())\n .lifetime(\"86000s\")\n .name(\"cert-1\")\n .config(CertificateConfigArgs.builder()\n .subjectConfig(CertificateConfigSubjectConfigArgs.builder()\n .subject(CertificateConfigSubjectConfigSubjectArgs.builder()\n .commonName(\"san1.example.com\")\n .countryCode(\"us\")\n .organization(\"google\")\n .organizationalUnit(\"enterprise\")\n .locality(\"mountain view\")\n .province(\"california\")\n .streetAddress(\"1600 amphitheatre parkway\")\n .build())\n .subjectAltName(CertificateConfigSubjectConfigSubjectAltNameArgs.builder()\n .emailAddresses(\"email@example.com\")\n .ipAddresses(\"127.0.0.1\")\n .uris(\"http://www.ietf.org/rfc/rfc3986.txt\")\n .build())\n .build())\n .x509Config(CertificateConfigX509ConfigArgs.builder()\n .caOptions(CertificateConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(CertificateConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .nameConstraints(CertificateConfigX509ConfigNameConstraintsArgs.builder()\n .critical(true)\n .permittedDnsNames(\"*.example.com\")\n .excludedDnsNames(\"*.deny.example.com\")\n .permittedIpRanges(\"10.0.0.0/8\")\n .excludedIpRanges(\"10.1.1.0/24\")\n .permittedEmailAddresses(\".example.com\")\n .excludedEmailAddresses(\".deny.example.com\")\n .permittedUris(\".example.com\")\n .excludedUris(\".deny.example.com\")\n .build())\n .build())\n .publicKey(CertificateConfigPublicKeyArgs.builder()\n .format(\"PEM\")\n .key(StdFunctions.base64encode().applyValue(invoke -\u003e invoke.result()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: default\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-authority\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n certKey:\n type: tls:PrivateKey\n name: cert_key\n properties:\n algorithm: RSA\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthority: ${defaultAuthority.certificateAuthorityId}\n lifetime: 86000s\n name: cert-1\n config:\n subjectConfig:\n subject:\n commonName: san1.example.com\n countryCode: us\n organization: google\n organizationalUnit: enterprise\n locality: mountain view\n province: california\n streetAddress: 1600 amphitheatre parkway\n subjectAltName:\n emailAddresses:\n - email@example.com\n ipAddresses:\n - 127.0.0.1\n uris:\n - http://www.ietf.org/rfc/rfc3986.txt\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n nameConstraints:\n critical: true\n permittedDnsNames:\n - '*.example.com'\n excludedDnsNames:\n - '*.deny.example.com'\n permittedIpRanges:\n - 10.0.0.0/8\n excludedIpRanges:\n - 10.1.1.0/24\n permittedEmailAddresses:\n - .example.com\n excludedEmailAddresses:\n - .deny.example.com\n permittedUris:\n - .example.com\n excludedUris:\n - .deny.example.com\n publicKey:\n format: PEM\n key:\n fn::invoke:\n function: std:base64encode\n arguments:\n input: ${certKey.publicKeyPem}\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate With Template\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultCertificateTemplate = new gcp.certificateauthority.CertificateTemplate(\"default\", {\n location: \"us-central1\",\n name: \"my-certificate-template\",\n description: \"An updated sample certificate template\",\n identityConstraints: {\n allowSubjectAltNamesPassthrough: true,\n allowSubjectPassthrough: true,\n celExpression: {\n description: \"Always true\",\n expression: \"true\",\n location: \"any.file.anywhere\",\n title: \"Sample expression\",\n },\n },\n passthroughExtensions: {\n additionalExtensions: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n knownExtensions: [\"EXTENDED_KEY_USAGE\"],\n },\n predefinedValues: {\n additionalExtensions: [{\n objectId: {\n objectIdPaths: [\n 1,\n 6,\n ],\n },\n value: \"c3RyaW5nCg==\",\n critical: true,\n }],\n aiaOcspServers: [\"string\"],\n caOptions: {\n isCa: false,\n maxIssuerPathLength: 6,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: false,\n contentCommitment: true,\n crlSign: false,\n dataEncipherment: true,\n decipherOnly: true,\n digitalSignature: true,\n encipherOnly: true,\n keyAgreement: true,\n keyEncipherment: true,\n },\n extendedKeyUsage: {\n clientAuth: true,\n codeSigning: true,\n emailProtection: true,\n ocspSigning: true,\n serverAuth: true,\n timeStamping: true,\n },\n unknownExtendedKeyUsages: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n },\n policyIds: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-authority\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthority: defaultAuthority.certificateAuthorityId,\n name: \"my-certificate\",\n lifetime: \"860s\",\n pemCsr: std.file({\n input: \"test-fixtures/rsa_csr.pem\",\n }).then(invoke =\u003e invoke.result),\n certificateTemplate: defaultCertificateTemplate.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_certificate_template = gcp.certificateauthority.CertificateTemplate(\"default\",\n location=\"us-central1\",\n name=\"my-certificate-template\",\n description=\"An updated sample certificate template\",\n identity_constraints={\n \"allow_subject_alt_names_passthrough\": True,\n \"allow_subject_passthrough\": True,\n \"cel_expression\": {\n \"description\": \"Always true\",\n \"expression\": \"true\",\n \"location\": \"any.file.anywhere\",\n \"title\": \"Sample expression\",\n },\n },\n passthrough_extensions={\n \"additional_extensions\": [{\n \"object_id_paths\": [\n 1,\n 6,\n ],\n }],\n \"known_extensions\": [\"EXTENDED_KEY_USAGE\"],\n },\n predefined_values={\n \"additional_extensions\": [{\n \"object_id\": {\n \"object_id_paths\": [\n 1,\n 6,\n ],\n },\n \"value\": \"c3RyaW5nCg==\",\n \"critical\": True,\n }],\n \"aia_ocsp_servers\": [\"string\"],\n \"ca_options\": {\n \"is_ca\": False,\n \"max_issuer_path_length\": 6,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": False,\n \"content_commitment\": True,\n \"crl_sign\": False,\n \"data_encipherment\": True,\n \"decipher_only\": True,\n \"digital_signature\": True,\n \"encipher_only\": True,\n \"key_agreement\": True,\n \"key_encipherment\": True,\n },\n \"extended_key_usage\": {\n \"client_auth\": True,\n \"code_signing\": True,\n \"email_protection\": True,\n \"ocsp_signing\": True,\n \"server_auth\": True,\n \"time_stamping\": True,\n },\n \"unknown_extended_key_usages\": [{\n \"object_id_paths\": [\n 1,\n 6,\n ],\n }],\n },\n \"policy_ids\": [{\n \"object_id_paths\": [\n 1,\n 6,\n ],\n }],\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority=default_authority.certificate_authority_id,\n name=\"my-certificate\",\n lifetime=\"860s\",\n pem_csr=std.file(input=\"test-fixtures/rsa_csr.pem\").result,\n certificate_template=default_certificate_template.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultCertificateTemplate = new Gcp.CertificateAuthority.CertificateTemplate(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-certificate-template\",\n Description = \"An updated sample certificate template\",\n IdentityConstraints = new Gcp.CertificateAuthority.Inputs.CertificateTemplateIdentityConstraintsArgs\n {\n AllowSubjectAltNamesPassthrough = true,\n AllowSubjectPassthrough = true,\n CelExpression = new Gcp.CertificateAuthority.Inputs.CertificateTemplateIdentityConstraintsCelExpressionArgs\n {\n Description = \"Always true\",\n Expression = \"true\",\n Location = \"any.file.anywhere\",\n Title = \"Sample expression\",\n },\n },\n PassthroughExtensions = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePassthroughExtensionsArgs\n {\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n KnownExtensions = new[]\n {\n \"EXTENDED_KEY_USAGE\",\n },\n },\n PredefinedValues = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesArgs\n {\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesAdditionalExtensionArgs\n {\n ObjectId = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n Value = \"c3RyaW5nCg==\",\n Critical = true,\n },\n },\n AiaOcspServers = new[]\n {\n \"string\",\n },\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesCaOptionsArgs\n {\n IsCa = false,\n MaxIssuerPathLength = 6,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs\n {\n CertSign = false,\n ContentCommitment = true,\n CrlSign = false,\n DataEncipherment = true,\n DecipherOnly = true,\n DigitalSignature = true,\n EncipherOnly = true,\n KeyAgreement = true,\n KeyEncipherment = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs\n {\n ClientAuth = true,\n CodeSigning = true,\n EmailProtection = true,\n OcspSigning = true,\n ServerAuth = true,\n TimeStamping = true,\n },\n UnknownExtendedKeyUsages = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n },\n PolicyIds = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesPolicyIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-authority\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthority = defaultAuthority.CertificateAuthorityId,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n PemCsr = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/rsa_csr.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n CertificateTemplate = defaultCertificateTemplate.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCertificateTemplate, err := certificateauthority.NewCertificateTemplate(ctx, \"default\", \u0026certificateauthority.CertificateTemplateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate-template\"),\n\t\t\tDescription: pulumi.String(\"An updated sample certificate template\"),\n\t\t\tIdentityConstraints: \u0026certificateauthority.CertificateTemplateIdentityConstraintsArgs{\n\t\t\t\tAllowSubjectAltNamesPassthrough: pulumi.Bool(true),\n\t\t\t\tAllowSubjectPassthrough: pulumi.Bool(true),\n\t\t\t\tCelExpression: \u0026certificateauthority.CertificateTemplateIdentityConstraintsCelExpressionArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Always true\"),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t\tLocation: pulumi.String(\"any.file.anywhere\"),\n\t\t\t\t\tTitle: pulumi.String(\"Sample expression\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPassthroughExtensions: \u0026certificateauthority.CertificateTemplatePassthroughExtensionsArgs{\n\t\t\t\tAdditionalExtensions: certificateauthority.CertificateTemplatePassthroughExtensionsAdditionalExtensionArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs{\n\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tKnownExtensions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"EXTENDED_KEY_USAGE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPredefinedValues: \u0026certificateauthority.CertificateTemplatePredefinedValuesArgs{\n\t\t\t\tAdditionalExtensions: certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionArgs{\n\t\t\t\t\t\tObjectId: \u0026certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tValue: pulumi.String(\"c3RyaW5nCg==\"),\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAiaOcspServers: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"string\"),\n\t\t\t\t},\n\t\t\t\tCaOptions: \u0026certificateauthority.CertificateTemplatePredefinedValuesCaOptionsArgs{\n\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\tMaxIssuerPathLength: pulumi.Int(6),\n\t\t\t\t},\n\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageArgs{\n\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\tCertSign: pulumi.Bool(false),\n\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\tCrlSign: pulumi.Bool(false),\n\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\tDecipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\tEncipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\n\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\tClientAuth: pulumi.Bool(true),\n\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\tOcspSigning: pulumi.Bool(true),\n\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\tTimeStamping: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tUnknownExtendedKeyUsages: certificateauthority.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArray{\n\t\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPolicyIds: certificateauthority.CertificateTemplatePredefinedValuesPolicyIdArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesPolicyIdArgs{\n\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-authority\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/rsa_csr.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthority: defaultAuthority.CertificateAuthorityId,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tPemCsr: pulumi.String(invokeFile.Result),\n\t\t\tCertificateTemplate: defaultCertificateTemplate.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.CertificateTemplate;\nimport com.pulumi.gcp.certificateauthority.CertificateTemplateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplateIdentityConstraintsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplateIdentityConstraintsCelExpressionArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePassthroughExtensionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultCertificateTemplate = new CertificateTemplate(\"defaultCertificateTemplate\", CertificateTemplateArgs.builder()\n .location(\"us-central1\")\n .name(\"my-certificate-template\")\n .description(\"An updated sample certificate template\")\n .identityConstraints(CertificateTemplateIdentityConstraintsArgs.builder()\n .allowSubjectAltNamesPassthrough(true)\n .allowSubjectPassthrough(true)\n .celExpression(CertificateTemplateIdentityConstraintsCelExpressionArgs.builder()\n .description(\"Always true\")\n .expression(\"true\")\n .location(\"any.file.anywhere\")\n .title(\"Sample expression\")\n .build())\n .build())\n .passthroughExtensions(CertificateTemplatePassthroughExtensionsArgs.builder()\n .additionalExtensions(CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .knownExtensions(\"EXTENDED_KEY_USAGE\")\n .build())\n .predefinedValues(CertificateTemplatePredefinedValuesArgs.builder()\n .additionalExtensions(CertificateTemplatePredefinedValuesAdditionalExtensionArgs.builder()\n .objectId(CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .value(\"c3RyaW5nCg==\")\n .critical(true)\n .build())\n .aiaOcspServers(\"string\")\n .caOptions(CertificateTemplatePredefinedValuesCaOptionsArgs.builder()\n .isCa(false)\n .maxIssuerPathLength(6)\n .build())\n .keyUsage(CertificateTemplatePredefinedValuesKeyUsageArgs.builder()\n .baseKeyUsage(CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs.builder()\n .certSign(false)\n .contentCommitment(true)\n .crlSign(false)\n .dataEncipherment(true)\n .decipherOnly(true)\n .digitalSignature(true)\n .encipherOnly(true)\n .keyAgreement(true)\n .keyEncipherment(true)\n .build())\n .extendedKeyUsage(CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs.builder()\n .clientAuth(true)\n .codeSigning(true)\n .emailProtection(true)\n .ocspSigning(true)\n .serverAuth(true)\n .timeStamping(true)\n .build())\n .unknownExtendedKeyUsages(CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .build())\n .policyIds(CertificateTemplatePredefinedValuesPolicyIdArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-authority\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthority(defaultAuthority.certificateAuthorityId())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .pemCsr(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/rsa_csr.pem\")\n .build()).result())\n .certificateTemplate(defaultCertificateTemplate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultCertificateTemplate:\n type: gcp:certificateauthority:CertificateTemplate\n name: default\n properties:\n location: us-central1\n name: my-certificate-template\n description: An updated sample certificate template\n identityConstraints:\n allowSubjectAltNamesPassthrough: true\n allowSubjectPassthrough: true\n celExpression:\n description: Always true\n expression: 'true'\n location: any.file.anywhere\n title: Sample expression\n passthroughExtensions:\n additionalExtensions:\n - objectIdPaths:\n - 1\n - 6\n knownExtensions:\n - EXTENDED_KEY_USAGE\n predefinedValues:\n additionalExtensions:\n - objectId:\n objectIdPaths:\n - 1\n - 6\n value: c3RyaW5nCg==\n critical: true\n aiaOcspServers:\n - string\n caOptions:\n isCa: false\n maxIssuerPathLength: 6\n keyUsage:\n baseKeyUsage:\n certSign: false\n contentCommitment: true\n crlSign: false\n dataEncipherment: true\n decipherOnly: true\n digitalSignature: true\n encipherOnly: true\n keyAgreement: true\n keyEncipherment: true\n extendedKeyUsage:\n clientAuth: true\n codeSigning: true\n emailProtection: true\n ocspSigning: true\n serverAuth: true\n timeStamping: true\n unknownExtendedKeyUsages:\n - objectIdPaths:\n - 1\n - 6\n policyIds:\n - objectIdPaths:\n - 1\n - 6\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-authority\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthority: ${defaultAuthority.certificateAuthorityId}\n name: my-certificate\n lifetime: 860s\n pemCsr:\n fn::invoke:\n function: std:file\n arguments:\n input: test-fixtures/rsa_csr.pem\n return: result\n certificateTemplate: ${defaultCertificateTemplate.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Csr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-authority\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthority: defaultAuthority.certificateAuthorityId,\n name: \"my-certificate\",\n lifetime: \"860s\",\n pemCsr: std.file({\n input: \"test-fixtures/rsa_csr.pem\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority=default_authority.certificate_authority_id,\n name=\"my-certificate\",\n lifetime=\"860s\",\n pem_csr=std.file(input=\"test-fixtures/rsa_csr.pem\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-authority\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthority = defaultAuthority.CertificateAuthorityId,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n PemCsr = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/rsa_csr.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-authority\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/rsa_csr.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthority: defaultAuthority.CertificateAuthorityId,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tPemCsr: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-authority\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthority(defaultAuthority.certificateAuthorityId())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .pemCsr(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/rsa_csr.pem\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-authority\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthority: ${defaultAuthority.certificateAuthorityId}\n name: my-certificate\n lifetime: 860s\n pemCsr:\n fn::invoke:\n function: std:file\n arguments:\n input: test-fixtures/rsa_csr.pem\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate No Authority\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-authority\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n digitalSignature: true,\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n name: \"my-certificate\",\n lifetime: \"860s\",\n config: {\n subjectConfig: {\n subject: {\n commonName: \"san1.example.com\",\n countryCode: \"us\",\n organization: \"google\",\n organizationalUnit: \"enterprise\",\n locality: \"mountain view\",\n province: \"california\",\n streetAddress: \"1600 amphitheatre parkway\",\n postalCode: \"94109\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n publicKey: {\n format: \"PEM\",\n key: std.filebase64({\n input: \"test-fixtures/rsa_public.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n },\n}, {\n dependsOn: [defaultAuthority],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"digital_signature\": True,\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n name=\"my-certificate\",\n lifetime=\"860s\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"common_name\": \"san1.example.com\",\n \"country_code\": \"us\",\n \"organization\": \"google\",\n \"organizational_unit\": \"enterprise\",\n \"locality\": \"mountain view\",\n \"province\": \"california\",\n \"street_address\": \"1600 amphitheatre parkway\",\n \"postal_code\": \"94109\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n \"public_key\": {\n \"format\": \"PEM\",\n \"key\": std.filebase64(input=\"test-fixtures/rsa_public.pem\").result,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[default_authority]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-authority\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n DigitalSignature = true,\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectArgs\n {\n CommonName = \"san1.example.com\",\n CountryCode = \"us\",\n Organization = \"google\",\n OrganizationalUnit = \"enterprise\",\n Locality = \"mountain view\",\n Province = \"california\",\n StreetAddress = \"1600 amphitheatre parkway\",\n PostalCode = \"94109\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n PublicKey = new Gcp.CertificateAuthority.Inputs.CertificateConfigPublicKeyArgs\n {\n Format = \"PEM\",\n Key = Std.Filebase64.Invoke(new()\n {\n Input = \"test-fixtures/rsa_public.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultAuthority,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-authority\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"test-fixtures/rsa_public.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tConfig: \u0026certificateauthority.CertificateConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.CertificateConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tCommonName: pulumi.String(\"san1.example.com\"),\n\t\t\t\t\t\tCountryCode: pulumi.String(\"us\"),\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tOrganizationalUnit: pulumi.String(\"enterprise\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"mountain view\"),\n\t\t\t\t\t\tProvince: pulumi.String(\"california\"),\n\t\t\t\t\t\tStreetAddress: pulumi.String(\"1600 amphitheatre parkway\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"94109\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.CertificateConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CertificateConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPublicKey: \u0026certificateauthority.CertificateConfigPublicKeyArgs{\n\t\t\t\t\tFormat: pulumi.String(\"PEM\"),\n\t\t\t\t\tKey: pulumi.String(invokeFilebase64.Result),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultAuthority,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigPublicKeyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-authority\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .digitalSignature(true)\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .config(CertificateConfigArgs.builder()\n .subjectConfig(CertificateConfigSubjectConfigArgs.builder()\n .subject(CertificateConfigSubjectConfigSubjectArgs.builder()\n .commonName(\"san1.example.com\")\n .countryCode(\"us\")\n .organization(\"google\")\n .organizationalUnit(\"enterprise\")\n .locality(\"mountain view\")\n .province(\"california\")\n .streetAddress(\"1600 amphitheatre parkway\")\n .postalCode(\"94109\")\n .build())\n .build())\n .x509Config(CertificateConfigX509ConfigArgs.builder()\n .caOptions(CertificateConfigX509ConfigCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CertificateConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .crlSign(true)\n .build())\n .extendedKeyUsage(CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .publicKey(CertificateConfigPublicKeyArgs.builder()\n .format(\"PEM\")\n .key(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"test-fixtures/rsa_public.pem\")\n .build()).result())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultAuthority)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-authority\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n digitalSignature: true\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n lifetime: 86400s\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n name: my-certificate\n lifetime: 860s\n config:\n subjectConfig:\n subject:\n commonName: san1.example.com\n countryCode: us\n organization: google\n organizationalUnit: enterprise\n locality: mountain view\n province: california\n streetAddress: 1600 amphitheatre parkway\n postalCode: '94109'\n x509Config:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage:\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n publicKey:\n format: PEM\n key:\n fn::invoke:\n function: std:filebase64\n arguments:\n input: test-fixtures/rsa_public.pem\n return: result\n options:\n dependsOn:\n - ${defaultAuthority}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Custom Ski\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-authority\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n digitalSignature: true,\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n name: \"my-certificate\",\n lifetime: \"860s\",\n config: {\n subjectConfig: {\n subject: {\n commonName: \"san1.example.com\",\n countryCode: \"us\",\n organization: \"google\",\n organizationalUnit: \"enterprise\",\n locality: \"mountain view\",\n province: \"california\",\n streetAddress: \"1600 amphitheatre parkway\",\n postalCode: \"94109\",\n },\n },\n subjectKeyId: {\n keyId: \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n x509Config: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n publicKey: {\n format: \"PEM\",\n key: std.filebase64({\n input: \"test-fixtures/rsa_public.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n },\n}, {\n dependsOn: [defaultAuthority],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"digital_signature\": True,\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n name=\"my-certificate\",\n lifetime=\"860s\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"common_name\": \"san1.example.com\",\n \"country_code\": \"us\",\n \"organization\": \"google\",\n \"organizational_unit\": \"enterprise\",\n \"locality\": \"mountain view\",\n \"province\": \"california\",\n \"street_address\": \"1600 amphitheatre parkway\",\n \"postal_code\": \"94109\",\n },\n },\n \"subject_key_id\": {\n \"key_id\": \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n \"public_key\": {\n \"format\": \"PEM\",\n \"key\": std.filebase64(input=\"test-fixtures/rsa_public.pem\").result,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[default_authority]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-authority\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n DigitalSignature = true,\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectArgs\n {\n CommonName = \"san1.example.com\",\n CountryCode = \"us\",\n Organization = \"google\",\n OrganizationalUnit = \"enterprise\",\n Locality = \"mountain view\",\n Province = \"california\",\n StreetAddress = \"1600 amphitheatre parkway\",\n PostalCode = \"94109\",\n },\n },\n SubjectKeyId = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectKeyIdArgs\n {\n KeyId = \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n PublicKey = new Gcp.CertificateAuthority.Inputs.CertificateConfigPublicKeyArgs\n {\n Format = \"PEM\",\n Key = Std.Filebase64.Invoke(new()\n {\n Input = \"test-fixtures/rsa_public.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultAuthority,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-authority\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"test-fixtures/rsa_public.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tConfig: \u0026certificateauthority.CertificateConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.CertificateConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tCommonName: pulumi.String(\"san1.example.com\"),\n\t\t\t\t\t\tCountryCode: pulumi.String(\"us\"),\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tOrganizationalUnit: pulumi.String(\"enterprise\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"mountain view\"),\n\t\t\t\t\t\tProvince: pulumi.String(\"california\"),\n\t\t\t\t\t\tStreetAddress: pulumi.String(\"1600 amphitheatre parkway\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"94109\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSubjectKeyId: \u0026certificateauthority.CertificateConfigSubjectKeyIdArgs{\n\t\t\t\t\tKeyId: pulumi.String(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\"),\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.CertificateConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CertificateConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPublicKey: \u0026certificateauthority.CertificateConfigPublicKeyArgs{\n\t\t\t\t\tFormat: pulumi.String(\"PEM\"),\n\t\t\t\t\tKey: pulumi.String(invokeFilebase64.Result),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultAuthority,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectKeyIdArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigPublicKeyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-authority\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .digitalSignature(true)\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .config(CertificateConfigArgs.builder()\n .subjectConfig(CertificateConfigSubjectConfigArgs.builder()\n .subject(CertificateConfigSubjectConfigSubjectArgs.builder()\n .commonName(\"san1.example.com\")\n .countryCode(\"us\")\n .organization(\"google\")\n .organizationalUnit(\"enterprise\")\n .locality(\"mountain view\")\n .province(\"california\")\n .streetAddress(\"1600 amphitheatre parkway\")\n .postalCode(\"94109\")\n .build())\n .build())\n .subjectKeyId(CertificateConfigSubjectKeyIdArgs.builder()\n .keyId(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\")\n .build())\n .x509Config(CertificateConfigX509ConfigArgs.builder()\n .caOptions(CertificateConfigX509ConfigCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CertificateConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .crlSign(true)\n .build())\n .extendedKeyUsage(CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .publicKey(CertificateConfigPublicKeyArgs.builder()\n .format(\"PEM\")\n .key(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"test-fixtures/rsa_public.pem\")\n .build()).result())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultAuthority)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-authority\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n digitalSignature: true\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n lifetime: 86400s\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n name: my-certificate\n lifetime: 860s\n config:\n subjectConfig:\n subject:\n commonName: san1.example.com\n countryCode: us\n organization: google\n organizationalUnit: enterprise\n locality: mountain view\n province: california\n streetAddress: 1600 amphitheatre parkway\n postalCode: '94109'\n subjectKeyId:\n keyId: 4cf3372289b1d411b999dbb9ebcd44744b6b2fca\n x509Config:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage:\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n publicKey:\n format: PEM\n key:\n fn::invoke:\n function: std:filebase64\n arguments:\n input: test-fixtures/rsa_public.pem\n return: result\n options:\n dependsOn:\n - ${defaultAuthority}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificates/{{name}}`\n\n* `{{project}}/{{location}}/{{pool}}/{{name}}`\n\n* `{{location}}/{{pool}}/{{name}}`\n\nWhen using the `pulumi import` command, Certificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificateauthority/certificate:Certificate default projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/certificate:Certificate default {{project}}/{{location}}/{{pool}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/certificate:Certificate default {{location}}/{{pool}}/{{name}}\n```\n\n", + "description": "A Certificate corresponds to a signed X.509 certificate issued by a Certificate.\n\n\n\u003e **Note:** The Certificate Authority that is referenced by this resource **must** be\n`tier = \"ENTERPRISE\"`\n\n\n\n## Example Usage\n\n### Privateca Certificate Generated Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\nimport * as tls from \"@pulumi/tls\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"default\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-authority\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst certKey = new tls.PrivateKey(\"cert_key\", {algorithm: \"RSA\"});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthority: defaultAuthority.certificateAuthorityId,\n lifetime: \"86000s\",\n name: \"cert-1\",\n config: {\n subjectConfig: {\n subject: {\n commonName: \"san1.example.com\",\n countryCode: \"us\",\n organization: \"google\",\n organizationalUnit: \"enterprise\",\n locality: \"mountain view\",\n province: \"california\",\n streetAddress: \"1600 amphitheatre parkway\",\n },\n subjectAltName: {\n emailAddresses: [\"email@example.com\"],\n ipAddresses: [\"127.0.0.1\"],\n uris: [\"http://www.ietf.org/rfc/rfc3986.txt\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n nameConstraints: {\n critical: true,\n permittedDnsNames: [\"*.example.com\"],\n excludedDnsNames: [\"*.deny.example.com\"],\n permittedIpRanges: [\"10.0.0.0/8\"],\n excludedIpRanges: [\"10.1.1.0/24\"],\n permittedEmailAddresses: [\".example.com\"],\n excludedEmailAddresses: [\".deny.example.com\"],\n permittedUris: [\".example.com\"],\n excludedUris: [\".deny.example.com\"],\n },\n },\n publicKey: {\n format: \"PEM\",\n key: std.base64encodeOutput({\n input: certKey.publicKeyPem,\n }).apply(invoke =\u003e invoke.result),\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\nimport pulumi_tls as tls\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"default\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ncert_key = tls.PrivateKey(\"cert_key\", algorithm=\"RSA\")\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority=default_authority.certificate_authority_id,\n lifetime=\"86000s\",\n name=\"cert-1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"common_name\": \"san1.example.com\",\n \"country_code\": \"us\",\n \"organization\": \"google\",\n \"organizational_unit\": \"enterprise\",\n \"locality\": \"mountain view\",\n \"province\": \"california\",\n \"street_address\": \"1600 amphitheatre parkway\",\n },\n \"subject_alt_name\": {\n \"email_addresses\": [\"email@example.com\"],\n \"ip_addresses\": [\"127.0.0.1\"],\n \"uris\": [\"http://www.ietf.org/rfc/rfc3986.txt\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n \"name_constraints\": {\n \"critical\": True,\n \"permitted_dns_names\": [\"*.example.com\"],\n \"excluded_dns_names\": [\"*.deny.example.com\"],\n \"permitted_ip_ranges\": [\"10.0.0.0/8\"],\n \"excluded_ip_ranges\": [\"10.1.1.0/24\"],\n \"permitted_email_addresses\": [\".example.com\"],\n \"excluded_email_addresses\": [\".deny.example.com\"],\n \"permitted_uris\": [\".example.com\"],\n \"excluded_uris\": [\".deny.example.com\"],\n },\n },\n \"public_key\": {\n \"format\": \"PEM\",\n \"key\": std.base64encode_output(input=cert_key.public_key_pem).apply(lambda invoke: invoke.result),\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\nusing Tls = Pulumi.Tls;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"default\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-authority\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var certKey = new Tls.PrivateKey(\"cert_key\", new()\n {\n Algorithm = \"RSA\",\n });\n\n var defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthority = defaultAuthority.CertificateAuthorityId,\n Lifetime = \"86000s\",\n Name = \"cert-1\",\n Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectArgs\n {\n CommonName = \"san1.example.com\",\n CountryCode = \"us\",\n Organization = \"google\",\n OrganizationalUnit = \"enterprise\",\n Locality = \"mountain view\",\n Province = \"california\",\n StreetAddress = \"1600 amphitheatre parkway\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectAltNameArgs\n {\n EmailAddresses = new[]\n {\n \"email@example.com\",\n },\n IpAddresses = new[]\n {\n \"127.0.0.1\",\n },\n Uris = new[]\n {\n \"http://www.ietf.org/rfc/rfc3986.txt\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n NameConstraints = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigNameConstraintsArgs\n {\n Critical = true,\n PermittedDnsNames = new[]\n {\n \"*.example.com\",\n },\n ExcludedDnsNames = new[]\n {\n \"*.deny.example.com\",\n },\n PermittedIpRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n ExcludedIpRanges = new[]\n {\n \"10.1.1.0/24\",\n },\n PermittedEmailAddresses = new[]\n {\n \".example.com\",\n },\n ExcludedEmailAddresses = new[]\n {\n \".deny.example.com\",\n },\n PermittedUris = new[]\n {\n \".example.com\",\n },\n ExcludedUris = new[]\n {\n \".deny.example.com\",\n },\n },\n },\n PublicKey = new Gcp.CertificateAuthority.Inputs.CertificateConfigPublicKeyArgs\n {\n Format = \"PEM\",\n Key = Std.Base64encode.Invoke(new()\n {\n Input = certKey.PublicKeyPem,\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi-tls/sdk/v5/go/tls\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-authority\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcertKey, err := tls.NewPrivateKey(ctx, \"cert_key\", \u0026tls.PrivateKeyArgs{\n\t\t\tAlgorithm: pulumi.String(\"RSA\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthority: defaultAuthority.CertificateAuthorityId,\n\t\t\tLifetime: pulumi.String(\"86000s\"),\n\t\t\tName: pulumi.String(\"cert-1\"),\n\t\t\tConfig: \u0026certificateauthority.CertificateConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.CertificateConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tCommonName: pulumi.String(\"san1.example.com\"),\n\t\t\t\t\t\tCountryCode: pulumi.String(\"us\"),\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tOrganizationalUnit: pulumi.String(\"enterprise\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"mountain view\"),\n\t\t\t\t\t\tProvince: pulumi.String(\"california\"),\n\t\t\t\t\t\tStreetAddress: pulumi.String(\"1600 amphitheatre parkway\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"email@example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tIpAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"127.0.0.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"http://www.ietf.org/rfc/rfc3986.txt\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.CertificateConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CertificateConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNameConstraints: \u0026certificateauthority.CertificateConfigX509ConfigNameConstraintsArgs{\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t\tPermittedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*.deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedIpRanges: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.1.1.0/24\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedEmailAddresses: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPermittedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExcludedUris: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\".deny.example.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPublicKey: \u0026certificateauthority.CertificateConfigPublicKeyArgs{\n\t\t\t\t\tFormat: pulumi.String(\"PEM\"),\n\t\t\t\t\tKey: std.Base64encodeOutput(ctx, std.Base64encodeOutputArgs{\n\t\t\t\t\t\tInput: certKey.PublicKeyPem,\n\t\t\t\t\t}, nil).ApplyT(func(invoke std.Base64encodeResult) (*string, error) {\n\t\t\t\t\t\treturn invoke.Result, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.tls.PrivateKey;\nimport com.pulumi.tls.PrivateKeyArgs;\nimport com.pulumi.gcp.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigNameConstraintsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigPublicKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"default\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-authority\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var certKey = new PrivateKey(\"certKey\", PrivateKeyArgs.builder()\n .algorithm(\"RSA\")\n .build());\n\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthority(defaultAuthority.certificateAuthorityId())\n .lifetime(\"86000s\")\n .name(\"cert-1\")\n .config(CertificateConfigArgs.builder()\n .subjectConfig(CertificateConfigSubjectConfigArgs.builder()\n .subject(CertificateConfigSubjectConfigSubjectArgs.builder()\n .commonName(\"san1.example.com\")\n .countryCode(\"us\")\n .organization(\"google\")\n .organizationalUnit(\"enterprise\")\n .locality(\"mountain view\")\n .province(\"california\")\n .streetAddress(\"1600 amphitheatre parkway\")\n .build())\n .subjectAltName(CertificateConfigSubjectConfigSubjectAltNameArgs.builder()\n .emailAddresses(\"email@example.com\")\n .ipAddresses(\"127.0.0.1\")\n .uris(\"http://www.ietf.org/rfc/rfc3986.txt\")\n .build())\n .build())\n .x509Config(CertificateConfigX509ConfigArgs.builder()\n .caOptions(CertificateConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(CertificateConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .nameConstraints(CertificateConfigX509ConfigNameConstraintsArgs.builder()\n .critical(true)\n .permittedDnsNames(\"*.example.com\")\n .excludedDnsNames(\"*.deny.example.com\")\n .permittedIpRanges(\"10.0.0.0/8\")\n .excludedIpRanges(\"10.1.1.0/24\")\n .permittedEmailAddresses(\".example.com\")\n .excludedEmailAddresses(\".deny.example.com\")\n .permittedUris(\".example.com\")\n .excludedUris(\".deny.example.com\")\n .build())\n .build())\n .publicKey(CertificateConfigPublicKeyArgs.builder()\n .format(\"PEM\")\n .key(StdFunctions.base64encode().applyValue(invoke -\u003e invoke.result()))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: default\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-authority\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n certKey:\n type: tls:PrivateKey\n name: cert_key\n properties:\n algorithm: RSA\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthority: ${defaultAuthority.certificateAuthorityId}\n lifetime: 86000s\n name: cert-1\n config:\n subjectConfig:\n subject:\n commonName: san1.example.com\n countryCode: us\n organization: google\n organizationalUnit: enterprise\n locality: mountain view\n province: california\n streetAddress: 1600 amphitheatre parkway\n subjectAltName:\n emailAddresses:\n - email@example.com\n ipAddresses:\n - 127.0.0.1\n uris:\n - http://www.ietf.org/rfc/rfc3986.txt\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n nameConstraints:\n critical: true\n permittedDnsNames:\n - '*.example.com'\n excludedDnsNames:\n - '*.deny.example.com'\n permittedIpRanges:\n - 10.0.0.0/8\n excludedIpRanges:\n - 10.1.1.0/24\n permittedEmailAddresses:\n - .example.com\n excludedEmailAddresses:\n - .deny.example.com\n permittedUris:\n - .example.com\n excludedUris:\n - .deny.example.com\n publicKey:\n format: PEM\n key:\n fn::invoke:\n function: std:base64encode\n arguments:\n input: ${certKey.publicKeyPem}\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate With Template\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultCertificateTemplate = new gcp.certificateauthority.CertificateTemplate(\"default\", {\n location: \"us-central1\",\n name: \"my-certificate-template\",\n description: \"An updated sample certificate template\",\n identityConstraints: {\n allowSubjectAltNamesPassthrough: true,\n allowSubjectPassthrough: true,\n celExpression: {\n description: \"Always true\",\n expression: \"true\",\n location: \"any.file.anywhere\",\n title: \"Sample expression\",\n },\n },\n passthroughExtensions: {\n additionalExtensions: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n knownExtensions: [\"EXTENDED_KEY_USAGE\"],\n },\n predefinedValues: {\n additionalExtensions: [{\n objectId: {\n objectIdPaths: [\n 1,\n 6,\n ],\n },\n value: \"c3RyaW5nCg==\",\n critical: true,\n }],\n aiaOcspServers: [\"string\"],\n caOptions: {\n isCa: false,\n maxIssuerPathLength: 6,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: false,\n contentCommitment: true,\n crlSign: false,\n dataEncipherment: true,\n decipherOnly: true,\n digitalSignature: true,\n encipherOnly: true,\n keyAgreement: true,\n keyEncipherment: true,\n },\n extendedKeyUsage: {\n clientAuth: true,\n codeSigning: true,\n emailProtection: true,\n ocspSigning: true,\n serverAuth: true,\n timeStamping: true,\n },\n unknownExtendedKeyUsages: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n },\n policyIds: [{\n objectIdPaths: [\n 1,\n 6,\n ],\n }],\n },\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-authority\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthority: defaultAuthority.certificateAuthorityId,\n name: \"my-certificate\",\n lifetime: \"860s\",\n pemCsr: std.file({\n input: \"test-fixtures/rsa_csr.pem\",\n }).then(invoke =\u003e invoke.result),\n certificateTemplate: defaultCertificateTemplate.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_certificate_template = gcp.certificateauthority.CertificateTemplate(\"default\",\n location=\"us-central1\",\n name=\"my-certificate-template\",\n description=\"An updated sample certificate template\",\n identity_constraints={\n \"allow_subject_alt_names_passthrough\": True,\n \"allow_subject_passthrough\": True,\n \"cel_expression\": {\n \"description\": \"Always true\",\n \"expression\": \"true\",\n \"location\": \"any.file.anywhere\",\n \"title\": \"Sample expression\",\n },\n },\n passthrough_extensions={\n \"additional_extensions\": [{\n \"object_id_paths\": [\n 1,\n 6,\n ],\n }],\n \"known_extensions\": [\"EXTENDED_KEY_USAGE\"],\n },\n predefined_values={\n \"additional_extensions\": [{\n \"object_id\": {\n \"object_id_paths\": [\n 1,\n 6,\n ],\n },\n \"value\": \"c3RyaW5nCg==\",\n \"critical\": True,\n }],\n \"aia_ocsp_servers\": [\"string\"],\n \"ca_options\": {\n \"is_ca\": False,\n \"max_issuer_path_length\": 6,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": False,\n \"content_commitment\": True,\n \"crl_sign\": False,\n \"data_encipherment\": True,\n \"decipher_only\": True,\n \"digital_signature\": True,\n \"encipher_only\": True,\n \"key_agreement\": True,\n \"key_encipherment\": True,\n },\n \"extended_key_usage\": {\n \"client_auth\": True,\n \"code_signing\": True,\n \"email_protection\": True,\n \"ocsp_signing\": True,\n \"server_auth\": True,\n \"time_stamping\": True,\n },\n \"unknown_extended_key_usages\": [{\n \"object_id_paths\": [\n 1,\n 6,\n ],\n }],\n },\n \"policy_ids\": [{\n \"object_id_paths\": [\n 1,\n 6,\n ],\n }],\n })\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority=default_authority.certificate_authority_id,\n name=\"my-certificate\",\n lifetime=\"860s\",\n pem_csr=std.file(input=\"test-fixtures/rsa_csr.pem\").result,\n certificate_template=default_certificate_template.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultCertificateTemplate = new Gcp.CertificateAuthority.CertificateTemplate(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-certificate-template\",\n Description = \"An updated sample certificate template\",\n IdentityConstraints = new Gcp.CertificateAuthority.Inputs.CertificateTemplateIdentityConstraintsArgs\n {\n AllowSubjectAltNamesPassthrough = true,\n AllowSubjectPassthrough = true,\n CelExpression = new Gcp.CertificateAuthority.Inputs.CertificateTemplateIdentityConstraintsCelExpressionArgs\n {\n Description = \"Always true\",\n Expression = \"true\",\n Location = \"any.file.anywhere\",\n Title = \"Sample expression\",\n },\n },\n PassthroughExtensions = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePassthroughExtensionsArgs\n {\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n KnownExtensions = new[]\n {\n \"EXTENDED_KEY_USAGE\",\n },\n },\n PredefinedValues = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesArgs\n {\n AdditionalExtensions = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesAdditionalExtensionArgs\n {\n ObjectId = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n Value = \"c3RyaW5nCg==\",\n Critical = true,\n },\n },\n AiaOcspServers = new[]\n {\n \"string\",\n },\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesCaOptionsArgs\n {\n IsCa = false,\n MaxIssuerPathLength = 6,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs\n {\n CertSign = false,\n ContentCommitment = true,\n CrlSign = false,\n DataEncipherment = true,\n DecipherOnly = true,\n DigitalSignature = true,\n EncipherOnly = true,\n KeyAgreement = true,\n KeyEncipherment = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs\n {\n ClientAuth = true,\n CodeSigning = true,\n EmailProtection = true,\n OcspSigning = true,\n ServerAuth = true,\n TimeStamping = true,\n },\n UnknownExtendedKeyUsages = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n },\n PolicyIds = new[]\n {\n new Gcp.CertificateAuthority.Inputs.CertificateTemplatePredefinedValuesPolicyIdArgs\n {\n ObjectIdPaths = new[]\n {\n 1,\n 6,\n },\n },\n },\n },\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-authority\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthority = defaultAuthority.CertificateAuthorityId,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n PemCsr = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/rsa_csr.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n CertificateTemplate = defaultCertificateTemplate.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultCertificateTemplate, err := certificateauthority.NewCertificateTemplate(ctx, \"default\", \u0026certificateauthority.CertificateTemplateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-certificate-template\"),\n\t\t\tDescription: pulumi.String(\"An updated sample certificate template\"),\n\t\t\tIdentityConstraints: \u0026certificateauthority.CertificateTemplateIdentityConstraintsArgs{\n\t\t\t\tAllowSubjectAltNamesPassthrough: pulumi.Bool(true),\n\t\t\t\tAllowSubjectPassthrough: pulumi.Bool(true),\n\t\t\t\tCelExpression: \u0026certificateauthority.CertificateTemplateIdentityConstraintsCelExpressionArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Always true\"),\n\t\t\t\t\tExpression: pulumi.String(\"true\"),\n\t\t\t\t\tLocation: pulumi.String(\"any.file.anywhere\"),\n\t\t\t\t\tTitle: pulumi.String(\"Sample expression\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPassthroughExtensions: \u0026certificateauthority.CertificateTemplatePassthroughExtensionsArgs{\n\t\t\t\tAdditionalExtensions: certificateauthority.CertificateTemplatePassthroughExtensionsAdditionalExtensionArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs{\n\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tKnownExtensions: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"EXTENDED_KEY_USAGE\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPredefinedValues: \u0026certificateauthority.CertificateTemplatePredefinedValuesArgs{\n\t\t\t\tAdditionalExtensions: certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionArgs{\n\t\t\t\t\t\tObjectId: \u0026certificateauthority.CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tValue: pulumi.String(\"c3RyaW5nCg==\"),\n\t\t\t\t\t\tCritical: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAiaOcspServers: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"string\"),\n\t\t\t\t},\n\t\t\t\tCaOptions: \u0026certificateauthority.CertificateTemplatePredefinedValuesCaOptionsArgs{\n\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\tMaxIssuerPathLength: pulumi.Int(6),\n\t\t\t\t},\n\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageArgs{\n\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\tCertSign: pulumi.Bool(false),\n\t\t\t\t\t\tContentCommitment: pulumi.Bool(true),\n\t\t\t\t\t\tCrlSign: pulumi.Bool(false),\n\t\t\t\t\t\tDataEncipherment: pulumi.Bool(true),\n\t\t\t\t\t\tDecipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\tEncipherOnly: pulumi.Bool(true),\n\t\t\t\t\t\tKeyAgreement: pulumi.Bool(true),\n\t\t\t\t\t\tKeyEncipherment: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\tClientAuth: pulumi.Bool(true),\n\t\t\t\t\t\tCodeSigning: pulumi.Bool(true),\n\t\t\t\t\t\tEmailProtection: pulumi.Bool(true),\n\t\t\t\t\t\tOcspSigning: pulumi.Bool(true),\n\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\tTimeStamping: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tUnknownExtendedKeyUsages: certificateauthority.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArray{\n\t\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPolicyIds: certificateauthority.CertificateTemplatePredefinedValuesPolicyIdArray{\n\t\t\t\t\t\u0026certificateauthority.CertificateTemplatePredefinedValuesPolicyIdArgs{\n\t\t\t\t\t\tObjectIdPaths: pulumi.IntArray{\n\t\t\t\t\t\t\tpulumi.Int(1),\n\t\t\t\t\t\t\tpulumi.Int(6),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-authority\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/rsa_csr.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthority: defaultAuthority.CertificateAuthorityId,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tPemCsr: pulumi.String(invokeFile.Result),\n\t\t\tCertificateTemplate: defaultCertificateTemplate.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.CertificateTemplate;\nimport com.pulumi.gcp.certificateauthority.CertificateTemplateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplateIdentityConstraintsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplateIdentityConstraintsCelExpressionArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePassthroughExtensionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultCertificateTemplate = new CertificateTemplate(\"defaultCertificateTemplate\", CertificateTemplateArgs.builder()\n .location(\"us-central1\")\n .name(\"my-certificate-template\")\n .description(\"An updated sample certificate template\")\n .identityConstraints(CertificateTemplateIdentityConstraintsArgs.builder()\n .allowSubjectAltNamesPassthrough(true)\n .allowSubjectPassthrough(true)\n .celExpression(CertificateTemplateIdentityConstraintsCelExpressionArgs.builder()\n .description(\"Always true\")\n .expression(\"true\")\n .location(\"any.file.anywhere\")\n .title(\"Sample expression\")\n .build())\n .build())\n .passthroughExtensions(CertificateTemplatePassthroughExtensionsArgs.builder()\n .additionalExtensions(CertificateTemplatePassthroughExtensionsAdditionalExtensionArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .knownExtensions(\"EXTENDED_KEY_USAGE\")\n .build())\n .predefinedValues(CertificateTemplatePredefinedValuesArgs.builder()\n .additionalExtensions(CertificateTemplatePredefinedValuesAdditionalExtensionArgs.builder()\n .objectId(CertificateTemplatePredefinedValuesAdditionalExtensionObjectIdArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .value(\"c3RyaW5nCg==\")\n .critical(true)\n .build())\n .aiaOcspServers(\"string\")\n .caOptions(CertificateTemplatePredefinedValuesCaOptionsArgs.builder()\n .isCa(false)\n .maxIssuerPathLength(6)\n .build())\n .keyUsage(CertificateTemplatePredefinedValuesKeyUsageArgs.builder()\n .baseKeyUsage(CertificateTemplatePredefinedValuesKeyUsageBaseKeyUsageArgs.builder()\n .certSign(false)\n .contentCommitment(true)\n .crlSign(false)\n .dataEncipherment(true)\n .decipherOnly(true)\n .digitalSignature(true)\n .encipherOnly(true)\n .keyAgreement(true)\n .keyEncipherment(true)\n .build())\n .extendedKeyUsage(CertificateTemplatePredefinedValuesKeyUsageExtendedKeyUsageArgs.builder()\n .clientAuth(true)\n .codeSigning(true)\n .emailProtection(true)\n .ocspSigning(true)\n .serverAuth(true)\n .timeStamping(true)\n .build())\n .unknownExtendedKeyUsages(CertificateTemplatePredefinedValuesKeyUsageUnknownExtendedKeyUsageArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .build())\n .policyIds(CertificateTemplatePredefinedValuesPolicyIdArgs.builder()\n .objectIdPaths( \n 1,\n 6)\n .build())\n .build())\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-authority\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthority(defaultAuthority.certificateAuthorityId())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .pemCsr(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/rsa_csr.pem\")\n .build()).result())\n .certificateTemplate(defaultCertificateTemplate.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultCertificateTemplate:\n type: gcp:certificateauthority:CertificateTemplate\n name: default\n properties:\n location: us-central1\n name: my-certificate-template\n description: An updated sample certificate template\n identityConstraints:\n allowSubjectAltNamesPassthrough: true\n allowSubjectPassthrough: true\n celExpression:\n description: Always true\n expression: 'true'\n location: any.file.anywhere\n title: Sample expression\n passthroughExtensions:\n additionalExtensions:\n - objectIdPaths:\n - 1\n - 6\n knownExtensions:\n - EXTENDED_KEY_USAGE\n predefinedValues:\n additionalExtensions:\n - objectId:\n objectIdPaths:\n - 1\n - 6\n value: c3RyaW5nCg==\n critical: true\n aiaOcspServers:\n - string\n caOptions:\n isCa: false\n maxIssuerPathLength: 6\n keyUsage:\n baseKeyUsage:\n certSign: false\n contentCommitment: true\n crlSign: false\n dataEncipherment: true\n decipherOnly: true\n digitalSignature: true\n encipherOnly: true\n keyAgreement: true\n keyEncipherment: true\n extendedKeyUsage:\n clientAuth: true\n codeSigning: true\n emailProtection: true\n ocspSigning: true\n serverAuth: true\n timeStamping: true\n unknownExtendedKeyUsages:\n - objectIdPaths:\n - 1\n - 6\n policyIds:\n - objectIdPaths:\n - 1\n - 6\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-authority\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthority: ${defaultAuthority.certificateAuthorityId}\n name: my-certificate\n lifetime: 860s\n pemCsr:\n fn::invoke:\n function: std:file\n arguments:\n input: test-fixtures/rsa_csr.pem\n return: result\n certificateTemplate: ${defaultCertificateTemplate.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Csr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-authority\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: false,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthority: defaultAuthority.certificateAuthorityId,\n name: \"my-certificate\",\n lifetime: \"860s\",\n pemCsr: std.file({\n input: \"test-fixtures/rsa_csr.pem\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": False,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority=default_authority.certificate_authority_id,\n name=\"my-certificate\",\n lifetime=\"860s\",\n pem_csr=std.file(input=\"test-fixtures/rsa_csr.pem\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-authority\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = false,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthority = defaultAuthority.CertificateAuthorityId,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n PemCsr = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/rsa_csr.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-authority\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(false),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/rsa_csr.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthority: defaultAuthority.CertificateAuthorityId,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tPemCsr: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-authority\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(false)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthority(defaultAuthority.certificateAuthorityId())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .pemCsr(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/rsa_csr.pem\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-authority\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: false\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthority: ${defaultAuthority.certificateAuthorityId}\n name: my-certificate\n lifetime: 860s\n pemCsr:\n fn::invoke:\n function: std:file\n arguments:\n input: test-fixtures/rsa_csr.pem\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate No Authority\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-authority\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n digitalSignature: true,\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n name: \"my-certificate\",\n lifetime: \"860s\",\n config: {\n subjectConfig: {\n subject: {\n commonName: \"san1.example.com\",\n countryCode: \"us\",\n organization: \"google\",\n organizationalUnit: \"enterprise\",\n locality: \"mountain view\",\n province: \"california\",\n streetAddress: \"1600 amphitheatre parkway\",\n postalCode: \"94109\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n publicKey: {\n format: \"PEM\",\n key: std.filebase64({\n input: \"test-fixtures/rsa_public.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n },\n}, {\n dependsOn: [defaultAuthority],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"digital_signature\": True,\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n name=\"my-certificate\",\n lifetime=\"860s\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"common_name\": \"san1.example.com\",\n \"country_code\": \"us\",\n \"organization\": \"google\",\n \"organizational_unit\": \"enterprise\",\n \"locality\": \"mountain view\",\n \"province\": \"california\",\n \"street_address\": \"1600 amphitheatre parkway\",\n \"postal_code\": \"94109\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n \"public_key\": {\n \"format\": \"PEM\",\n \"key\": std.filebase64(input=\"test-fixtures/rsa_public.pem\").result,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[default_authority]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-authority\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n DigitalSignature = true,\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectArgs\n {\n CommonName = \"san1.example.com\",\n CountryCode = \"us\",\n Organization = \"google\",\n OrganizationalUnit = \"enterprise\",\n Locality = \"mountain view\",\n Province = \"california\",\n StreetAddress = \"1600 amphitheatre parkway\",\n PostalCode = \"94109\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n PublicKey = new Gcp.CertificateAuthority.Inputs.CertificateConfigPublicKeyArgs\n {\n Format = \"PEM\",\n Key = Std.Filebase64.Invoke(new()\n {\n Input = \"test-fixtures/rsa_public.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultAuthority,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-authority\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"test-fixtures/rsa_public.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tConfig: \u0026certificateauthority.CertificateConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.CertificateConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tCommonName: pulumi.String(\"san1.example.com\"),\n\t\t\t\t\t\tCountryCode: pulumi.String(\"us\"),\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tOrganizationalUnit: pulumi.String(\"enterprise\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"mountain view\"),\n\t\t\t\t\t\tProvince: pulumi.String(\"california\"),\n\t\t\t\t\t\tStreetAddress: pulumi.String(\"1600 amphitheatre parkway\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"94109\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.CertificateConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CertificateConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPublicKey: \u0026certificateauthority.CertificateConfigPublicKeyArgs{\n\t\t\t\t\tFormat: pulumi.String(\"PEM\"),\n\t\t\t\t\tKey: pulumi.String(invokeFilebase64.Result),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultAuthority,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigPublicKeyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-authority\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .digitalSignature(true)\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .config(CertificateConfigArgs.builder()\n .subjectConfig(CertificateConfigSubjectConfigArgs.builder()\n .subject(CertificateConfigSubjectConfigSubjectArgs.builder()\n .commonName(\"san1.example.com\")\n .countryCode(\"us\")\n .organization(\"google\")\n .organizationalUnit(\"enterprise\")\n .locality(\"mountain view\")\n .province(\"california\")\n .streetAddress(\"1600 amphitheatre parkway\")\n .postalCode(\"94109\")\n .build())\n .build())\n .x509Config(CertificateConfigX509ConfigArgs.builder()\n .caOptions(CertificateConfigX509ConfigCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CertificateConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .crlSign(true)\n .build())\n .extendedKeyUsage(CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .publicKey(CertificateConfigPublicKeyArgs.builder()\n .format(\"PEM\")\n .key(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"test-fixtures/rsa_public.pem\")\n .build()).result())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultAuthority)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-authority\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n digitalSignature: true\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n lifetime: 86400s\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n name: my-certificate\n lifetime: 860s\n config:\n subjectConfig:\n subject:\n commonName: san1.example.com\n countryCode: us\n organization: google\n organizationalUnit: enterprise\n locality: mountain view\n province: california\n streetAddress: 1600 amphitheatre parkway\n postalCode: '94109'\n x509Config:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage:\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n publicKey:\n format: PEM\n key:\n fn::invoke:\n function: std:filebase64\n arguments:\n input: test-fixtures/rsa_public.pem\n return: result\n options:\n dependsOn:\n - ${defaultAuthority}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Privateca Certificate Custom Ski\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificateauthority.CaPool(\"default\", {\n location: \"us-central1\",\n name: \"my-pool\",\n tier: \"ENTERPRISE\",\n});\nconst defaultAuthority = new gcp.certificateauthority.Authority(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n certificateAuthorityId: \"my-authority\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"HashiCorp\",\n commonName: \"my-certificate-authority\",\n },\n subjectAltName: {\n dnsNames: [\"hashicorp.com\"],\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n digitalSignature: true,\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n lifetime: \"86400s\",\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n skipGracePeriod: true,\n ignoreActiveCertificatesOnDeletion: true,\n});\nconst defaultCertificate = new gcp.certificateauthority.Certificate(\"default\", {\n location: \"us-central1\",\n pool: _default.name,\n name: \"my-certificate\",\n lifetime: \"860s\",\n config: {\n subjectConfig: {\n subject: {\n commonName: \"san1.example.com\",\n countryCode: \"us\",\n organization: \"google\",\n organizationalUnit: \"enterprise\",\n locality: \"mountain view\",\n province: \"california\",\n streetAddress: \"1600 amphitheatre parkway\",\n postalCode: \"94109\",\n },\n },\n subjectKeyId: {\n keyId: \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n x509Config: {\n caOptions: {\n isCa: false,\n },\n keyUsage: {\n baseKeyUsage: {\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n publicKey: {\n format: \"PEM\",\n key: std.filebase64({\n input: \"test-fixtures/rsa_public.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n },\n}, {\n dependsOn: [defaultAuthority],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificateauthority.CaPool(\"default\",\n location=\"us-central1\",\n name=\"my-pool\",\n tier=\"ENTERPRISE\")\ndefault_authority = gcp.certificateauthority.Authority(\"default\",\n location=\"us-central1\",\n pool=default.name,\n certificate_authority_id=\"my-authority\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"HashiCorp\",\n \"common_name\": \"my-certificate-authority\",\n },\n \"subject_alt_name\": {\n \"dns_names\": [\"hashicorp.com\"],\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"digital_signature\": True,\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n lifetime=\"86400s\",\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n skip_grace_period=True,\n ignore_active_certificates_on_deletion=True)\ndefault_certificate = gcp.certificateauthority.Certificate(\"default\",\n location=\"us-central1\",\n pool=default.name,\n name=\"my-certificate\",\n lifetime=\"860s\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"common_name\": \"san1.example.com\",\n \"country_code\": \"us\",\n \"organization\": \"google\",\n \"organizational_unit\": \"enterprise\",\n \"locality\": \"mountain view\",\n \"province\": \"california\",\n \"street_address\": \"1600 amphitheatre parkway\",\n \"postal_code\": \"94109\",\n },\n },\n \"subject_key_id\": {\n \"key_id\": \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": False,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n \"public_key\": {\n \"format\": \"PEM\",\n \"key\": std.filebase64(input=\"test-fixtures/rsa_public.pem\").result,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[default_authority]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateAuthority.CaPool(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"my-pool\",\n Tier = \"ENTERPRISE\",\n });\n\n var defaultAuthority = new Gcp.CertificateAuthority.Authority(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n CertificateAuthorityId = \"my-authority\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"HashiCorp\",\n CommonName = \"my-certificate-authority\",\n },\n SubjectAltName = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs\n {\n DnsNames = new[]\n {\n \"hashicorp.com\",\n },\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n DigitalSignature = true,\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n Lifetime = \"86400s\",\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n SkipGracePeriod = true,\n IgnoreActiveCertificatesOnDeletion = true,\n });\n\n var defaultCertificate = new Gcp.CertificateAuthority.Certificate(\"default\", new()\n {\n Location = \"us-central1\",\n Pool = @default.Name,\n Name = \"my-certificate\",\n Lifetime = \"860s\",\n Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectConfigSubjectArgs\n {\n CommonName = \"san1.example.com\",\n CountryCode = \"us\",\n Organization = \"google\",\n OrganizationalUnit = \"enterprise\",\n Locality = \"mountain view\",\n Province = \"california\",\n StreetAddress = \"1600 amphitheatre parkway\",\n PostalCode = \"94109\",\n },\n },\n SubjectKeyId = new Gcp.CertificateAuthority.Inputs.CertificateConfigSubjectKeyIdArgs\n {\n KeyId = \"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\",\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigCaOptionsArgs\n {\n IsCa = false,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n PublicKey = new Gcp.CertificateAuthority.Inputs.CertificateConfigPublicKeyArgs\n {\n Format = \"PEM\",\n Key = Std.Filebase64.Invoke(new()\n {\n Input = \"test-fixtures/rsa_public.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultAuthority,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := certificateauthority.NewCaPool(ctx, \"default\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-pool\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultAuthority, err := certificateauthority.NewAuthority(ctx, \"default\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"my-authority\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"HashiCorp\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t\tSubjectAltName: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectAltNameArgs{\n\t\t\t\t\t\tDnsNames: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"hashicorp.com\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tDigitalSignature: pulumi.Bool(true),\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLifetime: pulumi.String(\"86400s\"),\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"test-fixtures/rsa_public.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificateauthority.NewCertificate(ctx, \"default\", \u0026certificateauthority.CertificateArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPool: _default.Name,\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLifetime: pulumi.String(\"860s\"),\n\t\t\tConfig: \u0026certificateauthority.CertificateConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.CertificateConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.CertificateConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tCommonName: pulumi.String(\"san1.example.com\"),\n\t\t\t\t\t\tCountryCode: pulumi.String(\"us\"),\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tOrganizationalUnit: pulumi.String(\"enterprise\"),\n\t\t\t\t\t\tLocality: pulumi.String(\"mountain view\"),\n\t\t\t\t\t\tProvince: pulumi.String(\"california\"),\n\t\t\t\t\t\tStreetAddress: pulumi.String(\"1600 amphitheatre parkway\"),\n\t\t\t\t\t\tPostalCode: pulumi.String(\"94109\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSubjectKeyId: \u0026certificateauthority.CertificateConfigSubjectKeyIdArgs{\n\t\t\t\t\tKeyId: pulumi.String(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\"),\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.CertificateConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.CertificateConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPublicKey: \u0026certificateauthority.CertificateConfigPublicKeyArgs{\n\t\t\t\t\tFormat: pulumi.String(\"PEM\"),\n\t\t\t\t\tKey: pulumi.String(invokeFilebase64.Result),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultAuthority,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectAltNameArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.Certificate;\nimport com.pulumi.gcp.certificateauthority.CertificateArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigSubjectKeyIdArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CertificateConfigPublicKeyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new CaPool(\"default\", CaPoolArgs.builder()\n .location(\"us-central1\")\n .name(\"my-pool\")\n .tier(\"ENTERPRISE\")\n .build());\n\n var defaultAuthority = new Authority(\"defaultAuthority\", AuthorityArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .certificateAuthorityId(\"my-authority\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"HashiCorp\")\n .commonName(\"my-certificate-authority\")\n .build())\n .subjectAltName(AuthorityConfigSubjectConfigSubjectAltNameArgs.builder()\n .dnsNames(\"hashicorp.com\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .digitalSignature(true)\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .lifetime(\"86400s\")\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .skipGracePeriod(true)\n .ignoreActiveCertificatesOnDeletion(true)\n .build());\n\n var defaultCertificate = new Certificate(\"defaultCertificate\", CertificateArgs.builder()\n .location(\"us-central1\")\n .pool(default_.name())\n .name(\"my-certificate\")\n .lifetime(\"860s\")\n .config(CertificateConfigArgs.builder()\n .subjectConfig(CertificateConfigSubjectConfigArgs.builder()\n .subject(CertificateConfigSubjectConfigSubjectArgs.builder()\n .commonName(\"san1.example.com\")\n .countryCode(\"us\")\n .organization(\"google\")\n .organizationalUnit(\"enterprise\")\n .locality(\"mountain view\")\n .province(\"california\")\n .streetAddress(\"1600 amphitheatre parkway\")\n .postalCode(\"94109\")\n .build())\n .build())\n .subjectKeyId(CertificateConfigSubjectKeyIdArgs.builder()\n .keyId(\"4cf3372289b1d411b999dbb9ebcd44744b6b2fca\")\n .build())\n .x509Config(CertificateConfigX509ConfigArgs.builder()\n .caOptions(CertificateConfigX509ConfigCaOptionsArgs.builder()\n .isCa(false)\n .build())\n .keyUsage(CertificateConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(CertificateConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .crlSign(true)\n .build())\n .extendedKeyUsage(CertificateConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .publicKey(CertificateConfigPublicKeyArgs.builder()\n .format(\"PEM\")\n .key(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"test-fixtures/rsa_public.pem\")\n .build()).result())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultAuthority)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificateauthority:CaPool\n properties:\n location: us-central1\n name: my-pool\n tier: ENTERPRISE\n defaultAuthority:\n type: gcp:certificateauthority:Authority\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n certificateAuthorityId: my-authority\n config:\n subjectConfig:\n subject:\n organization: HashiCorp\n commonName: my-certificate-authority\n subjectAltName:\n dnsNames:\n - hashicorp.com\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n digitalSignature: true\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n lifetime: 86400s\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n skipGracePeriod: true\n ignoreActiveCertificatesOnDeletion: true\n defaultCertificate:\n type: gcp:certificateauthority:Certificate\n name: default\n properties:\n location: us-central1\n pool: ${default.name}\n name: my-certificate\n lifetime: 860s\n config:\n subjectConfig:\n subject:\n commonName: san1.example.com\n countryCode: us\n organization: google\n organizationalUnit: enterprise\n locality: mountain view\n province: california\n streetAddress: 1600 amphitheatre parkway\n postalCode: '94109'\n subjectKeyId:\n keyId: 4cf3372289b1d411b999dbb9ebcd44744b6b2fca\n x509Config:\n caOptions:\n isCa: false\n keyUsage:\n baseKeyUsage:\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n publicKey:\n format: PEM\n key:\n fn::invoke:\n function: std:filebase64\n arguments:\n input: test-fixtures/rsa_public.pem\n return: result\n options:\n dependsOn:\n - ${defaultAuthority}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificates/{{name}}`\n\n* `{{project}}/{{location}}/{{pool}}/{{name}}`\n\n* `{{location}}/{{pool}}/{{name}}`\n\nWhen using the `pulumi import` command, Certificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificateauthority/certificate:Certificate default projects/{{project}}/locations/{{location}}/caPools/{{pool}}/certificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/certificate:Certificate default {{project}}/{{location}}/{{pool}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificateauthority/certificate:Certificate default {{location}}/{{pool}}/{{name}}\n```\n\n", "properties": { "certificateAuthority": { "type": "string", @@ -154786,7 +154786,7 @@ } }, "gcp:certificatemanager/dnsAuthorization:DnsAuthorization": { - "description": "DnsAuthorization represents a HTTP-reachable backend for a DnsAuthorization.\n\n\n\n## Example Usage\n\n### Certificate Manager Dns Authorization 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.certificatemanager.DnsAuthorization(\"default\", {\n name: \"dns-auth\",\n location: \"global\",\n description: \"The default dns\",\n domain: \"subdomain.hashicorptest.com\",\n});\nexport const recordNameToInsert = _default.dnsResourceRecords.apply(dnsResourceRecords =\u003e dnsResourceRecords[0].name);\nexport const recordTypeToInsert = _default.dnsResourceRecords.apply(dnsResourceRecords =\u003e dnsResourceRecords[0].type);\nexport const recordDataToInsert = _default.dnsResourceRecords.apply(dnsResourceRecords =\u003e dnsResourceRecords[0].data);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificatemanager.DnsAuthorization(\"default\",\n name=\"dns-auth\",\n location=\"global\",\n description=\"The default dns\",\n domain=\"subdomain.hashicorptest.com\")\npulumi.export(\"recordNameToInsert\", default.dns_resource_records[0].name)\npulumi.export(\"recordTypeToInsert\", default.dns_resource_records[0].type)\npulumi.export(\"recordDataToInsert\", default.dns_resource_records[0].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.CertificateManager.DnsAuthorization(\"default\", new()\n {\n Name = \"dns-auth\",\n Location = \"global\",\n Description = \"The default dns\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"recordNameToInsert\"] = @default.DnsResourceRecords.Apply(dnsResourceRecords =\u003e dnsResourceRecords[0].Name),\n [\"recordTypeToInsert\"] = @default.DnsResourceRecords.Apply(dnsResourceRecords =\u003e dnsResourceRecords[0].Type),\n [\"recordDataToInsert\"] = @default.DnsResourceRecords.Apply(dnsResourceRecords =\u003e dnsResourceRecords[0].Data),\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.NewDnsAuthorization(ctx, \"default\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tName: pulumi.String(\"dns-auth\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"The default dns\"),\n\t\t\tDomain: pulumi.String(\"subdomain.hashicorptest.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"recordNameToInsert\", _default.DnsResourceRecords.ApplyT(func(dnsResourceRecords []certificatemanager.DnsAuthorizationDnsResourceRecord) (*string, error) {\n\t\t\treturn \u0026dnsResourceRecords[0].Name, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"recordTypeToInsert\", _default.DnsResourceRecords.ApplyT(func(dnsResourceRecords []certificatemanager.DnsAuthorizationDnsResourceRecord) (*string, error) {\n\t\t\treturn \u0026dnsResourceRecords[0].Type, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"recordDataToInsert\", _default.DnsResourceRecords.ApplyT(func(dnsResourceRecords []certificatemanager.DnsAuthorizationDnsResourceRecord) (*string, error) {\n\t\t\treturn \u0026dnsResourceRecords[0].Data, 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.certificatemanager.DnsAuthorization;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorizationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new DnsAuthorization(\"default\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth\")\n .location(\"global\")\n .description(\"The default dns\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n ctx.export(\"recordNameToInsert\", default_.dnsResourceRecords().applyValue(dnsResourceRecords -\u003e dnsResourceRecords[0].name()));\n ctx.export(\"recordTypeToInsert\", default_.dnsResourceRecords().applyValue(dnsResourceRecords -\u003e dnsResourceRecords[0].type()));\n ctx.export(\"recordDataToInsert\", default_.dnsResourceRecords().applyValue(dnsResourceRecords -\u003e dnsResourceRecords[0].data()));\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth\n location: global\n description: The default dns\n domain: subdomain.hashicorptest.com\noutputs:\n recordNameToInsert: ${default.dnsResourceRecords[0].name}\n recordTypeToInsert: ${default.dnsResourceRecords[0].type}\n recordDataToInsert: ${default.dnsResourceRecords[0].data}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Dns Authorization Regional\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificatemanager.DnsAuthorization(\"default\", {\n name: \"dns-auth\",\n location: \"us-central1\",\n description: \"reginal dns\",\n type: \"PER_PROJECT_RECORD\",\n domain: \"subdomain.hashicorptest.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificatemanager.DnsAuthorization(\"default\",\n name=\"dns-auth\",\n location=\"us-central1\",\n description=\"reginal dns\",\n type=\"PER_PROJECT_RECORD\",\n domain=\"subdomain.hashicorptest.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.DnsAuthorization(\"default\", new()\n {\n Name = \"dns-auth\",\n Location = \"us-central1\",\n Description = \"reginal dns\",\n Type = \"PER_PROJECT_RECORD\",\n Domain = \"subdomain.hashicorptest.com\",\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.NewDnsAuthorization(ctx, \"default\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tName: pulumi.String(\"dns-auth\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"reginal dns\"),\n\t\t\tType: pulumi.String(\"PER_PROJECT_RECORD\"),\n\t\t\tDomain: pulumi.String(\"subdomain.hashicorptest.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorization;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorizationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new DnsAuthorization(\"default\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth\")\n .location(\"us-central1\")\n .description(\"reginal dns\")\n .type(\"PER_PROJECT_RECORD\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth\n location: us-central1\n description: reginal dns\n type: PER_PROJECT_RECORD\n domain: subdomain.hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDnsAuthorization can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dnsAuthorizations/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DnsAuthorization can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificatemanager/dnsAuthorization:DnsAuthorization default projects/{{project}}/locations/{{location}}/dnsAuthorizations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/dnsAuthorization:DnsAuthorization default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/dnsAuthorization:DnsAuthorization default {{location}}/{{name}}\n```\n\n", + "description": "DnsAuthorization represents a HTTP-reachable backend for a DnsAuthorization.\n\n\n\n## Example Usage\n\n### Certificate Manager Dns Authorization 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.certificatemanager.DnsAuthorization(\"default\", {\n name: \"dns-auth\",\n location: \"global\",\n description: \"The default dns\",\n domain: \"subdomain.hashicorptest.com\",\n});\nexport const recordNameToInsert = _default.dnsResourceRecords.apply(dnsResourceRecords =\u003e dnsResourceRecords[0].name);\nexport const recordTypeToInsert = _default.dnsResourceRecords.apply(dnsResourceRecords =\u003e dnsResourceRecords[0].type);\nexport const recordDataToInsert = _default.dnsResourceRecords.apply(dnsResourceRecords =\u003e dnsResourceRecords[0].data);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificatemanager.DnsAuthorization(\"default\",\n name=\"dns-auth\",\n location=\"global\",\n description=\"The default dns\",\n domain=\"subdomain.hashicorptest.com\")\npulumi.export(\"recordNameToInsert\", default.dns_resource_records[0].name)\npulumi.export(\"recordTypeToInsert\", default.dns_resource_records[0].type)\npulumi.export(\"recordDataToInsert\", default.dns_resource_records[0].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.CertificateManager.DnsAuthorization(\"default\", new()\n {\n Name = \"dns-auth\",\n Location = \"global\",\n Description = \"The default dns\",\n Domain = \"subdomain.hashicorptest.com\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"recordNameToInsert\"] = @default.DnsResourceRecords.Apply(dnsResourceRecords =\u003e dnsResourceRecords[0].Name),\n [\"recordTypeToInsert\"] = @default.DnsResourceRecords.Apply(dnsResourceRecords =\u003e dnsResourceRecords[0].Type),\n [\"recordDataToInsert\"] = @default.DnsResourceRecords.Apply(dnsResourceRecords =\u003e dnsResourceRecords[0].Data),\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_default, err := certificatemanager.NewDnsAuthorization(ctx, \"default\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tName: pulumi.String(\"dns-auth\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"The default dns\"),\n\t\t\tDomain: pulumi.String(\"subdomain.hashicorptest.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"recordNameToInsert\", _default.DnsResourceRecords.ApplyT(func(dnsResourceRecords []certificatemanager.DnsAuthorizationDnsResourceRecord) (*string, error) {\n\t\t\treturn \u0026dnsResourceRecords[0].Name, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"recordTypeToInsert\", _default.DnsResourceRecords.ApplyT(func(dnsResourceRecords []certificatemanager.DnsAuthorizationDnsResourceRecord) (*string, error) {\n\t\t\treturn \u0026dnsResourceRecords[0].Type, nil\n\t\t}).(pulumi.StringPtrOutput))\n\t\tctx.Export(\"recordDataToInsert\", _default.DnsResourceRecords.ApplyT(func(dnsResourceRecords []certificatemanager.DnsAuthorizationDnsResourceRecord) (*string, error) {\n\t\t\treturn \u0026dnsResourceRecords[0].Data, 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.certificatemanager.DnsAuthorization;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorizationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new DnsAuthorization(\"default\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth\")\n .location(\"global\")\n .description(\"The default dns\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n ctx.export(\"recordNameToInsert\", default_.dnsResourceRecords().applyValue(dnsResourceRecords -\u003e dnsResourceRecords[0].name()));\n ctx.export(\"recordTypeToInsert\", default_.dnsResourceRecords().applyValue(dnsResourceRecords -\u003e dnsResourceRecords[0].type()));\n ctx.export(\"recordDataToInsert\", default_.dnsResourceRecords().applyValue(dnsResourceRecords -\u003e dnsResourceRecords[0].data()));\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth\n location: global\n description: The default dns\n domain: subdomain.hashicorptest.com\noutputs:\n recordNameToInsert: ${default.dnsResourceRecords[0].name}\n recordTypeToInsert: ${default.dnsResourceRecords[0].type}\n recordDataToInsert: ${default.dnsResourceRecords[0].data}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Certificate Manager Dns Authorization Regional\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.certificatemanager.DnsAuthorization(\"default\", {\n name: \"dns-auth\",\n location: \"us-central1\",\n description: \"reginal dns\",\n type: \"PER_PROJECT_RECORD\",\n domain: \"subdomain.hashicorptest.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificatemanager.DnsAuthorization(\"default\",\n name=\"dns-auth\",\n location=\"us-central1\",\n description=\"reginal dns\",\n type=\"PER_PROJECT_RECORD\",\n domain=\"subdomain.hashicorptest.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.DnsAuthorization(\"default\", new()\n {\n Name = \"dns-auth\",\n Location = \"us-central1\",\n Description = \"reginal dns\",\n Type = \"PER_PROJECT_RECORD\",\n Domain = \"subdomain.hashicorptest.com\",\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.NewDnsAuthorization(ctx, \"default\", \u0026certificatemanager.DnsAuthorizationArgs{\n\t\t\tName: pulumi.String(\"dns-auth\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"reginal dns\"),\n\t\t\tType: pulumi.String(\"PER_PROJECT_RECORD\"),\n\t\t\tDomain: pulumi.String(\"subdomain.hashicorptest.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorization;\nimport com.pulumi.gcp.certificatemanager.DnsAuthorizationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new DnsAuthorization(\"default\", DnsAuthorizationArgs.builder()\n .name(\"dns-auth\")\n .location(\"us-central1\")\n .description(\"reginal dns\")\n .type(\"PER_PROJECT_RECORD\")\n .domain(\"subdomain.hashicorptest.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:DnsAuthorization\n properties:\n name: dns-auth\n location: us-central1\n description: reginal dns\n type: PER_PROJECT_RECORD\n domain: subdomain.hashicorptest.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDnsAuthorization can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/dnsAuthorizations/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DnsAuthorization can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:certificatemanager/dnsAuthorization:DnsAuthorization default projects/{{project}}/locations/{{location}}/dnsAuthorizations/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/dnsAuthorization:DnsAuthorization default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:certificatemanager/dnsAuthorization:DnsAuthorization default {{location}}/{{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -156993,7 +156993,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, \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", + "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_default, 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", @@ -157175,7 +157175,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, \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", + "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\tmy_connection, 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\tmy_repository, 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\tmy_connection, 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\tmy_repository, 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", @@ -157722,7 +157722,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: \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", + "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\tprivate_key_secret, 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\tprivate_key_secret_version, 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\twebhook_secret_secret, 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\twebhook_secret_secret_version, 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\tpolicy_pk, 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\tpolicy_whs, 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\tgithub_token_secret, 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\tgithub_token_secret_version, 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", @@ -158262,7 +158262,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: \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", + "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\tprivate_key_secret, 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\tprivate_key_secret_version, 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\twebhook_secret_secret, 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\twebhook_secret_secret_version, 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\tpolicy_pk, 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\tpolicy_whs, 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\tmy_connection, 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\tgithub_token_secret, 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\tgithub_token_secret_version, 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\tmy_connection, 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", @@ -161441,7 +161441,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 \"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", + "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\tsource_bucket, 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\ttrigger_bucket, 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\tgcs_pubsub_publishing, 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\tevent_receiving, 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\tartifactregistry_reader, 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\tsource_bucket, 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\taudit_log_bucket, 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\tevent_receiving, 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\tartifactregistry_reader, 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\tencoded_ar_repo, 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", @@ -162130,7 +162130,7 @@ } }, "gcp:cloudidentity/groupMembership:GroupMembership": { - "description": "A Membership defines a relationship between a Group and an entity belonging to that Group, referred to as a \"member\".\n\n\nTo get more information about GroupMembership, see:\n\n* [API documentation](https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/identity/docs/how-to/memberships-google-groups)\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 Cloud Identity 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### Cloud Identity Group Membership\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst group = new gcp.cloudidentity.Group(\"group\", {\n displayName: \"my-identity-group\",\n parent: \"customers/A01b123xz\",\n groupKey: {\n id: \"my-identity-group@example.com\",\n },\n labels: {\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n },\n});\nconst child_group = new gcp.cloudidentity.Group(\"child-group\", {\n displayName: \"my-identity-group-child\",\n parent: \"customers/A01b123xz\",\n groupKey: {\n id: \"my-identity-group-child@example.com\",\n },\n labels: {\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n },\n});\nconst cloudIdentityGroupMembershipBasic = new gcp.cloudidentity.GroupMembership(\"cloud_identity_group_membership_basic\", {\n group: group.id,\n preferredMemberKey: {\n id: child_group.groupKey.apply(groupKey =\u003e groupKey.id),\n },\n roles: [{\n name: \"MEMBER\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngroup = gcp.cloudidentity.Group(\"group\",\n display_name=\"my-identity-group\",\n parent=\"customers/A01b123xz\",\n group_key={\n \"id\": \"my-identity-group@example.com\",\n },\n labels={\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n })\nchild_group = gcp.cloudidentity.Group(\"child-group\",\n display_name=\"my-identity-group-child\",\n parent=\"customers/A01b123xz\",\n group_key={\n \"id\": \"my-identity-group-child@example.com\",\n },\n labels={\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n })\ncloud_identity_group_membership_basic = gcp.cloudidentity.GroupMembership(\"cloud_identity_group_membership_basic\",\n group=group.id,\n preferred_member_key={\n \"id\": child_group.group_key.id,\n },\n roles=[{\n \"name\": \"MEMBER\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @group = new Gcp.CloudIdentity.Group(\"group\", new()\n {\n DisplayName = \"my-identity-group\",\n Parent = \"customers/A01b123xz\",\n GroupKey = new Gcp.CloudIdentity.Inputs.GroupGroupKeyArgs\n {\n Id = \"my-identity-group@example.com\",\n },\n Labels = \n {\n { \"cloudidentity.googleapis.com/groups.discussion_forum\", \"\" },\n },\n });\n\n var child_group = new Gcp.CloudIdentity.Group(\"child-group\", new()\n {\n DisplayName = \"my-identity-group-child\",\n Parent = \"customers/A01b123xz\",\n GroupKey = new Gcp.CloudIdentity.Inputs.GroupGroupKeyArgs\n {\n Id = \"my-identity-group-child@example.com\",\n },\n Labels = \n {\n { \"cloudidentity.googleapis.com/groups.discussion_forum\", \"\" },\n },\n });\n\n var cloudIdentityGroupMembershipBasic = new Gcp.CloudIdentity.GroupMembership(\"cloud_identity_group_membership_basic\", new()\n {\n Group = @group.Id,\n PreferredMemberKey = new Gcp.CloudIdentity.Inputs.GroupMembershipPreferredMemberKeyArgs\n {\n Id = child_group.GroupKey.Apply(groupKey =\u003e groupKey.Id),\n },\n Roles = new[]\n {\n new Gcp.CloudIdentity.Inputs.GroupMembershipRoleArgs\n {\n Name = \"MEMBER\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudidentity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgroup, err := cloudidentity.NewGroup(ctx, \"group\", \u0026cloudidentity.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"my-identity-group\"),\n\t\t\tParent: pulumi.String(\"customers/A01b123xz\"),\n\t\t\tGroupKey: \u0026cloudidentity.GroupGroupKeyArgs{\n\t\t\t\tId: pulumi.String(\"my-identity-group@example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"cloudidentity.googleapis.com/groups.discussion_forum\": pulumi.String(\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudidentity.NewGroup(ctx, \"child-group\", \u0026cloudidentity.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"my-identity-group-child\"),\n\t\t\tParent: pulumi.String(\"customers/A01b123xz\"),\n\t\t\tGroupKey: \u0026cloudidentity.GroupGroupKeyArgs{\n\t\t\t\tId: pulumi.String(\"my-identity-group-child@example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"cloudidentity.googleapis.com/groups.discussion_forum\": pulumi.String(\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudidentity.NewGroupMembership(ctx, \"cloud_identity_group_membership_basic\", \u0026cloudidentity.GroupMembershipArgs{\n\t\t\tGroup: group.ID(),\n\t\t\tPreferredMemberKey: \u0026cloudidentity.GroupMembershipPreferredMemberKeyArgs{\n\t\t\t\tId: child_group.GroupKey.ApplyT(func(groupKey cloudidentity.GroupGroupKey) (*string, error) {\n\t\t\t\t\treturn \u0026groupKey.Id, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t\tRoles: cloudidentity.GroupMembershipRoleArray{\n\t\t\t\t\u0026cloudidentity.GroupMembershipRoleArgs{\n\t\t\t\t\tName: pulumi.String(\"MEMBER\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudidentity.Group;\nimport com.pulumi.gcp.cloudidentity.GroupArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupGroupKeyArgs;\nimport com.pulumi.gcp.cloudidentity.GroupMembership;\nimport com.pulumi.gcp.cloudidentity.GroupMembershipArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupMembershipPreferredMemberKeyArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupMembershipRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var group = new Group(\"group\", GroupArgs.builder()\n .displayName(\"my-identity-group\")\n .parent(\"customers/A01b123xz\")\n .groupKey(GroupGroupKeyArgs.builder()\n .id(\"my-identity-group@example.com\")\n .build())\n .labels(Map.of(\"cloudidentity.googleapis.com/groups.discussion_forum\", \"\"))\n .build());\n\n var child_group = new Group(\"child-group\", GroupArgs.builder()\n .displayName(\"my-identity-group-child\")\n .parent(\"customers/A01b123xz\")\n .groupKey(GroupGroupKeyArgs.builder()\n .id(\"my-identity-group-child@example.com\")\n .build())\n .labels(Map.of(\"cloudidentity.googleapis.com/groups.discussion_forum\", \"\"))\n .build());\n\n var cloudIdentityGroupMembershipBasic = new GroupMembership(\"cloudIdentityGroupMembershipBasic\", GroupMembershipArgs.builder()\n .group(group.id())\n .preferredMemberKey(GroupMembershipPreferredMemberKeyArgs.builder()\n .id(child_group.groupKey().applyValue(groupKey -\u003e groupKey.id()))\n .build())\n .roles(GroupMembershipRoleArgs.builder()\n .name(\"MEMBER\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n group:\n type: gcp:cloudidentity:Group\n properties:\n displayName: my-identity-group\n parent: customers/A01b123xz\n groupKey:\n id: my-identity-group@example.com\n labels:\n cloudidentity.googleapis.com/groups.discussion_forum: \"\"\n child-group:\n type: gcp:cloudidentity:Group\n properties:\n displayName: my-identity-group-child\n parent: customers/A01b123xz\n groupKey:\n id: my-identity-group-child@example.com\n labels:\n cloudidentity.googleapis.com/groups.discussion_forum: \"\"\n cloudIdentityGroupMembershipBasic:\n type: gcp:cloudidentity:GroupMembership\n name: cloud_identity_group_membership_basic\n properties:\n group: ${group.id}\n preferredMemberKey:\n id: ${[\"child-group\"].groupKey.id}\n roles:\n - name: MEMBER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Identity Group Membership User\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst group = new gcp.cloudidentity.Group(\"group\", {\n displayName: \"my-identity-group\",\n parent: \"customers/A01b123xz\",\n groupKey: {\n id: \"my-identity-group@example.com\",\n },\n labels: {\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n },\n});\nconst cloudIdentityGroupMembershipBasic = new gcp.cloudidentity.GroupMembership(\"cloud_identity_group_membership_basic\", {\n group: group.id,\n preferredMemberKey: {\n id: \"cloud_identity_user@example.com\",\n },\n roles: [\n {\n name: \"MEMBER\",\n },\n {\n name: \"MANAGER\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngroup = gcp.cloudidentity.Group(\"group\",\n display_name=\"my-identity-group\",\n parent=\"customers/A01b123xz\",\n group_key={\n \"id\": \"my-identity-group@example.com\",\n },\n labels={\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n })\ncloud_identity_group_membership_basic = gcp.cloudidentity.GroupMembership(\"cloud_identity_group_membership_basic\",\n group=group.id,\n preferred_member_key={\n \"id\": \"cloud_identity_user@example.com\",\n },\n roles=[\n {\n \"name\": \"MEMBER\",\n },\n {\n \"name\": \"MANAGER\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @group = new Gcp.CloudIdentity.Group(\"group\", new()\n {\n DisplayName = \"my-identity-group\",\n Parent = \"customers/A01b123xz\",\n GroupKey = new Gcp.CloudIdentity.Inputs.GroupGroupKeyArgs\n {\n Id = \"my-identity-group@example.com\",\n },\n Labels = \n {\n { \"cloudidentity.googleapis.com/groups.discussion_forum\", \"\" },\n },\n });\n\n var cloudIdentityGroupMembershipBasic = new Gcp.CloudIdentity.GroupMembership(\"cloud_identity_group_membership_basic\", new()\n {\n Group = @group.Id,\n PreferredMemberKey = new Gcp.CloudIdentity.Inputs.GroupMembershipPreferredMemberKeyArgs\n {\n Id = \"cloud_identity_user@example.com\",\n },\n Roles = new[]\n {\n new Gcp.CloudIdentity.Inputs.GroupMembershipRoleArgs\n {\n Name = \"MEMBER\",\n },\n new Gcp.CloudIdentity.Inputs.GroupMembershipRoleArgs\n {\n Name = \"MANAGER\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudidentity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgroup, err := cloudidentity.NewGroup(ctx, \"group\", \u0026cloudidentity.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"my-identity-group\"),\n\t\t\tParent: pulumi.String(\"customers/A01b123xz\"),\n\t\t\tGroupKey: \u0026cloudidentity.GroupGroupKeyArgs{\n\t\t\t\tId: pulumi.String(\"my-identity-group@example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"cloudidentity.googleapis.com/groups.discussion_forum\": pulumi.String(\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudidentity.NewGroupMembership(ctx, \"cloud_identity_group_membership_basic\", \u0026cloudidentity.GroupMembershipArgs{\n\t\t\tGroup: group.ID(),\n\t\t\tPreferredMemberKey: \u0026cloudidentity.GroupMembershipPreferredMemberKeyArgs{\n\t\t\t\tId: pulumi.String(\"cloud_identity_user@example.com\"),\n\t\t\t},\n\t\t\tRoles: cloudidentity.GroupMembershipRoleArray{\n\t\t\t\t\u0026cloudidentity.GroupMembershipRoleArgs{\n\t\t\t\t\tName: pulumi.String(\"MEMBER\"),\n\t\t\t\t},\n\t\t\t\t\u0026cloudidentity.GroupMembershipRoleArgs{\n\t\t\t\t\tName: pulumi.String(\"MANAGER\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudidentity.Group;\nimport com.pulumi.gcp.cloudidentity.GroupArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupGroupKeyArgs;\nimport com.pulumi.gcp.cloudidentity.GroupMembership;\nimport com.pulumi.gcp.cloudidentity.GroupMembershipArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupMembershipPreferredMemberKeyArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupMembershipRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var group = new Group(\"group\", GroupArgs.builder()\n .displayName(\"my-identity-group\")\n .parent(\"customers/A01b123xz\")\n .groupKey(GroupGroupKeyArgs.builder()\n .id(\"my-identity-group@example.com\")\n .build())\n .labels(Map.of(\"cloudidentity.googleapis.com/groups.discussion_forum\", \"\"))\n .build());\n\n var cloudIdentityGroupMembershipBasic = new GroupMembership(\"cloudIdentityGroupMembershipBasic\", GroupMembershipArgs.builder()\n .group(group.id())\n .preferredMemberKey(GroupMembershipPreferredMemberKeyArgs.builder()\n .id(\"cloud_identity_user@example.com\")\n .build())\n .roles( \n GroupMembershipRoleArgs.builder()\n .name(\"MEMBER\")\n .build(),\n GroupMembershipRoleArgs.builder()\n .name(\"MANAGER\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n group:\n type: gcp:cloudidentity:Group\n properties:\n displayName: my-identity-group\n parent: customers/A01b123xz\n groupKey:\n id: my-identity-group@example.com\n labels:\n cloudidentity.googleapis.com/groups.discussion_forum: \"\"\n cloudIdentityGroupMembershipBasic:\n type: gcp:cloudidentity:GroupMembership\n name: cloud_identity_group_membership_basic\n properties:\n group: ${group.id}\n preferredMemberKey:\n id: cloud_identity_user@example.com\n roles:\n - name: MEMBER\n - name: MANAGER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGroupMembership can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, GroupMembership can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudidentity/groupMembership:GroupMembership default {{name}}\n```\n\n", + "description": "A Membership defines a relationship between a Group and an entity belonging to that Group, referred to as a \"member\".\n\n\nTo get more information about GroupMembership, see:\n\n* [API documentation](https://cloud.google.com/identity/docs/reference/rest/v1/groups.memberships)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/identity/docs/how-to/memberships-google-groups)\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 Cloud Identity 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### Cloud Identity Group Membership\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst group = new gcp.cloudidentity.Group(\"group\", {\n displayName: \"my-identity-group\",\n parent: \"customers/A01b123xz\",\n groupKey: {\n id: \"my-identity-group@example.com\",\n },\n labels: {\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n },\n});\nconst child_group = new gcp.cloudidentity.Group(\"child-group\", {\n displayName: \"my-identity-group-child\",\n parent: \"customers/A01b123xz\",\n groupKey: {\n id: \"my-identity-group-child@example.com\",\n },\n labels: {\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n },\n});\nconst cloudIdentityGroupMembershipBasic = new gcp.cloudidentity.GroupMembership(\"cloud_identity_group_membership_basic\", {\n group: group.id,\n preferredMemberKey: {\n id: child_group.groupKey.apply(groupKey =\u003e groupKey.id),\n },\n roles: [{\n name: \"MEMBER\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngroup = gcp.cloudidentity.Group(\"group\",\n display_name=\"my-identity-group\",\n parent=\"customers/A01b123xz\",\n group_key={\n \"id\": \"my-identity-group@example.com\",\n },\n labels={\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n })\nchild_group = gcp.cloudidentity.Group(\"child-group\",\n display_name=\"my-identity-group-child\",\n parent=\"customers/A01b123xz\",\n group_key={\n \"id\": \"my-identity-group-child@example.com\",\n },\n labels={\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n })\ncloud_identity_group_membership_basic = gcp.cloudidentity.GroupMembership(\"cloud_identity_group_membership_basic\",\n group=group.id,\n preferred_member_key={\n \"id\": child_group.group_key.id,\n },\n roles=[{\n \"name\": \"MEMBER\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @group = new Gcp.CloudIdentity.Group(\"group\", new()\n {\n DisplayName = \"my-identity-group\",\n Parent = \"customers/A01b123xz\",\n GroupKey = new Gcp.CloudIdentity.Inputs.GroupGroupKeyArgs\n {\n Id = \"my-identity-group@example.com\",\n },\n Labels = \n {\n { \"cloudidentity.googleapis.com/groups.discussion_forum\", \"\" },\n },\n });\n\n var child_group = new Gcp.CloudIdentity.Group(\"child-group\", new()\n {\n DisplayName = \"my-identity-group-child\",\n Parent = \"customers/A01b123xz\",\n GroupKey = new Gcp.CloudIdentity.Inputs.GroupGroupKeyArgs\n {\n Id = \"my-identity-group-child@example.com\",\n },\n Labels = \n {\n { \"cloudidentity.googleapis.com/groups.discussion_forum\", \"\" },\n },\n });\n\n var cloudIdentityGroupMembershipBasic = new Gcp.CloudIdentity.GroupMembership(\"cloud_identity_group_membership_basic\", new()\n {\n Group = @group.Id,\n PreferredMemberKey = new Gcp.CloudIdentity.Inputs.GroupMembershipPreferredMemberKeyArgs\n {\n Id = child_group.GroupKey.Apply(groupKey =\u003e groupKey.Id),\n },\n Roles = new[]\n {\n new Gcp.CloudIdentity.Inputs.GroupMembershipRoleArgs\n {\n Name = \"MEMBER\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudidentity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgroup, err := cloudidentity.NewGroup(ctx, \"group\", \u0026cloudidentity.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"my-identity-group\"),\n\t\t\tParent: pulumi.String(\"customers/A01b123xz\"),\n\t\t\tGroupKey: \u0026cloudidentity.GroupGroupKeyArgs{\n\t\t\t\tId: pulumi.String(\"my-identity-group@example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"cloudidentity.googleapis.com/groups.discussion_forum\": pulumi.String(\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tchild_group, err := cloudidentity.NewGroup(ctx, \"child-group\", \u0026cloudidentity.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"my-identity-group-child\"),\n\t\t\tParent: pulumi.String(\"customers/A01b123xz\"),\n\t\t\tGroupKey: \u0026cloudidentity.GroupGroupKeyArgs{\n\t\t\t\tId: pulumi.String(\"my-identity-group-child@example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"cloudidentity.googleapis.com/groups.discussion_forum\": pulumi.String(\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudidentity.NewGroupMembership(ctx, \"cloud_identity_group_membership_basic\", \u0026cloudidentity.GroupMembershipArgs{\n\t\t\tGroup: group.ID(),\n\t\t\tPreferredMemberKey: \u0026cloudidentity.GroupMembershipPreferredMemberKeyArgs{\n\t\t\t\tId: child_group.GroupKey.ApplyT(func(groupKey cloudidentity.GroupGroupKey) (*string, error) {\n\t\t\t\t\treturn \u0026groupKey.Id, nil\n\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t},\n\t\t\tRoles: cloudidentity.GroupMembershipRoleArray{\n\t\t\t\t\u0026cloudidentity.GroupMembershipRoleArgs{\n\t\t\t\t\tName: pulumi.String(\"MEMBER\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudidentity.Group;\nimport com.pulumi.gcp.cloudidentity.GroupArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupGroupKeyArgs;\nimport com.pulumi.gcp.cloudidentity.GroupMembership;\nimport com.pulumi.gcp.cloudidentity.GroupMembershipArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupMembershipPreferredMemberKeyArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupMembershipRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var group = new Group(\"group\", GroupArgs.builder()\n .displayName(\"my-identity-group\")\n .parent(\"customers/A01b123xz\")\n .groupKey(GroupGroupKeyArgs.builder()\n .id(\"my-identity-group@example.com\")\n .build())\n .labels(Map.of(\"cloudidentity.googleapis.com/groups.discussion_forum\", \"\"))\n .build());\n\n var child_group = new Group(\"child-group\", GroupArgs.builder()\n .displayName(\"my-identity-group-child\")\n .parent(\"customers/A01b123xz\")\n .groupKey(GroupGroupKeyArgs.builder()\n .id(\"my-identity-group-child@example.com\")\n .build())\n .labels(Map.of(\"cloudidentity.googleapis.com/groups.discussion_forum\", \"\"))\n .build());\n\n var cloudIdentityGroupMembershipBasic = new GroupMembership(\"cloudIdentityGroupMembershipBasic\", GroupMembershipArgs.builder()\n .group(group.id())\n .preferredMemberKey(GroupMembershipPreferredMemberKeyArgs.builder()\n .id(child_group.groupKey().applyValue(groupKey -\u003e groupKey.id()))\n .build())\n .roles(GroupMembershipRoleArgs.builder()\n .name(\"MEMBER\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n group:\n type: gcp:cloudidentity:Group\n properties:\n displayName: my-identity-group\n parent: customers/A01b123xz\n groupKey:\n id: my-identity-group@example.com\n labels:\n cloudidentity.googleapis.com/groups.discussion_forum: \"\"\n child-group:\n type: gcp:cloudidentity:Group\n properties:\n displayName: my-identity-group-child\n parent: customers/A01b123xz\n groupKey:\n id: my-identity-group-child@example.com\n labels:\n cloudidentity.googleapis.com/groups.discussion_forum: \"\"\n cloudIdentityGroupMembershipBasic:\n type: gcp:cloudidentity:GroupMembership\n name: cloud_identity_group_membership_basic\n properties:\n group: ${group.id}\n preferredMemberKey:\n id: ${[\"child-group\"].groupKey.id}\n roles:\n - name: MEMBER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Cloud Identity Group Membership User\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst group = new gcp.cloudidentity.Group(\"group\", {\n displayName: \"my-identity-group\",\n parent: \"customers/A01b123xz\",\n groupKey: {\n id: \"my-identity-group@example.com\",\n },\n labels: {\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n },\n});\nconst cloudIdentityGroupMembershipBasic = new gcp.cloudidentity.GroupMembership(\"cloud_identity_group_membership_basic\", {\n group: group.id,\n preferredMemberKey: {\n id: \"cloud_identity_user@example.com\",\n },\n roles: [\n {\n name: \"MEMBER\",\n },\n {\n name: \"MANAGER\",\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngroup = gcp.cloudidentity.Group(\"group\",\n display_name=\"my-identity-group\",\n parent=\"customers/A01b123xz\",\n group_key={\n \"id\": \"my-identity-group@example.com\",\n },\n labels={\n \"cloudidentity.googleapis.com/groups.discussion_forum\": \"\",\n })\ncloud_identity_group_membership_basic = gcp.cloudidentity.GroupMembership(\"cloud_identity_group_membership_basic\",\n group=group.id,\n preferred_member_key={\n \"id\": \"cloud_identity_user@example.com\",\n },\n roles=[\n {\n \"name\": \"MEMBER\",\n },\n {\n \"name\": \"MANAGER\",\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @group = new Gcp.CloudIdentity.Group(\"group\", new()\n {\n DisplayName = \"my-identity-group\",\n Parent = \"customers/A01b123xz\",\n GroupKey = new Gcp.CloudIdentity.Inputs.GroupGroupKeyArgs\n {\n Id = \"my-identity-group@example.com\",\n },\n Labels = \n {\n { \"cloudidentity.googleapis.com/groups.discussion_forum\", \"\" },\n },\n });\n\n var cloudIdentityGroupMembershipBasic = new Gcp.CloudIdentity.GroupMembership(\"cloud_identity_group_membership_basic\", new()\n {\n Group = @group.Id,\n PreferredMemberKey = new Gcp.CloudIdentity.Inputs.GroupMembershipPreferredMemberKeyArgs\n {\n Id = \"cloud_identity_user@example.com\",\n },\n Roles = new[]\n {\n new Gcp.CloudIdentity.Inputs.GroupMembershipRoleArgs\n {\n Name = \"MEMBER\",\n },\n new Gcp.CloudIdentity.Inputs.GroupMembershipRoleArgs\n {\n Name = \"MANAGER\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudidentity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgroup, err := cloudidentity.NewGroup(ctx, \"group\", \u0026cloudidentity.GroupArgs{\n\t\t\tDisplayName: pulumi.String(\"my-identity-group\"),\n\t\t\tParent: pulumi.String(\"customers/A01b123xz\"),\n\t\t\tGroupKey: \u0026cloudidentity.GroupGroupKeyArgs{\n\t\t\t\tId: pulumi.String(\"my-identity-group@example.com\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"cloudidentity.googleapis.com/groups.discussion_forum\": pulumi.String(\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudidentity.NewGroupMembership(ctx, \"cloud_identity_group_membership_basic\", \u0026cloudidentity.GroupMembershipArgs{\n\t\t\tGroup: group.ID(),\n\t\t\tPreferredMemberKey: \u0026cloudidentity.GroupMembershipPreferredMemberKeyArgs{\n\t\t\t\tId: pulumi.String(\"cloud_identity_user@example.com\"),\n\t\t\t},\n\t\t\tRoles: cloudidentity.GroupMembershipRoleArray{\n\t\t\t\t\u0026cloudidentity.GroupMembershipRoleArgs{\n\t\t\t\t\tName: pulumi.String(\"MEMBER\"),\n\t\t\t\t},\n\t\t\t\t\u0026cloudidentity.GroupMembershipRoleArgs{\n\t\t\t\t\tName: pulumi.String(\"MANAGER\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudidentity.Group;\nimport com.pulumi.gcp.cloudidentity.GroupArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupGroupKeyArgs;\nimport com.pulumi.gcp.cloudidentity.GroupMembership;\nimport com.pulumi.gcp.cloudidentity.GroupMembershipArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupMembershipPreferredMemberKeyArgs;\nimport com.pulumi.gcp.cloudidentity.inputs.GroupMembershipRoleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var group = new Group(\"group\", GroupArgs.builder()\n .displayName(\"my-identity-group\")\n .parent(\"customers/A01b123xz\")\n .groupKey(GroupGroupKeyArgs.builder()\n .id(\"my-identity-group@example.com\")\n .build())\n .labels(Map.of(\"cloudidentity.googleapis.com/groups.discussion_forum\", \"\"))\n .build());\n\n var cloudIdentityGroupMembershipBasic = new GroupMembership(\"cloudIdentityGroupMembershipBasic\", GroupMembershipArgs.builder()\n .group(group.id())\n .preferredMemberKey(GroupMembershipPreferredMemberKeyArgs.builder()\n .id(\"cloud_identity_user@example.com\")\n .build())\n .roles( \n GroupMembershipRoleArgs.builder()\n .name(\"MEMBER\")\n .build(),\n GroupMembershipRoleArgs.builder()\n .name(\"MANAGER\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n group:\n type: gcp:cloudidentity:Group\n properties:\n displayName: my-identity-group\n parent: customers/A01b123xz\n groupKey:\n id: my-identity-group@example.com\n labels:\n cloudidentity.googleapis.com/groups.discussion_forum: \"\"\n cloudIdentityGroupMembershipBasic:\n type: gcp:cloudidentity:GroupMembership\n name: cloud_identity_group_membership_basic\n properties:\n group: ${group.id}\n preferredMemberKey:\n id: cloud_identity_user@example.com\n roles:\n - name: MEMBER\n - name: MANAGER\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGroupMembership can be imported using any of these accepted formats:\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, GroupMembership can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudidentity/groupMembership:GroupMembership default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -162252,7 +162252,7 @@ } }, "gcp:cloudids/endpoint:Endpoint": { - "description": "Cloud IDS is an intrusion detection service that provides threat detection for intrusions, malware, spyware, and command-and-control attacks on your network.\n\n\nTo get more information about Endpoint, see:\n\n* [API documentation](https://cloud.google.com/intrusion-detection-system/docs/configuring-ids)\n\n## Example Usage\n\n### Cloudids Endpoint\n\n\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: \"tf-test-my-network\"});\nconst serviceRange = new gcp.compute.GlobalAddress(\"service_range\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: _default.id,\n});\nconst privateServiceConnection = new gcp.servicenetworking.Connection(\"private_service_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [serviceRange.name],\n});\nconst example_endpoint = new gcp.cloudids.Endpoint(\"example-endpoint\", {\n name: \"test\",\n location: \"us-central1-f\",\n network: _default.id,\n severity: \"INFORMATIONAL\",\n}, {\n dependsOn: [privateServiceConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"tf-test-my-network\")\nservice_range = gcp.compute.GlobalAddress(\"service_range\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=default.id)\nprivate_service_connection = gcp.servicenetworking.Connection(\"private_service_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[service_range.name])\nexample_endpoint = gcp.cloudids.Endpoint(\"example-endpoint\",\n name=\"test\",\n location=\"us-central1-f\",\n network=default.id,\n severity=\"INFORMATIONAL\",\n opts = pulumi.ResourceOptions(depends_on=[private_service_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-my-network\",\n });\n\n var serviceRange = new Gcp.Compute.GlobalAddress(\"service_range\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var privateServiceConnection = new Gcp.ServiceNetworking.Connection(\"private_service_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n serviceRange.Name,\n },\n });\n\n var example_endpoint = new Gcp.CloudIds.Endpoint(\"example-endpoint\", new()\n {\n Name = \"test\",\n Location = \"us-central1-f\",\n Network = @default.Id,\n Severity = \"INFORMATIONAL\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privateServiceConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudids\"\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/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(\"tf-test-my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceRange, err := compute.NewGlobalAddress(ctx, \"service_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.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: _default.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 = cloudids.NewEndpoint(ctx, \"example-endpoint\", \u0026cloudids.EndpointArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tLocation: pulumi.String(\"us-central1-f\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSeverity: pulumi.String(\"INFORMATIONAL\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivateServiceConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.cloudids.Endpoint;\nimport com.pulumi.gcp.cloudids.EndpointArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"tf-test-my-network\")\n .build());\n\n var serviceRange = new GlobalAddress(\"serviceRange\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var privateServiceConnection = new Connection(\"privateServiceConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(serviceRange.name())\n .build());\n\n var example_endpoint = new Endpoint(\"example-endpoint\", EndpointArgs.builder()\n .name(\"test\")\n .location(\"us-central1-f\")\n .network(default_.id())\n .severity(\"INFORMATIONAL\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(privateServiceConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-my-network\n serviceRange:\n type: gcp:compute:GlobalAddress\n name: service_range\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${default.id}\n privateServiceConnection:\n type: gcp:servicenetworking:Connection\n name: private_service_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${serviceRange.name}\n example-endpoint:\n type: gcp:cloudids:Endpoint\n properties:\n name: test\n location: us-central1-f\n network: ${default.id}\n severity: INFORMATIONAL\n options:\n dependsOn:\n - ${privateServiceConnection}\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:cloudids/endpoint:Endpoint default projects/{{project}}/locations/{{location}}/endpoints/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudids/endpoint:Endpoint default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudids/endpoint:Endpoint default {{location}}/{{name}}\n```\n\n", + "description": "Cloud IDS is an intrusion detection service that provides threat detection for intrusions, malware, spyware, and command-and-control attacks on your network.\n\n\nTo get more information about Endpoint, see:\n\n* [API documentation](https://cloud.google.com/intrusion-detection-system/docs/configuring-ids)\n\n## Example Usage\n\n### Cloudids Endpoint\n\n\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: \"tf-test-my-network\"});\nconst serviceRange = new gcp.compute.GlobalAddress(\"service_range\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: _default.id,\n});\nconst privateServiceConnection = new gcp.servicenetworking.Connection(\"private_service_connection\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [serviceRange.name],\n});\nconst example_endpoint = new gcp.cloudids.Endpoint(\"example-endpoint\", {\n name: \"test\",\n location: \"us-central1-f\",\n network: _default.id,\n severity: \"INFORMATIONAL\",\n}, {\n dependsOn: [privateServiceConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"tf-test-my-network\")\nservice_range = gcp.compute.GlobalAddress(\"service_range\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=default.id)\nprivate_service_connection = gcp.servicenetworking.Connection(\"private_service_connection\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[service_range.name])\nexample_endpoint = gcp.cloudids.Endpoint(\"example-endpoint\",\n name=\"test\",\n location=\"us-central1-f\",\n network=default.id,\n severity=\"INFORMATIONAL\",\n opts = pulumi.ResourceOptions(depends_on=[private_service_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"tf-test-my-network\",\n });\n\n var serviceRange = new Gcp.Compute.GlobalAddress(\"service_range\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n var privateServiceConnection = new Gcp.ServiceNetworking.Connection(\"private_service_connection\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n serviceRange.Name,\n },\n });\n\n var example_endpoint = new Gcp.CloudIds.Endpoint(\"example-endpoint\", new()\n {\n Name = \"test\",\n Location = \"us-central1-f\",\n Network = @default.Id,\n Severity = \"INFORMATIONAL\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privateServiceConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudids\"\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceRange, err := compute.NewGlobalAddress(ctx, \"service_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: _default.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: _default.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 = cloudids.NewEndpoint(ctx, \"example-endpoint\", \u0026cloudids.EndpointArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tLocation: pulumi.String(\"us-central1-f\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSeverity: pulumi.String(\"INFORMATIONAL\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivateServiceConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.cloudids.Endpoint;\nimport com.pulumi.gcp.cloudids.EndpointArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"tf-test-my-network\")\n .build());\n\n var serviceRange = new GlobalAddress(\"serviceRange\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n var privateServiceConnection = new Connection(\"privateServiceConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(serviceRange.name())\n .build());\n\n var example_endpoint = new Endpoint(\"example-endpoint\", EndpointArgs.builder()\n .name(\"test\")\n .location(\"us-central1-f\")\n .network(default_.id())\n .severity(\"INFORMATIONAL\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(privateServiceConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: tf-test-my-network\n serviceRange:\n type: gcp:compute:GlobalAddress\n name: service_range\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${default.id}\n privateServiceConnection:\n type: gcp:servicenetworking:Connection\n name: private_service_connection\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${serviceRange.name}\n example-endpoint:\n type: gcp:cloudids:Endpoint\n properties:\n name: test\n location: us-central1-f\n network: ${default.id}\n severity: INFORMATIONAL\n options:\n dependsOn:\n - ${privateServiceConnection}\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:cloudids/endpoint:Endpoint default projects/{{project}}/locations/{{location}}/endpoints/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudids/endpoint:Endpoint default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudids/endpoint:Endpoint default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -162661,7 +162661,7 @@ } }, "gcp:cloudrun/domainMapping:DomainMapping": { - "description": "Resource to hold the state and status of a user's domain mapping.\n\n\nTo get more information about DomainMapping, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v1/projects.locations.domainmappings)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/mapping-custom-domains)\n\n## Example Usage\n\n### Cloud Run Domain Mapping Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n metadata: {\n namespace: \"my-project-name\",\n },\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n});\nconst defaultDomainMapping = new gcp.cloudrun.DomainMapping(\"default\", {\n location: \"us-central1\",\n name: \"verified-domain.com\",\n metadata: {\n namespace: \"my-project-name\",\n },\n spec: {\n routeName: _default.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"namespace\": \"my-project-name\",\n },\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n })\ndefault_domain_mapping = gcp.cloudrun.DomainMapping(\"default\",\n location=\"us-central1\",\n name=\"verified-domain.com\",\n metadata={\n \"namespace\": \"my-project-name\",\n },\n spec={\n \"route_name\": default.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Namespace = \"my-project-name\",\n },\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n });\n\n var defaultDomainMapping = new Gcp.CloudRun.DomainMapping(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"verified-domain.com\",\n Metadata = new Gcp.CloudRun.Inputs.DomainMappingMetadataArgs\n {\n Namespace = \"my-project-name\",\n },\n Spec = new Gcp.CloudRun.Inputs.DomainMappingSpecArgs\n {\n RouteName = @default.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tNamespace: pulumi.String(\"my-project-name\"),\n\t\t\t},\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewDomainMapping(ctx, \"default\", \u0026cloudrun.DomainMappingArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"verified-domain.com\"),\n\t\t\tMetadata: \u0026cloudrun.DomainMappingMetadataArgs{\n\t\t\t\tNamespace: pulumi.String(\"my-project-name\"),\n\t\t\t},\n\t\t\tSpec: \u0026cloudrun.DomainMappingSpecArgs{\n\t\t\t\tRouteName: _default.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.DomainMapping;\nimport com.pulumi.gcp.cloudrun.DomainMappingArgs;\nimport com.pulumi.gcp.cloudrun.inputs.DomainMappingMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.DomainMappingSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .metadata(ServiceMetadataArgs.builder()\n .namespace(\"my-project-name\")\n .build())\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .build());\n\n var defaultDomainMapping = new DomainMapping(\"defaultDomainMapping\", DomainMappingArgs.builder()\n .location(\"us-central1\")\n .name(\"verified-domain.com\")\n .metadata(DomainMappingMetadataArgs.builder()\n .namespace(\"my-project-name\")\n .build())\n .spec(DomainMappingSpecArgs.builder()\n .routeName(default_.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n metadata:\n namespace: my-project-name\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n defaultDomainMapping:\n type: gcp:cloudrun:DomainMapping\n name: default\n properties:\n location: us-central1\n name: verified-domain.com\n metadata:\n namespace: my-project-name\n spec:\n routeName: ${default.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDomainMapping can be imported using any of these accepted formats:\n\n* `locations/{{location}}/namespaces/{{project}}/domainmappings/{{name}}`\n\n* `{{location}}/{{project}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DomainMapping can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrun/domainMapping:DomainMapping default locations/{{location}}/namespaces/{{project}}/domainmappings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/domainMapping:DomainMapping default {{location}}/{{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/domainMapping:DomainMapping default {{location}}/{{name}}\n```\n\n", + "description": "Resource to hold the state and status of a user's domain mapping.\n\n\nTo get more information about DomainMapping, see:\n\n* [API documentation](https://cloud.google.com/run/docs/reference/rest/v1/projects.locations.domainmappings)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/run/docs/mapping-custom-domains)\n\n## Example Usage\n\n### Cloud Run Domain Mapping Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"cloudrun-srv\",\n location: \"us-central1\",\n metadata: {\n namespace: \"my-project-name\",\n },\n template: {\n spec: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n },\n});\nconst defaultDomainMapping = new gcp.cloudrun.DomainMapping(\"default\", {\n location: \"us-central1\",\n name: \"verified-domain.com\",\n metadata: {\n namespace: \"my-project-name\",\n },\n spec: {\n routeName: _default.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"namespace\": \"my-project-name\",\n },\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n })\ndefault_domain_mapping = gcp.cloudrun.DomainMapping(\"default\",\n location=\"us-central1\",\n name=\"verified-domain.com\",\n metadata={\n \"namespace\": \"my-project-name\",\n },\n spec={\n \"route_name\": default.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Namespace = \"my-project-name\",\n },\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n },\n });\n\n var defaultDomainMapping = new Gcp.CloudRun.DomainMapping(\"default\", new()\n {\n Location = \"us-central1\",\n Name = \"verified-domain.com\",\n Metadata = new Gcp.CloudRun.Inputs.DomainMappingMetadataArgs\n {\n Namespace = \"my-project-name\",\n },\n Spec = new Gcp.CloudRun.Inputs.DomainMappingSpecArgs\n {\n RouteName = @default.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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_default, err := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"cloudrun-srv\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tNamespace: pulumi.String(\"my-project-name\"),\n\t\t\t},\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = cloudrun.NewDomainMapping(ctx, \"default\", \u0026cloudrun.DomainMappingArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"verified-domain.com\"),\n\t\t\tMetadata: \u0026cloudrun.DomainMappingMetadataArgs{\n\t\t\t\tNamespace: pulumi.String(\"my-project-name\"),\n\t\t\t},\n\t\t\tSpec: \u0026cloudrun.DomainMappingSpecArgs{\n\t\t\t\tRouteName: _default.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.DomainMapping;\nimport com.pulumi.gcp.cloudrun.DomainMappingArgs;\nimport com.pulumi.gcp.cloudrun.inputs.DomainMappingMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.DomainMappingSpecArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"cloudrun-srv\")\n .location(\"us-central1\")\n .metadata(ServiceMetadataArgs.builder()\n .namespace(\"my-project-name\")\n .build())\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .build())\n .build());\n\n var defaultDomainMapping = new DomainMapping(\"defaultDomainMapping\", DomainMappingArgs.builder()\n .location(\"us-central1\")\n .name(\"verified-domain.com\")\n .metadata(DomainMappingMetadataArgs.builder()\n .namespace(\"my-project-name\")\n .build())\n .spec(DomainMappingSpecArgs.builder()\n .routeName(default_.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:cloudrun:Service\n properties:\n name: cloudrun-srv\n location: us-central1\n metadata:\n namespace: my-project-name\n template:\n spec:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n defaultDomainMapping:\n type: gcp:cloudrun:DomainMapping\n name: default\n properties:\n location: us-central1\n name: verified-domain.com\n metadata:\n namespace: my-project-name\n spec:\n routeName: ${default.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDomainMapping can be imported using any of these accepted formats:\n\n* `locations/{{location}}/namespaces/{{project}}/domainmappings/{{name}}`\n\n* `{{location}}/{{project}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, DomainMapping can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:cloudrun/domainMapping:DomainMapping default locations/{{location}}/namespaces/{{project}}/domainmappings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/domainMapping:DomainMapping default {{location}}/{{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:cloudrun/domainMapping:DomainMapping default {{location}}/{{name}}\n```\n\n", "properties": { "location": { "type": "string", @@ -163090,7 +163090,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 Gpu\n\n\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 \"autoscaling.knative.dev/maxScale\": \"1\",\n \"run.googleapis.com/cpu-throttling\": \"false\",\n },\n },\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n resources: {\n limits: {\n cpu: \"4\",\n memory: \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n },\n }],\n nodeSelector: {\n \"run.googleapis.com/accelerator\": \"nvidia-l4\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"annotations\": {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template={\n \"metadata\": {\n \"annotations\": {\n \"autoscaling.knative.dev/maxScale\": \"1\",\n \"run.googleapis.com/cpu-throttling\": \"false\",\n },\n },\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"4\",\n \"memory\": \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n },\n }],\n \"node_selector\": {\n \"run.googleapis.com/accelerator\": \"nvidia-l4\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n 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 { \"autoscaling.knative.dev/maxScale\", \"1\" },\n { \"run.googleapis.com/cpu-throttling\", \"false\" },\n },\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 Resources = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"4\" },\n { \"memory\", \"16Gi\" },\n { \"nvidia.com/gpu\", \"1\" },\n },\n },\n },\n },\n NodeSelector = \n {\n { \"run.googleapis.com/accelerator\", \"nvidia-l4\" },\n },\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\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\"autoscaling.knative.dev/maxScale\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\"run.googleapis.com/cpu-throttling\": pulumi.String(\"false\"),\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\tImage: pulumi.String(\"gcr.io/cloudrun/hello\"),\n\t\t\t\t\t\t\tResources: \u0026cloudrun.ServiceTemplateSpecContainerResourcesArgs{\n\t\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"4\"),\n\t\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"16Gi\"),\n\t\t\t\t\t\t\t\t\t\"nvidia.com/gpu\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNodeSelector: pulumi.StringMap{\n\t\t\t\t\t\t\"run.googleapis.com/accelerator\": pulumi.String(\"nvidia-l4\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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.ofEntries(\n Map.entry(\"autoscaling.knative.dev/maxScale\", \"1\"),\n Map.entry(\"run.googleapis.com/cpu-throttling\", \"false\")\n ))\n .build())\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .resources(ServiceTemplateSpecContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"4\"),\n Map.entry(\"memory\", \"16Gi\"),\n Map.entry(\"nvidia.com/gpu\", \"1\")\n ))\n .build())\n .build())\n .nodeSelector(Map.of(\"run.googleapis.com/accelerator\", \"nvidia-l4\"))\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 autoscaling.knative.dev/maxScale: '1'\n run.googleapis.com/cpu-throttling: 'false'\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n resources:\n limits:\n cpu: '4'\n memory: 16Gi\n nvidia.com/gpu: '1'\n nodeSelector:\n run.googleapis.com/accelerator: nvidia-l4\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 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 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 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\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.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 .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 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_default, 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 Gpu\n\n\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 \"autoscaling.knative.dev/maxScale\": \"1\",\n \"run.googleapis.com/cpu-throttling\": \"false\",\n },\n },\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n resources: {\n limits: {\n cpu: \"4\",\n memory: \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n },\n }],\n nodeSelector: {\n \"run.googleapis.com/accelerator\": \"nvidia-l4\",\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"cloudrun-srv\",\n location=\"us-central1\",\n metadata={\n \"annotations\": {\n \"run.googleapis.com/launch-stage\": \"BETA\",\n },\n },\n template={\n \"metadata\": {\n \"annotations\": {\n \"autoscaling.knative.dev/maxScale\": \"1\",\n \"run.googleapis.com/cpu-throttling\": \"false\",\n },\n },\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"4\",\n \"memory\": \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n },\n }],\n \"node_selector\": {\n \"run.googleapis.com/accelerator\": \"nvidia-l4\",\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"cloudrun-srv\",\n Location = \"us-central1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n 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 { \"autoscaling.knative.dev/maxScale\", \"1\" },\n { \"run.googleapis.com/cpu-throttling\", \"false\" },\n },\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 Resources = new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"4\" },\n { \"memory\", \"16Gi\" },\n { \"nvidia.com/gpu\", \"1\" },\n },\n },\n },\n },\n NodeSelector = \n {\n { \"run.googleapis.com/accelerator\", \"nvidia-l4\" },\n },\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\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\"autoscaling.knative.dev/maxScale\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\"run.googleapis.com/cpu-throttling\": pulumi.String(\"false\"),\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\tImage: pulumi.String(\"gcr.io/cloudrun/hello\"),\n\t\t\t\t\t\t\tResources: \u0026cloudrun.ServiceTemplateSpecContainerResourcesArgs{\n\t\t\t\t\t\t\t\tLimits: pulumi.StringMap{\n\t\t\t\t\t\t\t\t\t\"cpu\": pulumi.String(\"4\"),\n\t\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"16Gi\"),\n\t\t\t\t\t\t\t\t\t\"nvidia.com/gpu\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tNodeSelector: pulumi.StringMap{\n\t\t\t\t\t\t\"run.googleapis.com/accelerator\": pulumi.String(\"nvidia-l4\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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.ofEntries(\n Map.entry(\"autoscaling.knative.dev/maxScale\", \"1\"),\n Map.entry(\"run.googleapis.com/cpu-throttling\", \"false\")\n ))\n .build())\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .resources(ServiceTemplateSpecContainerResourcesArgs.builder()\n .limits(Map.ofEntries(\n Map.entry(\"cpu\", \"4\"),\n Map.entry(\"memory\", \"16Gi\"),\n Map.entry(\"nvidia.com/gpu\", \"1\")\n ))\n .build())\n .build())\n .nodeSelector(Map.of(\"run.googleapis.com/accelerator\", \"nvidia-l4\"))\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 autoscaling.knative.dev/maxScale: '1'\n run.googleapis.com/cpu-throttling: 'false'\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n resources:\n limits:\n cpu: '4'\n memory: 16Gi\n nvidia.com/gpu: '1'\n nodeSelector:\n run.googleapis.com/accelerator: nvidia-l4\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_default, 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 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 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 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\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.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 .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 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", @@ -163224,7 +163224,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: \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 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 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 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\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 .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 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\tsecret_version_data, 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\tsecret_access, 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 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 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 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\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 .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 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", @@ -163942,7 +163942,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: \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 Gpu\n\n\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 launchStage: \"BETA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n resources: {\n limits: {\n cpu: \"4\",\n memory: \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n startupCpuBoost: true,\n },\n }],\n nodeSelector: {\n accelerator: \"nvidia-l4\",\n },\n scaling: {\n maxInstanceCount: 1,\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 launch_stage=\"BETA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"4\",\n \"memory\": \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n \"startup_cpu_boost\": True,\n },\n }],\n \"node_selector\": {\n \"accelerator\": \"nvidia-l4\",\n },\n \"scaling\": {\n \"max_instance_count\": 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 @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 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 Resources = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"4\" },\n { \"memory\", \"16Gi\" },\n { \"nvidia.com/gpu\", \"1\" },\n },\n StartupCpuBoost = true,\n },\n },\n },\n NodeSelector = new Gcp.CloudRunV2.Inputs.ServiceTemplateNodeSelectorArgs\n {\n Accelerator = \"nvidia-l4\",\n },\n Scaling = new Gcp.CloudRunV2.Inputs.ServiceTemplateScalingArgs\n {\n MaxInstanceCount = 1,\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\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\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(\"4\"),\n\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"16Gi\"),\n\t\t\t\t\t\t\t\t\"nvidia.com/gpu\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tStartupCpuBoost: 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\tNodeSelector: \u0026cloudrunv2.ServiceTemplateNodeSelectorArgs{\n\t\t\t\t\tAccelerator: pulumi.String(\"nvidia-l4\"),\n\t\t\t\t},\n\t\t\t\tScaling: \u0026cloudrunv2.ServiceTemplateScalingArgs{\n\t\t\t\t\tMaxInstanceCount: 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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateNodeSelectorArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateScalingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 .launchStage(\"BETA\")\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\", \"4\"),\n Map.entry(\"memory\", \"16Gi\"),\n Map.entry(\"nvidia.com/gpu\", \"1\")\n ))\n .startupCpuBoost(true)\n .build())\n .build())\n .nodeSelector(ServiceTemplateNodeSelectorArgs.builder()\n .accelerator(\"nvidia-l4\")\n .build())\n .scaling(ServiceTemplateScalingArgs.builder()\n .maxInstanceCount(1)\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 launchStage: BETA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n resources:\n limits:\n cpu: '4'\n memory: 16Gi\n nvidia.com/gpu: '1'\n startupCpuBoost: true\n nodeSelector:\n accelerator: nvidia-l4\n scaling:\n maxInstanceCount: 1\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 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 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 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\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 .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 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### Cloudrunv2 Service Invokeriam\n\n\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 invokerIamDisabled: true,\n description: \"The serving URL of this service will not perform any IAM check when invoked\",\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 invoker_iam_disabled=True,\n description=\"The serving URL of this service will not perform any IAM check when invoked\",\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 InvokerIamDisabled = true,\n Description = \"The serving URL of this service will not perform any IAM check when invoked\",\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\tInvokerIamDisabled: pulumi.Bool(true),\n\t\t\tDescription: pulumi.String(\"The serving URL of this service will not perform any IAM check when invoked\"),\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 .invokerIamDisabled(true)\n .description(\"The serving URL of this service will not perform any IAM check when invoked\")\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 invokerIamDisabled: true\n description: The serving URL of this service will not perform any IAM check when invoked\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 Function\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 bucket = new gcp.storage.Bucket(\"bucket\", {\n name: project.then(project =\u003e `${project.projectId}-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 cloudbuildServiceAccount = new gcp.serviceaccount.Account(\"cloudbuild_service_account\", {accountId: \"build-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 _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 buildConfig: {\n sourceLocation: pulumi.interpolate`gs://${bucket.name}/${object.name}`,\n functionTarget: \"helloHttp\",\n imageUri: \"us-docker.pkg.dev/cloudrun/container/hello\",\n baseImage: \"us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22\",\n enableAutomaticUpdates: true,\n workerPool: \"worker-pool\",\n environmentVariables: {\n FOO_KEY: \"FOO_VALUE\",\n BAR_KEY: \"BAR_VALUE\",\n },\n serviceAccount: cloudbuildServiceAccount.id,\n },\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()\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project.project_id}-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\"))\ncloudbuild_service_account = gcp.serviceaccount.Account(\"cloudbuild_service_account\", account_id=\"build-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}\"))\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 build_config={\n \"source_location\": pulumi.Output.all(\n bucketName=bucket.name,\n objectName=object.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucketName']}/{resolved_outputs['objectName']}\")\n,\n \"function_target\": \"helloHttp\",\n \"image_uri\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"base_image\": \"us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22\",\n \"enable_automatic_updates\": True,\n \"worker_pool\": \"worker-pool\",\n \"environment_variables\": {\n \"FOO_KEY\": \"FOO_VALUE\",\n \"BAR_KEY\": \"BAR_VALUE\",\n },\n \"service_account\": cloudbuild_service_account.id,\n },\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 bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}-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 cloudbuildServiceAccount = new Gcp.ServiceAccount.Account(\"cloudbuild_service_account\", new()\n {\n AccountId = \"build-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 @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 BuildConfig = new Gcp.CloudRunV2.Inputs.ServiceBuildConfigArgs\n {\n SourceLocation = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"gs://{bucketName}/{objectName}\";\n }),\n FunctionTarget = \"helloHttp\",\n ImageUri = \"us-docker.pkg.dev/cloudrun/container/hello\",\n BaseImage = \"us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22\",\n EnableAutomaticUpdates = true,\n WorkerPool = \"worker-pool\",\n EnvironmentVariables = \n {\n { \"FOO_KEY\", \"FOO_VALUE\" },\n { \"BAR_KEY\", \"BAR_VALUE\" },\n },\n ServiceAccount = cloudbuildServiceAccount.Id,\n },\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/cloudrunv2\"\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-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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project.ProjectId),\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\tcloudbuildServiceAccount, err := serviceaccount.NewAccount(ctx, \"cloudbuild_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"build-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 = 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\tBuildConfig: \u0026cloudrunv2.ServiceBuildConfigArgs{\n\t\t\t\tSourceLocation: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, objectName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tFunctionTarget: pulumi.String(\"helloHttp\"),\n\t\t\t\tImageUri: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\tBaseImage: pulumi.String(\"us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22\"),\n\t\t\t\tEnableAutomaticUpdates: pulumi.Bool(true),\n\t\t\t\tWorkerPool: pulumi.String(\"worker-pool\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"FOO_KEY\": pulumi.String(\"FOO_VALUE\"),\n\t\t\t\t\t\"BAR_KEY\": pulumi.String(\"BAR_VALUE\"),\n\t\t\t\t},\n\t\t\t\tServiceAccount: cloudbuildServiceAccount.ID(),\n\t\t\t},\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.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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceBuildConfigArgs;\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 = OrganizationsFunctions.getProject();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\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 cloudbuildServiceAccount = new Account(\"cloudbuildServiceAccount\", AccountArgs.builder()\n .accountId(\"build-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 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 .buildConfig(ServiceBuildConfigArgs.builder()\n .sourceLocation(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,objectName);\n }))\n .functionTarget(\"helloHttp\")\n .imageUri(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .baseImage(\"us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22\")\n .enableAutomaticUpdates(true)\n .workerPool(\"worker-pool\")\n .environmentVariables(Map.ofEntries(\n Map.entry(\"FOO_KEY\", \"FOO_VALUE\"),\n Map.entry(\"BAR_KEY\", \"BAR_VALUE\")\n ))\n .serviceAccount(cloudbuildServiceAccount.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n actAs,\n logsWriter)\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 buildConfig:\n sourceLocation: gs://${bucket.name}/${object.name}\n functionTarget: helloHttp\n imageUri: us-docker.pkg.dev/cloudrun/container/hello\n baseImage: us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22\n enableAutomaticUpdates: true\n workerPool: worker-pool\n environmentVariables:\n FOO_KEY: FOO_VALUE\n BAR_KEY: BAR_VALUE\n serviceAccount: ${cloudbuildServiceAccount.id}\n options:\n dependsOn:\n - ${actAs}\n - ${logsWriter}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project.projectId}-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 cloudbuildServiceAccount:\n type: gcp:serviceaccount:Account\n name: cloudbuild_service_account\n properties:\n accountId: build-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\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\tsecret_version_data, 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 Gpu\n\n\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 launchStage: \"BETA\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n resources: {\n limits: {\n cpu: \"4\",\n memory: \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n startupCpuBoost: true,\n },\n }],\n nodeSelector: {\n accelerator: \"nvidia-l4\",\n },\n scaling: {\n maxInstanceCount: 1,\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 launch_stage=\"BETA\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"resources\": {\n \"limits\": {\n \"cpu\": \"4\",\n \"memory\": \"16Gi\",\n \"nvidia.com/gpu\": \"1\",\n },\n \"startup_cpu_boost\": True,\n },\n }],\n \"node_selector\": {\n \"accelerator\": \"nvidia-l4\",\n },\n \"scaling\": {\n \"max_instance_count\": 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 @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 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 Resources = new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerResourcesArgs\n {\n Limits = \n {\n { \"cpu\", \"4\" },\n { \"memory\", \"16Gi\" },\n { \"nvidia.com/gpu\", \"1\" },\n },\n StartupCpuBoost = true,\n },\n },\n },\n NodeSelector = new Gcp.CloudRunV2.Inputs.ServiceTemplateNodeSelectorArgs\n {\n Accelerator = \"nvidia-l4\",\n },\n Scaling = new Gcp.CloudRunV2.Inputs.ServiceTemplateScalingArgs\n {\n MaxInstanceCount = 1,\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\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\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(\"4\"),\n\t\t\t\t\t\t\t\t\"memory\": pulumi.String(\"16Gi\"),\n\t\t\t\t\t\t\t\t\"nvidia.com/gpu\": pulumi.String(\"1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tStartupCpuBoost: 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\tNodeSelector: \u0026cloudrunv2.ServiceTemplateNodeSelectorArgs{\n\t\t\t\t\tAccelerator: pulumi.String(\"nvidia-l4\"),\n\t\t\t\t},\n\t\t\t\tScaling: \u0026cloudrunv2.ServiceTemplateScalingArgs{\n\t\t\t\t\tMaxInstanceCount: 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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateNodeSelectorArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateScalingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 .launchStage(\"BETA\")\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\", \"4\"),\n Map.entry(\"memory\", \"16Gi\"),\n Map.entry(\"nvidia.com/gpu\", \"1\")\n ))\n .startupCpuBoost(true)\n .build())\n .build())\n .nodeSelector(ServiceTemplateNodeSelectorArgs.builder()\n .accelerator(\"nvidia-l4\")\n .build())\n .scaling(ServiceTemplateScalingArgs.builder()\n .maxInstanceCount(1)\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 launchStage: BETA\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n resources:\n limits:\n cpu: '4'\n memory: 16Gi\n nvidia.com/gpu: '1'\n startupCpuBoost: true\n nodeSelector:\n accelerator: nvidia-l4\n scaling:\n maxInstanceCount: 1\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\tsecret_version_data, 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 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 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 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\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 .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 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### Cloudrunv2 Service Invokeriam\n\n\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 invokerIamDisabled: true,\n description: \"The serving URL of this service will not perform any IAM check when invoked\",\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 invoker_iam_disabled=True,\n description=\"The serving URL of this service will not perform any IAM check when invoked\",\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 InvokerIamDisabled = true,\n Description = \"The serving URL of this service will not perform any IAM check when invoked\",\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\tInvokerIamDisabled: pulumi.Bool(true),\n\t\t\tDescription: pulumi.String(\"The serving URL of this service will not perform any IAM check when invoked\"),\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 .invokerIamDisabled(true)\n .description(\"The serving URL of this service will not perform any IAM check when invoked\")\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 invokerIamDisabled: true\n description: The serving URL of this service will not perform any IAM check when invoked\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 Function\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 bucket = new gcp.storage.Bucket(\"bucket\", {\n name: project.then(project =\u003e `${project.projectId}-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 cloudbuildServiceAccount = new gcp.serviceaccount.Account(\"cloudbuild_service_account\", {accountId: \"build-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 _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 buildConfig: {\n sourceLocation: pulumi.interpolate`gs://${bucket.name}/${object.name}`,\n functionTarget: \"helloHttp\",\n imageUri: \"us-docker.pkg.dev/cloudrun/container/hello\",\n baseImage: \"us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22\",\n enableAutomaticUpdates: true,\n workerPool: \"worker-pool\",\n environmentVariables: {\n FOO_KEY: \"FOO_VALUE\",\n BAR_KEY: \"BAR_VALUE\",\n },\n serviceAccount: cloudbuildServiceAccount.id,\n },\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()\nbucket = gcp.storage.Bucket(\"bucket\",\n name=f\"{project.project_id}-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\"))\ncloudbuild_service_account = gcp.serviceaccount.Account(\"cloudbuild_service_account\", account_id=\"build-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}\"))\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 build_config={\n \"source_location\": pulumi.Output.all(\n bucketName=bucket.name,\n objectName=object.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['bucketName']}/{resolved_outputs['objectName']}\")\n,\n \"function_target\": \"helloHttp\",\n \"image_uri\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n \"base_image\": \"us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22\",\n \"enable_automatic_updates\": True,\n \"worker_pool\": \"worker-pool\",\n \"environment_variables\": {\n \"FOO_KEY\": \"FOO_VALUE\",\n \"BAR_KEY\": \"BAR_VALUE\",\n },\n \"service_account\": cloudbuild_service_account.id,\n },\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 bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Name = $\"{project.Apply(getProjectResult =\u003e getProjectResult.ProjectId)}-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 cloudbuildServiceAccount = new Gcp.ServiceAccount.Account(\"cloudbuild_service_account\", new()\n {\n AccountId = \"build-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 @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 BuildConfig = new Gcp.CloudRunV2.Inputs.ServiceBuildConfigArgs\n {\n SourceLocation = Output.Tuple(bucket.Name, @object.Name).Apply(values =\u003e\n {\n var bucketName = values.Item1;\n var objectName = values.Item2;\n return $\"gs://{bucketName}/{objectName}\";\n }),\n FunctionTarget = \"helloHttp\",\n ImageUri = \"us-docker.pkg.dev/cloudrun/container/hello\",\n BaseImage = \"us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22\",\n EnableAutomaticUpdates = true,\n WorkerPool = \"worker-pool\",\n EnvironmentVariables = \n {\n { \"FOO_KEY\", \"FOO_VALUE\" },\n { \"BAR_KEY\", \"BAR_VALUE\" },\n },\n ServiceAccount = cloudbuildServiceAccount.Id,\n },\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/cloudrunv2\"\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-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\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-gcf-source\", project.ProjectId),\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\tcloudbuildServiceAccount, err := serviceaccount.NewAccount(ctx, \"cloudbuild_service_account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"build-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 = 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\tBuildConfig: \u0026cloudrunv2.ServiceBuildConfigArgs{\n\t\t\t\tSourceLocation: pulumi.All(bucket.Name, object.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tbucketName := _args[0].(string)\n\t\t\t\t\tobjectName := _args[1].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", bucketName, objectName), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tFunctionTarget: pulumi.String(\"helloHttp\"),\n\t\t\t\tImageUri: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\tBaseImage: pulumi.String(\"us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22\"),\n\t\t\t\tEnableAutomaticUpdates: pulumi.Bool(true),\n\t\t\t\tWorkerPool: pulumi.String(\"worker-pool\"),\n\t\t\t\tEnvironmentVariables: pulumi.StringMap{\n\t\t\t\t\t\"FOO_KEY\": pulumi.String(\"FOO_VALUE\"),\n\t\t\t\t\t\"BAR_KEY\": pulumi.String(\"BAR_VALUE\"),\n\t\t\t\t},\n\t\t\t\tServiceAccount: cloudbuildServiceAccount.ID(),\n\t\t\t},\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.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.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceBuildConfigArgs;\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 = OrganizationsFunctions.getProject();\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .name(String.format(\"%s-gcf-source\", project.applyValue(getProjectResult -\u003e getProjectResult.projectId())))\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 cloudbuildServiceAccount = new Account(\"cloudbuildServiceAccount\", AccountArgs.builder()\n .accountId(\"build-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 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 .buildConfig(ServiceBuildConfigArgs.builder()\n .sourceLocation(Output.tuple(bucket.name(), object.name()).applyValue(values -\u003e {\n var bucketName = values.t1;\n var objectName = values.t2;\n return String.format(\"gs://%s/%s\", bucketName,objectName);\n }))\n .functionTarget(\"helloHttp\")\n .imageUri(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .baseImage(\"us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22\")\n .enableAutomaticUpdates(true)\n .workerPool(\"worker-pool\")\n .environmentVariables(Map.ofEntries(\n Map.entry(\"FOO_KEY\", \"FOO_VALUE\"),\n Map.entry(\"BAR_KEY\", \"BAR_VALUE\")\n ))\n .serviceAccount(cloudbuildServiceAccount.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n actAs,\n logsWriter)\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 buildConfig:\n sourceLocation: gs://${bucket.name}/${object.name}\n functionTarget: helloHttp\n imageUri: us-docker.pkg.dev/cloudrun/container/hello\n baseImage: us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22\n enableAutomaticUpdates: true\n workerPool: worker-pool\n environmentVariables:\n FOO_KEY: FOO_VALUE\n BAR_KEY: BAR_VALUE\n serviceAccount: ${cloudbuildServiceAccount.id}\n options:\n dependsOn:\n - ${actAs}\n - ${logsWriter}\n bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${project.projectId}-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 cloudbuildServiceAccount:\n type: gcp:serviceaccount:Account\n name: cloudbuild_service_account\n properties:\n accountId: build-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\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", @@ -164785,7 +164785,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, \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", + "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", @@ -166456,7 +166456,7 @@ } }, "gcp:compute/address:Address": { - "description": "Represents an Address resource.\n\nEach virtual machine instance has an ephemeral internal IP address and,\noptionally, an external IP address. To communicate between instances on\nthe same network, you can use an instance's internal IP address. To\ncommunicate with the Internet and instances outside of the same network,\nyou must specify the instance's external IP address.\n\nInternal IP addresses are ephemeral and only belong to an instance for\nthe lifetime of the instance; if the instance is deleted and recreated,\nthe instance is assigned a new internal IP address, either by Compute\nEngine or by you. External IP addresses can be either ephemeral or\nstatic.\n\n\nTo get more information about Address, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/beta/addresses)\n* How-to Guides\n * [Reserving a Static External IP Address](https://cloud.google.com/compute/docs/instances-and-network)\n * [Reserving a Static Internal IP Address](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address)\n\n## Example Usage\n\n### Address Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ipAddress = new gcp.compute.Address(\"ip_address\", {name: \"my-address\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nip_address = gcp.compute.Address(\"ip_address\", name=\"my-address\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ipAddress = new Gcp.Compute.Address(\"ip_address\", new()\n {\n Name = \"my-address\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewAddress(ctx, \"ip_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-address\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ipAddress = new Address(\"ipAddress\", AddressArgs.builder()\n .name(\"my-address\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipAddress:\n type: gcp:compute:Address\n name: ip_address\n properties:\n name: my-address\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Address With Subnetwork\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnet\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst internalWithSubnetAndAddress = new gcp.compute.Address(\"internal_with_subnet_and_address\", {\n name: \"my-internal-address\",\n subnetwork: defaultSubnetwork.id,\n addressType: \"INTERNAL\",\n address: \"10.0.42.42\",\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnet\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default.id)\ninternal_with_subnet_and_address = gcp.compute.Address(\"internal_with_subnet_and_address\",\n name=\"my-internal-address\",\n subnetwork=default_subnetwork.id,\n address_type=\"INTERNAL\",\n address=\"10.0.42.42\",\n region=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnet\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var internalWithSubnetAndAddress = new Gcp.Compute.Address(\"internal_with_subnet_and_address\", new()\n {\n Name = \"my-internal-address\",\n Subnetwork = defaultSubnetwork.Id,\n AddressType = \"INTERNAL\",\n IPAddress = \"10.0.42.42\",\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"internal_with_subnet_and_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-internal-address\"),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tAddress: pulumi.String(\"10.0.42.42\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var internalWithSubnetAndAddress = new Address(\"internalWithSubnetAndAddress\", AddressArgs.builder()\n .name(\"my-internal-address\")\n .subnetwork(defaultSubnetwork.id())\n .addressType(\"INTERNAL\")\n .address(\"10.0.42.42\")\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnet\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${default.id}\n internalWithSubnetAndAddress:\n type: gcp:compute:Address\n name: internal_with_subnet_and_address\n properties:\n name: my-internal-address\n subnetwork: ${defaultSubnetwork.id}\n addressType: INTERNAL\n address: 10.0.42.42\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Address With Gce Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst internalWithGceEndpoint = new gcp.compute.Address(\"internal_with_gce_endpoint\", {\n name: \"my-internal-address-\",\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninternal_with_gce_endpoint = gcp.compute.Address(\"internal_with_gce_endpoint\",\n name=\"my-internal-address-\",\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var internalWithGceEndpoint = new Gcp.Compute.Address(\"internal_with_gce_endpoint\", new()\n {\n Name = \"my-internal-address-\",\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewAddress(ctx, \"internal_with_gce_endpoint\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-internal-address-\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var internalWithGceEndpoint = new Address(\"internalWithGceEndpoint\", AddressArgs.builder()\n .name(\"my-internal-address-\")\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n internalWithGceEndpoint:\n type: gcp:compute:Address\n name: internal_with_gce_endpoint\n properties:\n name: my-internal-address-\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Instance With Ip\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst static = new gcp.compute.Address(\"static\", {name: \"ipv4-address\"});\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst instanceWithIp = new gcp.compute.Instance(\"instance_with_ip\", {\n name: \"vm-instance\",\n machineType: \"f1-micro\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: debianImage.then(debianImage =\u003e debianImage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n accessConfigs: [{\n natIp: static.address,\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nstatic = gcp.compute.Address(\"static\", name=\"ipv4-address\")\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ninstance_with_ip = gcp.compute.Instance(\"instance_with_ip\",\n name=\"vm-instance\",\n machine_type=\"f1-micro\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": debian_image.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n \"access_configs\": [{\n \"nat_ip\": static.address,\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @static = new Gcp.Compute.Address(\"static\", new()\n {\n Name = \"ipv4-address\",\n });\n\n var debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var instanceWithIp = new Gcp.Compute.Instance(\"instance_with_ip\", new()\n {\n Name = \"vm-instance\",\n MachineType = \"f1-micro\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n AccessConfigs = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceAccessConfigArgs\n {\n NatIp = @static.IPAddress,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tstatic, err := compute.NewAddress(ctx, \"static\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ipv4-address\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance_with_ip\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"vm-instance\"),\n\t\t\tMachineType: pulumi.String(\"f1-micro\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(debianImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{\n\t\t\t\t\t\t\tNatIp: static.Address,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var static_ = new Address(\"static\", AddressArgs.builder()\n .name(\"ipv4-address\")\n .build());\n\n final var debianImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var instanceWithIp = new Instance(\"instanceWithIp\", InstanceArgs.builder()\n .name(\"vm-instance\")\n .machineType(\"f1-micro\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(debianImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .accessConfigs(InstanceNetworkInterfaceAccessConfigArgs.builder()\n .natIp(static_.address())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n static:\n type: gcp:compute:Address\n properties:\n name: ipv4-address\n instanceWithIp:\n type: gcp:compute:Instance\n name: instance_with_ip\n properties:\n name: vm-instance\n machineType: f1-micro\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${debianImage.selfLink}\n networkInterfaces:\n - network: default\n accessConfigs:\n - natIp: ${static.address}\nvariables:\n debianImage:\n fn::invoke:\n function: gcp:compute:getImage\n arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Compute Address Ipsec Interconnect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"test-network\",\n autoCreateSubnetworks: false,\n});\nconst ipsec_interconnect_address = new gcp.compute.Address(\"ipsec-interconnect-address\", {\n name: \"test-address\",\n addressType: \"INTERNAL\",\n purpose: \"IPSEC_INTERCONNECT\",\n address: \"192.168.1.0\",\n prefixLength: 29,\n network: network.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"test-network\",\n auto_create_subnetworks=False)\nipsec_interconnect_address = gcp.compute.Address(\"ipsec-interconnect-address\",\n name=\"test-address\",\n address_type=\"INTERNAL\",\n purpose=\"IPSEC_INTERCONNECT\",\n address=\"192.168.1.0\",\n prefix_length=29,\n network=network.self_link)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var ipsec_interconnect_address = new Gcp.Compute.Address(\"ipsec-interconnect-address\", new()\n {\n Name = \"test-address\",\n AddressType = \"INTERNAL\",\n Purpose = \"IPSEC_INTERCONNECT\",\n IPAddress = \"192.168.1.0\",\n PrefixLength = 29,\n Network = network.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"ipsec-interconnect-address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"test-address\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"IPSEC_INTERCONNECT\"),\n\t\t\tAddress: pulumi.String(\"192.168.1.0\"),\n\t\t\tPrefixLength: pulumi.Int(29),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var ipsec_interconnect_address = new Address(\"ipsec-interconnect-address\", AddressArgs.builder()\n .name(\"test-address\")\n .addressType(\"INTERNAL\")\n .purpose(\"IPSEC_INTERCONNECT\")\n .address(\"192.168.1.0\")\n .prefixLength(29)\n .network(network.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipsec-interconnect-address:\n type: gcp:compute:Address\n properties:\n name: test-address\n addressType: INTERNAL\n purpose: IPSEC_INTERCONNECT\n address: 192.168.1.0\n prefixLength: 29\n network: ${network.selfLink}\n network:\n type: gcp:compute:Network\n properties:\n name: test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAddress can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/addresses/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Address can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/address:Address default projects/{{project}}/regions/{{region}}/addresses/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/address:Address default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/address:Address default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/address:Address default {{name}}\n```\n\n", + "description": "Represents an Address resource.\n\nEach virtual machine instance has an ephemeral internal IP address and,\noptionally, an external IP address. To communicate between instances on\nthe same network, you can use an instance's internal IP address. To\ncommunicate with the Internet and instances outside of the same network,\nyou must specify the instance's external IP address.\n\nInternal IP addresses are ephemeral and only belong to an instance for\nthe lifetime of the instance; if the instance is deleted and recreated,\nthe instance is assigned a new internal IP address, either by Compute\nEngine or by you. External IP addresses can be either ephemeral or\nstatic.\n\n\nTo get more information about Address, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/beta/addresses)\n* How-to Guides\n * [Reserving a Static External IP Address](https://cloud.google.com/compute/docs/instances-and-network)\n * [Reserving a Static Internal IP Address](https://cloud.google.com/compute/docs/ip-addresses/reserve-static-internal-ip-address)\n\n## Example Usage\n\n### Address Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst ipAddress = new gcp.compute.Address(\"ip_address\", {name: \"my-address\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nip_address = gcp.compute.Address(\"ip_address\", name=\"my-address\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var ipAddress = new Gcp.Compute.Address(\"ip_address\", new()\n {\n Name = \"my-address\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewAddress(ctx, \"ip_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-address\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var ipAddress = new Address(\"ipAddress\", AddressArgs.builder()\n .name(\"my-address\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipAddress:\n type: gcp:compute:Address\n name: ip_address\n properties:\n name: my-address\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Address With Subnetwork\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnet\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst internalWithSubnetAndAddress = new gcp.compute.Address(\"internal_with_subnet_and_address\", {\n name: \"my-internal-address\",\n subnetwork: defaultSubnetwork.id,\n addressType: \"INTERNAL\",\n address: \"10.0.42.42\",\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnet\",\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\",\n network=default.id)\ninternal_with_subnet_and_address = gcp.compute.Address(\"internal_with_subnet_and_address\",\n name=\"my-internal-address\",\n subnetwork=default_subnetwork.id,\n address_type=\"INTERNAL\",\n address=\"10.0.42.42\",\n region=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnet\",\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var internalWithSubnetAndAddress = new Gcp.Compute.Address(\"internal_with_subnet_and_address\", new()\n {\n Name = \"my-internal-address\",\n Subnetwork = defaultSubnetwork.Id,\n AddressType = \"INTERNAL\",\n IPAddress = \"10.0.42.42\",\n Region = \"us-central1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"internal_with_subnet_and_address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-internal-address\"),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tAddress: pulumi.String(\"10.0.42.42\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var internalWithSubnetAndAddress = new Address(\"internalWithSubnetAndAddress\", AddressArgs.builder()\n .name(\"my-internal-address\")\n .subnetwork(defaultSubnetwork.id())\n .addressType(\"INTERNAL\")\n .address(\"10.0.42.42\")\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnet\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n network: ${default.id}\n internalWithSubnetAndAddress:\n type: gcp:compute:Address\n name: internal_with_subnet_and_address\n properties:\n name: my-internal-address\n subnetwork: ${defaultSubnetwork.id}\n addressType: INTERNAL\n address: 10.0.42.42\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Address With Gce Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst internalWithGceEndpoint = new gcp.compute.Address(\"internal_with_gce_endpoint\", {\n name: \"my-internal-address-\",\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninternal_with_gce_endpoint = gcp.compute.Address(\"internal_with_gce_endpoint\",\n name=\"my-internal-address-\",\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var internalWithGceEndpoint = new Gcp.Compute.Address(\"internal_with_gce_endpoint\", new()\n {\n Name = \"my-internal-address-\",\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewAddress(ctx, \"internal_with_gce_endpoint\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-internal-address-\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var internalWithGceEndpoint = new Address(\"internalWithGceEndpoint\", AddressArgs.builder()\n .name(\"my-internal-address-\")\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n internalWithGceEndpoint:\n type: gcp:compute:Address\n name: internal_with_gce_endpoint\n properties:\n name: my-internal-address-\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Instance With Ip\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst static = new gcp.compute.Address(\"static\", {name: \"ipv4-address\"});\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst instanceWithIp = new gcp.compute.Instance(\"instance_with_ip\", {\n name: \"vm-instance\",\n machineType: \"f1-micro\",\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: debianImage.then(debianImage =\u003e debianImage.selfLink),\n },\n },\n networkInterfaces: [{\n network: \"default\",\n accessConfigs: [{\n natIp: static.address,\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nstatic = gcp.compute.Address(\"static\", name=\"ipv4-address\")\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ninstance_with_ip = gcp.compute.Instance(\"instance_with_ip\",\n name=\"vm-instance\",\n machine_type=\"f1-micro\",\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": debian_image.self_link,\n },\n },\n network_interfaces=[{\n \"network\": \"default\",\n \"access_configs\": [{\n \"nat_ip\": static.address,\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @static = new Gcp.Compute.Address(\"static\", new()\n {\n Name = \"ipv4-address\",\n });\n\n var debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var instanceWithIp = new Gcp.Compute.Instance(\"instance_with_ip\", new()\n {\n Name = \"vm-instance\",\n MachineType = \"f1-micro\",\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n AccessConfigs = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceAccessConfigArgs\n {\n NatIp = @static.IPAddress,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tstatic, err := compute.NewAddress(ctx, \"static\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ipv4-address\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"instance_with_ip\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"vm-instance\"),\n\t\t\tMachineType: pulumi.String(\"f1-micro\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(debianImage.SelfLink),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{\n\t\t\t\t\t\t\tNatIp: static.Address,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var static_ = new Address(\"static\", AddressArgs.builder()\n .name(\"ipv4-address\")\n .build());\n\n final var debianImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var instanceWithIp = new Instance(\"instanceWithIp\", InstanceArgs.builder()\n .name(\"vm-instance\")\n .machineType(\"f1-micro\")\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(debianImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .accessConfigs(InstanceNetworkInterfaceAccessConfigArgs.builder()\n .natIp(static_.address())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n static:\n type: gcp:compute:Address\n properties:\n name: ipv4-address\n instanceWithIp:\n type: gcp:compute:Instance\n name: instance_with_ip\n properties:\n name: vm-instance\n machineType: f1-micro\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: ${debianImage.selfLink}\n networkInterfaces:\n - network: default\n accessConfigs:\n - natIp: ${static.address}\nvariables:\n debianImage:\n fn::invoke:\n function: gcp:compute:getImage\n arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Compute Address Ipsec Interconnect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"test-network\",\n autoCreateSubnetworks: false,\n});\nconst ipsec_interconnect_address = new gcp.compute.Address(\"ipsec-interconnect-address\", {\n name: \"test-address\",\n addressType: \"INTERNAL\",\n purpose: \"IPSEC_INTERCONNECT\",\n address: \"192.168.1.0\",\n prefixLength: 29,\n network: network.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"test-network\",\n auto_create_subnetworks=False)\nipsec_interconnect_address = gcp.compute.Address(\"ipsec-interconnect-address\",\n name=\"test-address\",\n address_type=\"INTERNAL\",\n purpose=\"IPSEC_INTERCONNECT\",\n address=\"192.168.1.0\",\n prefix_length=29,\n network=network.self_link)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var ipsec_interconnect_address = new Gcp.Compute.Address(\"ipsec-interconnect-address\", new()\n {\n Name = \"test-address\",\n AddressType = \"INTERNAL\",\n Purpose = \"IPSEC_INTERCONNECT\",\n IPAddress = \"192.168.1.0\",\n PrefixLength = 29,\n Network = network.SelfLink,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"ipsec-interconnect-address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"test-address\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"IPSEC_INTERCONNECT\"),\n\t\t\tAddress: pulumi.String(\"192.168.1.0\"),\n\t\t\tPrefixLength: pulumi.Int(29),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var ipsec_interconnect_address = new Address(\"ipsec-interconnect-address\", AddressArgs.builder()\n .name(\"test-address\")\n .addressType(\"INTERNAL\")\n .purpose(\"IPSEC_INTERCONNECT\")\n .address(\"192.168.1.0\")\n .prefixLength(29)\n .network(network.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n ipsec-interconnect-address:\n type: gcp:compute:Address\n properties:\n name: test-address\n addressType: INTERNAL\n purpose: IPSEC_INTERCONNECT\n address: 192.168.1.0\n prefixLength: 29\n network: ${network.selfLink}\n network:\n type: gcp:compute:Network\n properties:\n name: test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAddress can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/addresses/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Address can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/address:Address default projects/{{project}}/regions/{{region}}/addresses/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/address:Address default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/address:Address default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/address:Address default {{name}}\n```\n\n", "properties": { "address": { "type": "string", @@ -168278,7 +168278,7 @@ } }, "gcp:compute/backendServiceSignedUrlKey:BackendServiceSignedUrlKey": { - "description": "A key for signing Cloud CDN signed URLs for Backend Services.\n\n\nTo get more information about BackendServiceSignedUrlKey, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices)\n* How-to Guides\n * [Using Signed URLs](https://cloud.google.com/cdn/docs/using-signed-urls/)\n\n\n\n## Example Usage\n\n### Backend Service Signed Url Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst urlSignature = new random.RandomId(\"url_signature\", {byteLength: 16});\nconst webserver = new gcp.compute.InstanceTemplate(\"webserver\", {\n name: \"standard-webserver\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: \"default\",\n }],\n disks: [{\n sourceImage: \"debian-cloud/debian-11\",\n autoDelete: true,\n boot: true,\n }],\n});\nconst webservers = new gcp.compute.InstanceGroupManager(\"webservers\", {\n name: \"my-webservers\",\n versions: [{\n instanceTemplate: webserver.id,\n name: \"primary\",\n }],\n baseInstanceName: \"webserver\",\n zone: \"us-central1-f\",\n targetSize: 1,\n});\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"test\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst exampleBackend = new gcp.compute.BackendService(\"example_backend\", {\n name: \"my-backend-service\",\n description: \"Our company website\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n enableCdn: true,\n backends: [{\n group: webservers.instanceGroup,\n }],\n healthChecks: _default.id,\n});\nconst backendKey = new gcp.compute.BackendServiceSignedUrlKey(\"backend_key\", {\n name: \"test-key\",\n keyValue: urlSignature.b64Url,\n backendService: exampleBackend.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nurl_signature = random.RandomId(\"url_signature\", byte_length=16)\nwebserver = gcp.compute.InstanceTemplate(\"webserver\",\n name=\"standard-webserver\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": \"default\",\n }],\n disks=[{\n \"source_image\": \"debian-cloud/debian-11\",\n \"auto_delete\": True,\n \"boot\": True,\n }])\nwebservers = gcp.compute.InstanceGroupManager(\"webservers\",\n name=\"my-webservers\",\n versions=[{\n \"instance_template\": webserver.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"webserver\",\n zone=\"us-central1-f\",\n target_size=1)\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"test\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\nexample_backend = gcp.compute.BackendService(\"example_backend\",\n name=\"my-backend-service\",\n description=\"Our company website\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n enable_cdn=True,\n backends=[{\n \"group\": webservers.instance_group,\n }],\n health_checks=default.id)\nbackend_key = gcp.compute.BackendServiceSignedUrlKey(\"backend_key\",\n name=\"test-key\",\n key_value=url_signature.b64_url,\n backend_service=example_backend.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var urlSignature = new Random.RandomId(\"url_signature\", new()\n {\n ByteLength = 16,\n });\n\n var webserver = new Gcp.Compute.InstanceTemplate(\"webserver\", new()\n {\n Name = \"standard-webserver\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\n AutoDelete = true,\n Boot = true,\n },\n },\n });\n\n var webservers = new Gcp.Compute.InstanceGroupManager(\"webservers\", new()\n {\n Name = \"my-webservers\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = webserver.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"webserver\",\n Zone = \"us-central1-f\",\n TargetSize = 1,\n });\n\n var @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"test\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var exampleBackend = new Gcp.Compute.BackendService(\"example_backend\", new()\n {\n Name = \"my-backend-service\",\n Description = \"Our company website\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n EnableCdn = true,\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = webservers.InstanceGroup,\n },\n },\n HealthChecks = @default.Id,\n });\n\n var backendKey = new Gcp.Compute.BackendServiceSignedUrlKey(\"backend_key\", new()\n {\n Name = \"test-key\",\n KeyValue = urlSignature.B64Url,\n BackendService = exampleBackend.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\turlSignature, err := random.NewRandomId(ctx, \"url_signature\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(16),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebserver, err := compute.NewInstanceTemplate(ctx, \"webserver\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"standard-webserver\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebservers, err := compute.NewInstanceGroupManager(ctx, \"webservers\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"my-webservers\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: webserver.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"webserver\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleBackend, err := compute.NewBackendService(ctx, \"example_backend\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tDescription: pulumi.String(\"Our company website\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: webservers.InstanceGroup,\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendServiceSignedUrlKey(ctx, \"backend_key\", \u0026compute.BackendServiceSignedUrlKeyArgs{\n\t\t\tName: pulumi.String(\"test-key\"),\n\t\t\tKeyValue: urlSignature.B64Url,\n\t\t\tBackendService: exampleBackend.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.BackendServiceSignedUrlKey;\nimport com.pulumi.gcp.compute.BackendServiceSignedUrlKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var urlSignature = new RandomId(\"urlSignature\", RandomIdArgs.builder()\n .byteLength(16)\n .build());\n\n var webserver = new InstanceTemplate(\"webserver\", InstanceTemplateArgs.builder()\n .name(\"standard-webserver\")\n .machineType(\"e2-medium\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .autoDelete(true)\n .boot(true)\n .build())\n .build());\n\n var webservers = new InstanceGroupManager(\"webservers\", InstanceGroupManagerArgs.builder()\n .name(\"my-webservers\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(webserver.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"webserver\")\n .zone(\"us-central1-f\")\n .targetSize(1)\n .build());\n\n var default_ = new HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"test\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var exampleBackend = new BackendService(\"exampleBackend\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .description(\"Our company website\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .enableCdn(true)\n .backends(BackendServiceBackendArgs.builder()\n .group(webservers.instanceGroup())\n .build())\n .healthChecks(default_.id())\n .build());\n\n var backendKey = new BackendServiceSignedUrlKey(\"backendKey\", BackendServiceSignedUrlKeyArgs.builder()\n .name(\"test-key\")\n .keyValue(urlSignature.b64Url())\n .backendService(exampleBackend.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlSignature:\n type: random:RandomId\n name: url_signature\n properties:\n byteLength: 16\n backendKey:\n type: gcp:compute:BackendServiceSignedUrlKey\n name: backend_key\n properties:\n name: test-key\n keyValue: ${urlSignature.b64Url}\n backendService: ${exampleBackend.name}\n exampleBackend:\n type: gcp:compute:BackendService\n name: example_backend\n properties:\n name: my-backend-service\n description: Our company website\n portName: http\n protocol: HTTP\n timeoutSec: 10\n enableCdn: true\n backends:\n - group: ${webservers.instanceGroup}\n healthChecks: ${default.id}\n webservers:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: my-webservers\n versions:\n - instanceTemplate: ${webserver.id}\n name: primary\n baseInstanceName: webserver\n zone: us-central1-f\n targetSize: 1\n webserver:\n type: gcp:compute:InstanceTemplate\n properties:\n name: standard-webserver\n machineType: e2-medium\n networkInterfaces:\n - network: default\n disks:\n - sourceImage: debian-cloud/debian-11\n autoDelete: true\n boot: true\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: test\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "A key for signing Cloud CDN signed URLs for Backend Services.\n\n\nTo get more information about BackendServiceSignedUrlKey, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices)\n* How-to Guides\n * [Using Signed URLs](https://cloud.google.com/cdn/docs/using-signed-urls/)\n\n\n\n## Example Usage\n\n### Backend Service Signed Url Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst urlSignature = new random.RandomId(\"url_signature\", {byteLength: 16});\nconst webserver = new gcp.compute.InstanceTemplate(\"webserver\", {\n name: \"standard-webserver\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: \"default\",\n }],\n disks: [{\n sourceImage: \"debian-cloud/debian-11\",\n autoDelete: true,\n boot: true,\n }],\n});\nconst webservers = new gcp.compute.InstanceGroupManager(\"webservers\", {\n name: \"my-webservers\",\n versions: [{\n instanceTemplate: webserver.id,\n name: \"primary\",\n }],\n baseInstanceName: \"webserver\",\n zone: \"us-central1-f\",\n targetSize: 1,\n});\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"test\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst exampleBackend = new gcp.compute.BackendService(\"example_backend\", {\n name: \"my-backend-service\",\n description: \"Our company website\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n enableCdn: true,\n backends: [{\n group: webservers.instanceGroup,\n }],\n healthChecks: _default.id,\n});\nconst backendKey = new gcp.compute.BackendServiceSignedUrlKey(\"backend_key\", {\n name: \"test-key\",\n keyValue: urlSignature.b64Url,\n backendService: exampleBackend.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\nurl_signature = random.RandomId(\"url_signature\", byte_length=16)\nwebserver = gcp.compute.InstanceTemplate(\"webserver\",\n name=\"standard-webserver\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": \"default\",\n }],\n disks=[{\n \"source_image\": \"debian-cloud/debian-11\",\n \"auto_delete\": True,\n \"boot\": True,\n }])\nwebservers = gcp.compute.InstanceGroupManager(\"webservers\",\n name=\"my-webservers\",\n versions=[{\n \"instance_template\": webserver.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"webserver\",\n zone=\"us-central1-f\",\n target_size=1)\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"test\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\nexample_backend = gcp.compute.BackendService(\"example_backend\",\n name=\"my-backend-service\",\n description=\"Our company website\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n enable_cdn=True,\n backends=[{\n \"group\": webservers.instance_group,\n }],\n health_checks=default.id)\nbackend_key = gcp.compute.BackendServiceSignedUrlKey(\"backend_key\",\n name=\"test-key\",\n key_value=url_signature.b64_url,\n backend_service=example_backend.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var urlSignature = new Random.RandomId(\"url_signature\", new()\n {\n ByteLength = 16,\n });\n\n var webserver = new Gcp.Compute.InstanceTemplate(\"webserver\", new()\n {\n Name = \"standard-webserver\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = \"debian-cloud/debian-11\",\n AutoDelete = true,\n Boot = true,\n },\n },\n });\n\n var webservers = new Gcp.Compute.InstanceGroupManager(\"webservers\", new()\n {\n Name = \"my-webservers\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = webserver.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"webserver\",\n Zone = \"us-central1-f\",\n TargetSize = 1,\n });\n\n var @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"test\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var exampleBackend = new Gcp.Compute.BackendService(\"example_backend\", new()\n {\n Name = \"my-backend-service\",\n Description = \"Our company website\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n EnableCdn = true,\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = webservers.InstanceGroup,\n },\n },\n HealthChecks = @default.Id,\n });\n\n var backendKey = new Gcp.Compute.BackendServiceSignedUrlKey(\"backend_key\", new()\n {\n Name = \"test-key\",\n KeyValue = urlSignature.B64Url,\n BackendService = exampleBackend.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-random/sdk/v4/go/random\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\turlSignature, err := random.NewRandomId(ctx, \"url_signature\", \u0026random.RandomIdArgs{\n\t\t\tByteLength: pulumi.Int(16),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebserver, err := compute.NewInstanceTemplate(ctx, \"webserver\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"standard-webserver\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebservers, err := compute.NewInstanceGroupManager(ctx, \"webservers\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"my-webservers\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: webserver.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"webserver\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"test\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleBackend, err := compute.NewBackendService(ctx, \"example_backend\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tDescription: pulumi.String(\"Our company website\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: webservers.InstanceGroup,\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendServiceSignedUrlKey(ctx, \"backend_key\", \u0026compute.BackendServiceSignedUrlKeyArgs{\n\t\t\tName: pulumi.String(\"test-key\"),\n\t\t\tKeyValue: urlSignature.B64Url,\n\t\t\tBackendService: exampleBackend.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.random.RandomId;\nimport com.pulumi.random.RandomIdArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.BackendServiceSignedUrlKey;\nimport com.pulumi.gcp.compute.BackendServiceSignedUrlKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var urlSignature = new RandomId(\"urlSignature\", RandomIdArgs.builder()\n .byteLength(16)\n .build());\n\n var webserver = new InstanceTemplate(\"webserver\", InstanceTemplateArgs.builder()\n .name(\"standard-webserver\")\n .machineType(\"e2-medium\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(\"debian-cloud/debian-11\")\n .autoDelete(true)\n .boot(true)\n .build())\n .build());\n\n var webservers = new InstanceGroupManager(\"webservers\", InstanceGroupManagerArgs.builder()\n .name(\"my-webservers\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(webserver.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"webserver\")\n .zone(\"us-central1-f\")\n .targetSize(1)\n .build());\n\n var default_ = new HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"test\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var exampleBackend = new BackendService(\"exampleBackend\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .description(\"Our company website\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .enableCdn(true)\n .backends(BackendServiceBackendArgs.builder()\n .group(webservers.instanceGroup())\n .build())\n .healthChecks(default_.id())\n .build());\n\n var backendKey = new BackendServiceSignedUrlKey(\"backendKey\", BackendServiceSignedUrlKeyArgs.builder()\n .name(\"test-key\")\n .keyValue(urlSignature.b64Url())\n .backendService(exampleBackend.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlSignature:\n type: random:RandomId\n name: url_signature\n properties:\n byteLength: 16\n backendKey:\n type: gcp:compute:BackendServiceSignedUrlKey\n name: backend_key\n properties:\n name: test-key\n keyValue: ${urlSignature.b64Url}\n backendService: ${exampleBackend.name}\n exampleBackend:\n type: gcp:compute:BackendService\n name: example_backend\n properties:\n name: my-backend-service\n description: Our company website\n portName: http\n protocol: HTTP\n timeoutSec: 10\n enableCdn: true\n backends:\n - group: ${webservers.instanceGroup}\n healthChecks: ${default.id}\n webservers:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: my-webservers\n versions:\n - instanceTemplate: ${webserver.id}\n name: primary\n baseInstanceName: webserver\n zone: us-central1-f\n targetSize: 1\n webserver:\n type: gcp:compute:InstanceTemplate\n properties:\n name: standard-webserver\n machineType: e2-medium\n networkInterfaces:\n - network: default\n disks:\n - sourceImage: debian-cloud/debian-11\n autoDelete: true\n boot: true\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: test\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "backendService": { "type": "string", @@ -168971,7 +168971,7 @@ } }, "gcp:compute/diskAsyncReplication:DiskAsyncReplication": { - "description": "Starts and stops asynchronous persistent disk replication. For more information\nsee [the official documentation](https://cloud.google.com/compute/docs/disks/async-pd/about)\nand the [API](https://cloud.google.com/compute/docs/reference/rest/v1/disks).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary_disk = new gcp.compute.Disk(\"primary-disk\", {\n name: \"primary-disk\",\n type: \"pd-ssd\",\n zone: \"europe-west4-a\",\n physicalBlockSizeBytes: 4096,\n});\nconst secondary_disk = new gcp.compute.Disk(\"secondary-disk\", {\n name: \"secondary-disk\",\n type: \"pd-ssd\",\n zone: \"europe-west3-a\",\n asyncPrimaryDisk: {\n disk: primary_disk.id,\n },\n physicalBlockSizeBytes: 4096,\n});\nconst replication = new gcp.compute.DiskAsyncReplication(\"replication\", {\n primaryDisk: primary_disk.id,\n secondaryDisk: {\n disk: secondary_disk.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary_disk = gcp.compute.Disk(\"primary-disk\",\n name=\"primary-disk\",\n type=\"pd-ssd\",\n zone=\"europe-west4-a\",\n physical_block_size_bytes=4096)\nsecondary_disk = gcp.compute.Disk(\"secondary-disk\",\n name=\"secondary-disk\",\n type=\"pd-ssd\",\n zone=\"europe-west3-a\",\n async_primary_disk={\n \"disk\": primary_disk.id,\n },\n physical_block_size_bytes=4096)\nreplication = gcp.compute.DiskAsyncReplication(\"replication\",\n primary_disk=primary_disk.id,\n secondary_disk={\n \"disk\": secondary_disk.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary_disk = new Gcp.Compute.Disk(\"primary-disk\", new()\n {\n Name = \"primary-disk\",\n Type = \"pd-ssd\",\n Zone = \"europe-west4-a\",\n PhysicalBlockSizeBytes = 4096,\n });\n\n var secondary_disk = new Gcp.Compute.Disk(\"secondary-disk\", new()\n {\n Name = \"secondary-disk\",\n Type = \"pd-ssd\",\n Zone = \"europe-west3-a\",\n AsyncPrimaryDisk = new Gcp.Compute.Inputs.DiskAsyncPrimaryDiskArgs\n {\n Disk = primary_disk.Id,\n },\n PhysicalBlockSizeBytes = 4096,\n });\n\n var replication = new Gcp.Compute.DiskAsyncReplication(\"replication\", new()\n {\n PrimaryDisk = primary_disk.Id,\n SecondaryDisk = new Gcp.Compute.Inputs.DiskAsyncReplicationSecondaryDiskArgs\n {\n Disk = secondary_disk.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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewDisk(ctx, \"primary-disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"primary-disk\"),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"europe-west4-a\"),\n\t\t\tPhysicalBlockSizeBytes: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewDisk(ctx, \"secondary-disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"secondary-disk\"),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"europe-west3-a\"),\n\t\t\tAsyncPrimaryDisk: \u0026compute.DiskAsyncPrimaryDiskArgs{\n\t\t\t\tDisk: primary_disk.ID(),\n\t\t\t},\n\t\t\tPhysicalBlockSizeBytes: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewDiskAsyncReplication(ctx, \"replication\", \u0026compute.DiskAsyncReplicationArgs{\n\t\t\tPrimaryDisk: primary_disk.ID(),\n\t\t\tSecondaryDisk: \u0026compute.DiskAsyncReplicationSecondaryDiskArgs{\n\t\t\t\tDisk: secondary_disk.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.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.inputs.DiskAsyncPrimaryDiskArgs;\nimport com.pulumi.gcp.compute.DiskAsyncReplication;\nimport com.pulumi.gcp.compute.DiskAsyncReplicationArgs;\nimport com.pulumi.gcp.compute.inputs.DiskAsyncReplicationSecondaryDiskArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_disk = new Disk(\"primary-disk\", DiskArgs.builder()\n .name(\"primary-disk\")\n .type(\"pd-ssd\")\n .zone(\"europe-west4-a\")\n .physicalBlockSizeBytes(4096)\n .build());\n\n var secondary_disk = new Disk(\"secondary-disk\", DiskArgs.builder()\n .name(\"secondary-disk\")\n .type(\"pd-ssd\")\n .zone(\"europe-west3-a\")\n .asyncPrimaryDisk(DiskAsyncPrimaryDiskArgs.builder()\n .disk(primary_disk.id())\n .build())\n .physicalBlockSizeBytes(4096)\n .build());\n\n var replication = new DiskAsyncReplication(\"replication\", DiskAsyncReplicationArgs.builder()\n .primaryDisk(primary_disk.id())\n .secondaryDisk(DiskAsyncReplicationSecondaryDiskArgs.builder()\n .disk(secondary_disk.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary-disk:\n type: gcp:compute:Disk\n properties:\n name: primary-disk\n type: pd-ssd\n zone: europe-west4-a\n physicalBlockSizeBytes: 4096\n secondary-disk:\n type: gcp:compute:Disk\n properties:\n name: secondary-disk\n type: pd-ssd\n zone: europe-west3-a\n asyncPrimaryDisk:\n disk: ${[\"primary-disk\"].id}\n physicalBlockSizeBytes: 4096\n replication:\n type: gcp:compute:DiskAsyncReplication\n properties:\n primaryDisk: ${[\"primary-disk\"].id}\n secondaryDisk:\n disk: ${[\"secondary-disk\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Starts and stops asynchronous persistent disk replication. For more information\nsee [the official documentation](https://cloud.google.com/compute/docs/disks/async-pd/about)\nand the [API](https://cloud.google.com/compute/docs/reference/rest/v1/disks).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst primary_disk = new gcp.compute.Disk(\"primary-disk\", {\n name: \"primary-disk\",\n type: \"pd-ssd\",\n zone: \"europe-west4-a\",\n physicalBlockSizeBytes: 4096,\n});\nconst secondary_disk = new gcp.compute.Disk(\"secondary-disk\", {\n name: \"secondary-disk\",\n type: \"pd-ssd\",\n zone: \"europe-west3-a\",\n asyncPrimaryDisk: {\n disk: primary_disk.id,\n },\n physicalBlockSizeBytes: 4096,\n});\nconst replication = new gcp.compute.DiskAsyncReplication(\"replication\", {\n primaryDisk: primary_disk.id,\n secondaryDisk: {\n disk: secondary_disk.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprimary_disk = gcp.compute.Disk(\"primary-disk\",\n name=\"primary-disk\",\n type=\"pd-ssd\",\n zone=\"europe-west4-a\",\n physical_block_size_bytes=4096)\nsecondary_disk = gcp.compute.Disk(\"secondary-disk\",\n name=\"secondary-disk\",\n type=\"pd-ssd\",\n zone=\"europe-west3-a\",\n async_primary_disk={\n \"disk\": primary_disk.id,\n },\n physical_block_size_bytes=4096)\nreplication = gcp.compute.DiskAsyncReplication(\"replication\",\n primary_disk=primary_disk.id,\n secondary_disk={\n \"disk\": secondary_disk.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var primary_disk = new Gcp.Compute.Disk(\"primary-disk\", new()\n {\n Name = \"primary-disk\",\n Type = \"pd-ssd\",\n Zone = \"europe-west4-a\",\n PhysicalBlockSizeBytes = 4096,\n });\n\n var secondary_disk = new Gcp.Compute.Disk(\"secondary-disk\", new()\n {\n Name = \"secondary-disk\",\n Type = \"pd-ssd\",\n Zone = \"europe-west3-a\",\n AsyncPrimaryDisk = new Gcp.Compute.Inputs.DiskAsyncPrimaryDiskArgs\n {\n Disk = primary_disk.Id,\n },\n PhysicalBlockSizeBytes = 4096,\n });\n\n var replication = new Gcp.Compute.DiskAsyncReplication(\"replication\", new()\n {\n PrimaryDisk = primary_disk.Id,\n SecondaryDisk = new Gcp.Compute.Inputs.DiskAsyncReplicationSecondaryDiskArgs\n {\n Disk = secondary_disk.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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprimary_disk, err := compute.NewDisk(ctx, \"primary-disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"primary-disk\"),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"europe-west4-a\"),\n\t\t\tPhysicalBlockSizeBytes: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondary_disk, err := compute.NewDisk(ctx, \"secondary-disk\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"secondary-disk\"),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"europe-west3-a\"),\n\t\t\tAsyncPrimaryDisk: \u0026compute.DiskAsyncPrimaryDiskArgs{\n\t\t\t\tDisk: primary_disk.ID(),\n\t\t\t},\n\t\t\tPhysicalBlockSizeBytes: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewDiskAsyncReplication(ctx, \"replication\", \u0026compute.DiskAsyncReplicationArgs{\n\t\t\tPrimaryDisk: primary_disk.ID(),\n\t\t\tSecondaryDisk: \u0026compute.DiskAsyncReplicationSecondaryDiskArgs{\n\t\t\t\tDisk: secondary_disk.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.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.inputs.DiskAsyncPrimaryDiskArgs;\nimport com.pulumi.gcp.compute.DiskAsyncReplication;\nimport com.pulumi.gcp.compute.DiskAsyncReplicationArgs;\nimport com.pulumi.gcp.compute.inputs.DiskAsyncReplicationSecondaryDiskArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_disk = new Disk(\"primary-disk\", DiskArgs.builder()\n .name(\"primary-disk\")\n .type(\"pd-ssd\")\n .zone(\"europe-west4-a\")\n .physicalBlockSizeBytes(4096)\n .build());\n\n var secondary_disk = new Disk(\"secondary-disk\", DiskArgs.builder()\n .name(\"secondary-disk\")\n .type(\"pd-ssd\")\n .zone(\"europe-west3-a\")\n .asyncPrimaryDisk(DiskAsyncPrimaryDiskArgs.builder()\n .disk(primary_disk.id())\n .build())\n .physicalBlockSizeBytes(4096)\n .build());\n\n var replication = new DiskAsyncReplication(\"replication\", DiskAsyncReplicationArgs.builder()\n .primaryDisk(primary_disk.id())\n .secondaryDisk(DiskAsyncReplicationSecondaryDiskArgs.builder()\n .disk(secondary_disk.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary-disk:\n type: gcp:compute:Disk\n properties:\n name: primary-disk\n type: pd-ssd\n zone: europe-west4-a\n physicalBlockSizeBytes: 4096\n secondary-disk:\n type: gcp:compute:Disk\n properties:\n name: secondary-disk\n type: pd-ssd\n zone: europe-west3-a\n asyncPrimaryDisk:\n disk: ${[\"primary-disk\"].id}\n physicalBlockSizeBytes: 4096\n replication:\n type: gcp:compute:DiskAsyncReplication\n properties:\n primaryDisk: ${[\"primary-disk\"].id}\n secondaryDisk:\n disk: ${[\"secondary-disk\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "properties": { "primaryDisk": { "type": "string", @@ -170111,7 +170111,7 @@ } }, "gcp:compute/firewallPolicyRule:FirewallPolicyRule": { - "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).\n\n\nTo get more information about FirewallPolicyRule, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/firewallPolicies/addRule)\n\n## Example Usage\n\n### Firewall Policy Rule\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicGlobalNetworksecurityAddressGroup = new gcp.networksecurity.AddressGroup(\"basic_global_networksecurity_address_group\", {\n name: \"address-group\",\n parent: \"organizations/123456789\",\n description: \"Sample global networksecurity_address_group\",\n location: \"global\",\n items: [\"208.80.154.224/32\"],\n type: \"IPV4\",\n capacity: 100,\n});\nconst folder = new gcp.organizations.Folder(\"folder\", {\n displayName: \"folder\",\n parent: \"organizations/123456789\",\n deletionProtection: false,\n});\nconst _default = new gcp.compute.FirewallPolicy(\"default\", {\n parent: folder.id,\n shortName: \"fw-policy\",\n description: \"Resource created for Terraform acceptance testing\",\n});\nconst primary = new gcp.compute.FirewallPolicyRule(\"primary\", {\n firewallPolicy: _default.name,\n description: \"Resource created for Terraform acceptance testing\",\n priority: 9000,\n enableLogging: true,\n action: \"allow\",\n direction: \"EGRESS\",\n disabled: false,\n targetServiceAccounts: [\"my@service-account.com\"],\n match: {\n destIpRanges: [\"11.100.0.1/32\"],\n destFqdns: [],\n destRegionCodes: [\"US\"],\n destThreatIntelligences: [\"iplist-known-malicious-ips\"],\n srcAddressGroups: [],\n destAddressGroups: [basicGlobalNetworksecurityAddressGroup.id],\n destNetworkScope: \"INTERNET\",\n layer4Configs: [\n {\n ipProtocol: \"tcp\",\n ports: [\"8080\"],\n },\n {\n ipProtocol: \"udp\",\n ports: [\"22\"],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_global_networksecurity_address_group = gcp.networksecurity.AddressGroup(\"basic_global_networksecurity_address_group\",\n name=\"address-group\",\n parent=\"organizations/123456789\",\n description=\"Sample global networksecurity_address_group\",\n location=\"global\",\n items=[\"208.80.154.224/32\"],\n type=\"IPV4\",\n capacity=100)\nfolder = gcp.organizations.Folder(\"folder\",\n display_name=\"folder\",\n parent=\"organizations/123456789\",\n deletion_protection=False)\ndefault = gcp.compute.FirewallPolicy(\"default\",\n parent=folder.id,\n short_name=\"fw-policy\",\n description=\"Resource created for Terraform acceptance testing\")\nprimary = gcp.compute.FirewallPolicyRule(\"primary\",\n firewall_policy=default.name,\n description=\"Resource created for Terraform acceptance testing\",\n priority=9000,\n enable_logging=True,\n action=\"allow\",\n direction=\"EGRESS\",\n disabled=False,\n target_service_accounts=[\"my@service-account.com\"],\n match={\n \"dest_ip_ranges\": [\"11.100.0.1/32\"],\n \"dest_fqdns\": [],\n \"dest_region_codes\": [\"US\"],\n \"dest_threat_intelligences\": [\"iplist-known-malicious-ips\"],\n \"src_address_groups\": [],\n \"dest_address_groups\": [basic_global_networksecurity_address_group.id],\n \"dest_network_scope\": \"INTERNET\",\n \"layer4_configs\": [\n {\n \"ip_protocol\": \"tcp\",\n \"ports\": [\"8080\"],\n },\n {\n \"ip_protocol\": \"udp\",\n \"ports\": [\"22\"],\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicGlobalNetworksecurityAddressGroup = new Gcp.NetworkSecurity.AddressGroup(\"basic_global_networksecurity_address_group\", new()\n {\n Name = \"address-group\",\n Parent = \"organizations/123456789\",\n Description = \"Sample global networksecurity_address_group\",\n Location = \"global\",\n Items = new[]\n {\n \"208.80.154.224/32\",\n },\n Type = \"IPV4\",\n Capacity = 100,\n });\n\n var folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n DisplayName = \"folder\",\n Parent = \"organizations/123456789\",\n DeletionProtection = false,\n });\n\n var @default = new Gcp.Compute.FirewallPolicy(\"default\", new()\n {\n Parent = folder.Id,\n ShortName = \"fw-policy\",\n Description = \"Resource created for Terraform acceptance testing\",\n });\n\n var primary = new Gcp.Compute.FirewallPolicyRule(\"primary\", new()\n {\n FirewallPolicy = @default.Name,\n Description = \"Resource created for Terraform acceptance testing\",\n Priority = 9000,\n EnableLogging = true,\n Action = \"allow\",\n Direction = \"EGRESS\",\n Disabled = false,\n TargetServiceAccounts = new[]\n {\n \"my@service-account.com\",\n },\n Match = new Gcp.Compute.Inputs.FirewallPolicyRuleMatchArgs\n {\n DestIpRanges = new[]\n {\n \"11.100.0.1/32\",\n },\n DestFqdns = new() { },\n DestRegionCodes = new[]\n {\n \"US\",\n },\n DestThreatIntelligences = new[]\n {\n \"iplist-known-malicious-ips\",\n },\n SrcAddressGroups = new() { },\n DestAddressGroups = new[]\n {\n basicGlobalNetworksecurityAddressGroup.Id,\n },\n DestNetworkScope = \"INTERNET\",\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"8080\",\n },\n },\n new Gcp.Compute.Inputs.FirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"udp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-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\tbasicGlobalNetworksecurityAddressGroup, err := networksecurity.NewAddressGroup(ctx, \"basic_global_networksecurity_address_group\", \u0026networksecurity.AddressGroupArgs{\n\t\t\tName: pulumi.String(\"address-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"Sample global networksecurity_address_group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tItems: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"208.80.154.224/32\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"IPV4\"),\n\t\t\tCapacity: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicy(ctx, \"default\", \u0026compute.FirewallPolicyArgs{\n\t\t\tParent: folder.ID(),\n\t\t\tShortName: pulumi.String(\"fw-policy\"),\n\t\t\tDescription: pulumi.String(\"Resource created for Terraform acceptance testing\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicyRule(ctx, \"primary\", \u0026compute.FirewallPolicyRuleArgs{\n\t\t\tFirewallPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"Resource created for Terraform acceptance testing\"),\n\t\t\tPriority: pulumi.Int(9000),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDirection: pulumi.String(\"EGRESS\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tTargetServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tMatch: \u0026compute.FirewallPolicyRuleMatchArgs{\n\t\t\t\tDestIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"11.100.0.1/32\"),\n\t\t\t\t},\n\t\t\t\tDestFqdns: pulumi.StringArray{},\n\t\t\t\tDestRegionCodes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t},\n\t\t\t\tDestThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"iplist-known-malicious-ips\"),\n\t\t\t\t},\n\t\t\t\tSrcAddressGroups: pulumi.StringArray{},\n\t\t\t\tDestAddressGroups: pulumi.StringArray{\n\t\t\t\t\tbasicGlobalNetworksecurityAddressGroup.ID(),\n\t\t\t\t},\n\t\t\t\tDestNetworkScope: pulumi.String(\"INTERNET\"),\n\t\t\t\tLayer4Configs: compute.FirewallPolicyRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\u0026compute.FirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"8080\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.FirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"udp\"),\n\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.AddressGroup;\nimport com.pulumi.gcp.networksecurity.AddressGroupArgs;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.compute.FirewallPolicy;\nimport com.pulumi.gcp.compute.FirewallPolicyArgs;\nimport com.pulumi.gcp.compute.FirewallPolicyRule;\nimport com.pulumi.gcp.compute.FirewallPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallPolicyRuleMatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicGlobalNetworksecurityAddressGroup = new AddressGroup(\"basicGlobalNetworksecurityAddressGroup\", AddressGroupArgs.builder()\n .name(\"address-group\")\n .parent(\"organizations/123456789\")\n .description(\"Sample global networksecurity_address_group\")\n .location(\"global\")\n .items(\"208.80.154.224/32\")\n .type(\"IPV4\")\n .capacity(100)\n .build());\n\n var folder = new Folder(\"folder\", FolderArgs.builder()\n .displayName(\"folder\")\n .parent(\"organizations/123456789\")\n .deletionProtection(false)\n .build());\n\n var default_ = new FirewallPolicy(\"default\", FirewallPolicyArgs.builder()\n .parent(folder.id())\n .shortName(\"fw-policy\")\n .description(\"Resource created for Terraform acceptance testing\")\n .build());\n\n var primary = new FirewallPolicyRule(\"primary\", FirewallPolicyRuleArgs.builder()\n .firewallPolicy(default_.name())\n .description(\"Resource created for Terraform acceptance testing\")\n .priority(9000)\n .enableLogging(true)\n .action(\"allow\")\n .direction(\"EGRESS\")\n .disabled(false)\n .targetServiceAccounts(\"my@service-account.com\")\n .match(FirewallPolicyRuleMatchArgs.builder()\n .destIpRanges(\"11.100.0.1/32\")\n .destFqdns()\n .destRegionCodes(\"US\")\n .destThreatIntelligences(\"iplist-known-malicious-ips\")\n .srcAddressGroups()\n .destAddressGroups(basicGlobalNetworksecurityAddressGroup.id())\n .destNetworkScope(\"INTERNET\")\n .layer4Configs( \n FirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports(8080)\n .build(),\n FirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"udp\")\n .ports(22)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicGlobalNetworksecurityAddressGroup:\n type: gcp:networksecurity:AddressGroup\n name: basic_global_networksecurity_address_group\n properties:\n name: address-group\n parent: organizations/123456789\n description: Sample global networksecurity_address_group\n location: global\n items:\n - 208.80.154.224/32\n type: IPV4\n capacity: 100\n folder:\n type: gcp:organizations:Folder\n properties:\n displayName: folder\n parent: organizations/123456789\n deletionProtection: false\n default:\n type: gcp:compute:FirewallPolicy\n properties:\n parent: ${folder.id}\n shortName: fw-policy\n description: Resource created for Terraform acceptance testing\n primary:\n type: gcp:compute:FirewallPolicyRule\n properties:\n firewallPolicy: ${default.name}\n description: Resource created for Terraform acceptance testing\n priority: 9000\n enableLogging: true\n action: allow\n direction: EGRESS\n disabled: false\n targetServiceAccounts:\n - my@service-account.com\n match:\n destIpRanges:\n - 11.100.0.1/32\n destFqdns: []\n destRegionCodes:\n - US\n destThreatIntelligences:\n - iplist-known-malicious-ips\n srcAddressGroups: []\n destAddressGroups:\n - ${basicGlobalNetworksecurityAddressGroup.id}\n destNetworkScope: INTERNET\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - 8080\n - ipProtocol: udp\n ports:\n - 22\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firewall Policy Rule Network Scope\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.organizations.Folder(\"folder\", {\n displayName: \"folder\",\n parent: \"organizations/123456789\",\n deletionProtection: false,\n});\nconst _default = new gcp.compute.FirewallPolicy(\"default\", {\n parent: folder.id,\n shortName: \"fw-policy\",\n description: \"Firewall policy\",\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst primary = new gcp.compute.FirewallPolicyRule(\"primary\", {\n firewallPolicy: _default.name,\n description: \"Firewall policy rule with network scope\",\n priority: 9000,\n action: \"allow\",\n direction: \"INGRESS\",\n disabled: false,\n match: {\n srcIpRanges: [\"11.100.0.1/32\"],\n srcNetworkScope: \"VPC_NETWORKS\",\n srcNetworks: [network.id],\n layer4Configs: [\n {\n ipProtocol: \"tcp\",\n ports: [\"8080\"],\n },\n {\n ipProtocol: \"udp\",\n ports: [\"22\"],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n display_name=\"folder\",\n parent=\"organizations/123456789\",\n deletion_protection=False)\ndefault = gcp.compute.FirewallPolicy(\"default\",\n parent=folder.id,\n short_name=\"fw-policy\",\n description=\"Firewall policy\")\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=False)\nprimary = gcp.compute.FirewallPolicyRule(\"primary\",\n firewall_policy=default.name,\n description=\"Firewall policy rule with network scope\",\n priority=9000,\n action=\"allow\",\n direction=\"INGRESS\",\n disabled=False,\n match={\n \"src_ip_ranges\": [\"11.100.0.1/32\"],\n \"src_network_scope\": \"VPC_NETWORKS\",\n \"src_networks\": [network.id],\n \"layer4_configs\": [\n {\n \"ip_protocol\": \"tcp\",\n \"ports\": [\"8080\"],\n },\n {\n \"ip_protocol\": \"udp\",\n \"ports\": [\"22\"],\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n DisplayName = \"folder\",\n Parent = \"organizations/123456789\",\n DeletionProtection = false,\n });\n\n var @default = new Gcp.Compute.FirewallPolicy(\"default\", new()\n {\n Parent = folder.Id,\n ShortName = \"fw-policy\",\n Description = \"Firewall policy\",\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var primary = new Gcp.Compute.FirewallPolicyRule(\"primary\", new()\n {\n FirewallPolicy = @default.Name,\n Description = \"Firewall policy rule with network scope\",\n Priority = 9000,\n Action = \"allow\",\n Direction = \"INGRESS\",\n Disabled = false,\n Match = new Gcp.Compute.Inputs.FirewallPolicyRuleMatchArgs\n {\n SrcIpRanges = new[]\n {\n \"11.100.0.1/32\",\n },\n SrcNetworkScope = \"VPC_NETWORKS\",\n SrcNetworks = new[]\n {\n network.Id,\n },\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"8080\",\n },\n },\n new Gcp.Compute.Inputs.FirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"udp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicy(ctx, \"default\", \u0026compute.FirewallPolicyArgs{\n\t\t\tParent: folder.ID(),\n\t\t\tShortName: pulumi.String(\"fw-policy\"),\n\t\t\tDescription: pulumi.String(\"Firewall policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicyRule(ctx, \"primary\", \u0026compute.FirewallPolicyRuleArgs{\n\t\t\tFirewallPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"Firewall policy rule with network scope\"),\n\t\t\tPriority: pulumi.Int(9000),\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tMatch: \u0026compute.FirewallPolicyRuleMatchArgs{\n\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"11.100.0.1/32\"),\n\t\t\t\t},\n\t\t\t\tSrcNetworkScope: pulumi.String(\"VPC_NETWORKS\"),\n\t\t\t\tSrcNetworks: pulumi.StringArray{\n\t\t\t\t\tnetwork.ID(),\n\t\t\t\t},\n\t\t\t\tLayer4Configs: compute.FirewallPolicyRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\u0026compute.FirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"8080\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.FirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"udp\"),\n\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.compute.FirewallPolicy;\nimport com.pulumi.gcp.compute.FirewallPolicyArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.FirewallPolicyRule;\nimport com.pulumi.gcp.compute.FirewallPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallPolicyRuleMatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var folder = new Folder(\"folder\", FolderArgs.builder()\n .displayName(\"folder\")\n .parent(\"organizations/123456789\")\n .deletionProtection(false)\n .build());\n\n var default_ = new FirewallPolicy(\"default\", FirewallPolicyArgs.builder()\n .parent(folder.id())\n .shortName(\"fw-policy\")\n .description(\"Firewall policy\")\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var primary = new FirewallPolicyRule(\"primary\", FirewallPolicyRuleArgs.builder()\n .firewallPolicy(default_.name())\n .description(\"Firewall policy rule with network scope\")\n .priority(9000)\n .action(\"allow\")\n .direction(\"INGRESS\")\n .disabled(false)\n .match(FirewallPolicyRuleMatchArgs.builder()\n .srcIpRanges(\"11.100.0.1/32\")\n .srcNetworkScope(\"VPC_NETWORKS\")\n .srcNetworks(network.id())\n .layer4Configs( \n FirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports(8080)\n .build(),\n FirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"udp\")\n .ports(22)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n displayName: folder\n parent: organizations/123456789\n deletionProtection: false\n default:\n type: gcp:compute:FirewallPolicy\n properties:\n parent: ${folder.id}\n shortName: fw-policy\n description: Firewall policy\n primary:\n type: gcp:compute:FirewallPolicyRule\n properties:\n firewallPolicy: ${default.name}\n description: Firewall policy rule with network scope\n priority: 9000\n action: allow\n direction: INGRESS\n disabled: false\n match:\n srcIpRanges:\n - 11.100.0.1/32\n srcNetworkScope: VPC_NETWORKS\n srcNetworks:\n - ${network.id}\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - 8080\n - ipProtocol: udp\n ports:\n - 22\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewallPolicyRule can be imported using any of these accepted formats:\n\n* `locations/global/firewallPolicies/{{firewall_policy}}/rules/{{priority}}`\n\n* `{{firewall_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, FirewallPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyRule:FirewallPolicyRule default locations/global/firewallPolicies/{{firewall_policy}}/rules/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyRule:FirewallPolicyRule default {{firewall_policy}}/{{priority}}\n```\n\n", + "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).\n\n\nTo get more information about FirewallPolicyRule, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/firewallPolicies/addRule)\n\n## Example Usage\n\n### Firewall Policy Rule\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicGlobalNetworksecurityAddressGroup = new gcp.networksecurity.AddressGroup(\"basic_global_networksecurity_address_group\", {\n name: \"address-group\",\n parent: \"organizations/123456789\",\n description: \"Sample global networksecurity_address_group\",\n location: \"global\",\n items: [\"208.80.154.224/32\"],\n type: \"IPV4\",\n capacity: 100,\n});\nconst folder = new gcp.organizations.Folder(\"folder\", {\n displayName: \"folder\",\n parent: \"organizations/123456789\",\n deletionProtection: false,\n});\nconst _default = new gcp.compute.FirewallPolicy(\"default\", {\n parent: folder.id,\n shortName: \"fw-policy\",\n description: \"Resource created for Terraform acceptance testing\",\n});\nconst primary = new gcp.compute.FirewallPolicyRule(\"primary\", {\n firewallPolicy: _default.name,\n description: \"Resource created for Terraform acceptance testing\",\n priority: 9000,\n enableLogging: true,\n action: \"allow\",\n direction: \"EGRESS\",\n disabled: false,\n targetServiceAccounts: [\"my@service-account.com\"],\n match: {\n destIpRanges: [\"11.100.0.1/32\"],\n destFqdns: [],\n destRegionCodes: [\"US\"],\n destThreatIntelligences: [\"iplist-known-malicious-ips\"],\n srcAddressGroups: [],\n destAddressGroups: [basicGlobalNetworksecurityAddressGroup.id],\n destNetworkScope: \"INTERNET\",\n layer4Configs: [\n {\n ipProtocol: \"tcp\",\n ports: [\"8080\"],\n },\n {\n ipProtocol: \"udp\",\n ports: [\"22\"],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_global_networksecurity_address_group = gcp.networksecurity.AddressGroup(\"basic_global_networksecurity_address_group\",\n name=\"address-group\",\n parent=\"organizations/123456789\",\n description=\"Sample global networksecurity_address_group\",\n location=\"global\",\n items=[\"208.80.154.224/32\"],\n type=\"IPV4\",\n capacity=100)\nfolder = gcp.organizations.Folder(\"folder\",\n display_name=\"folder\",\n parent=\"organizations/123456789\",\n deletion_protection=False)\ndefault = gcp.compute.FirewallPolicy(\"default\",\n parent=folder.id,\n short_name=\"fw-policy\",\n description=\"Resource created for Terraform acceptance testing\")\nprimary = gcp.compute.FirewallPolicyRule(\"primary\",\n firewall_policy=default.name,\n description=\"Resource created for Terraform acceptance testing\",\n priority=9000,\n enable_logging=True,\n action=\"allow\",\n direction=\"EGRESS\",\n disabled=False,\n target_service_accounts=[\"my@service-account.com\"],\n match={\n \"dest_ip_ranges\": [\"11.100.0.1/32\"],\n \"dest_fqdns\": [],\n \"dest_region_codes\": [\"US\"],\n \"dest_threat_intelligences\": [\"iplist-known-malicious-ips\"],\n \"src_address_groups\": [],\n \"dest_address_groups\": [basic_global_networksecurity_address_group.id],\n \"dest_network_scope\": \"INTERNET\",\n \"layer4_configs\": [\n {\n \"ip_protocol\": \"tcp\",\n \"ports\": [\"8080\"],\n },\n {\n \"ip_protocol\": \"udp\",\n \"ports\": [\"22\"],\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicGlobalNetworksecurityAddressGroup = new Gcp.NetworkSecurity.AddressGroup(\"basic_global_networksecurity_address_group\", new()\n {\n Name = \"address-group\",\n Parent = \"organizations/123456789\",\n Description = \"Sample global networksecurity_address_group\",\n Location = \"global\",\n Items = new[]\n {\n \"208.80.154.224/32\",\n },\n Type = \"IPV4\",\n Capacity = 100,\n });\n\n var folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n DisplayName = \"folder\",\n Parent = \"organizations/123456789\",\n DeletionProtection = false,\n });\n\n var @default = new Gcp.Compute.FirewallPolicy(\"default\", new()\n {\n Parent = folder.Id,\n ShortName = \"fw-policy\",\n Description = \"Resource created for Terraform acceptance testing\",\n });\n\n var primary = new Gcp.Compute.FirewallPolicyRule(\"primary\", new()\n {\n FirewallPolicy = @default.Name,\n Description = \"Resource created for Terraform acceptance testing\",\n Priority = 9000,\n EnableLogging = true,\n Action = \"allow\",\n Direction = \"EGRESS\",\n Disabled = false,\n TargetServiceAccounts = new[]\n {\n \"my@service-account.com\",\n },\n Match = new Gcp.Compute.Inputs.FirewallPolicyRuleMatchArgs\n {\n DestIpRanges = new[]\n {\n \"11.100.0.1/32\",\n },\n DestFqdns = new() { },\n DestRegionCodes = new[]\n {\n \"US\",\n },\n DestThreatIntelligences = new[]\n {\n \"iplist-known-malicious-ips\",\n },\n SrcAddressGroups = new() { },\n DestAddressGroups = new[]\n {\n basicGlobalNetworksecurityAddressGroup.Id,\n },\n DestNetworkScope = \"INTERNET\",\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"8080\",\n },\n },\n new Gcp.Compute.Inputs.FirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"udp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networksecurity\"\n\t\"github.com/pulumi/pulumi-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\tbasicGlobalNetworksecurityAddressGroup, err := networksecurity.NewAddressGroup(ctx, \"basic_global_networksecurity_address_group\", \u0026networksecurity.AddressGroupArgs{\n\t\t\tName: pulumi.String(\"address-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"Sample global networksecurity_address_group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tItems: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"208.80.154.224/32\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"IPV4\"),\n\t\t\tCapacity: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewFirewallPolicy(ctx, \"default\", \u0026compute.FirewallPolicyArgs{\n\t\t\tParent: folder.ID(),\n\t\t\tShortName: pulumi.String(\"fw-policy\"),\n\t\t\tDescription: pulumi.String(\"Resource created for Terraform acceptance testing\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicyRule(ctx, \"primary\", \u0026compute.FirewallPolicyRuleArgs{\n\t\t\tFirewallPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"Resource created for Terraform acceptance testing\"),\n\t\t\tPriority: pulumi.Int(9000),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDirection: pulumi.String(\"EGRESS\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tTargetServiceAccounts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"my@service-account.com\"),\n\t\t\t},\n\t\t\tMatch: \u0026compute.FirewallPolicyRuleMatchArgs{\n\t\t\t\tDestIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"11.100.0.1/32\"),\n\t\t\t\t},\n\t\t\t\tDestFqdns: pulumi.StringArray{},\n\t\t\t\tDestRegionCodes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t},\n\t\t\t\tDestThreatIntelligences: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"iplist-known-malicious-ips\"),\n\t\t\t\t},\n\t\t\t\tSrcAddressGroups: pulumi.StringArray{},\n\t\t\t\tDestAddressGroups: pulumi.StringArray{\n\t\t\t\t\tbasicGlobalNetworksecurityAddressGroup.ID(),\n\t\t\t\t},\n\t\t\t\tDestNetworkScope: pulumi.String(\"INTERNET\"),\n\t\t\t\tLayer4Configs: compute.FirewallPolicyRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\u0026compute.FirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"8080\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.FirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"udp\"),\n\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.AddressGroup;\nimport com.pulumi.gcp.networksecurity.AddressGroupArgs;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.compute.FirewallPolicy;\nimport com.pulumi.gcp.compute.FirewallPolicyArgs;\nimport com.pulumi.gcp.compute.FirewallPolicyRule;\nimport com.pulumi.gcp.compute.FirewallPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallPolicyRuleMatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicGlobalNetworksecurityAddressGroup = new AddressGroup(\"basicGlobalNetworksecurityAddressGroup\", AddressGroupArgs.builder()\n .name(\"address-group\")\n .parent(\"organizations/123456789\")\n .description(\"Sample global networksecurity_address_group\")\n .location(\"global\")\n .items(\"208.80.154.224/32\")\n .type(\"IPV4\")\n .capacity(100)\n .build());\n\n var folder = new Folder(\"folder\", FolderArgs.builder()\n .displayName(\"folder\")\n .parent(\"organizations/123456789\")\n .deletionProtection(false)\n .build());\n\n var default_ = new FirewallPolicy(\"default\", FirewallPolicyArgs.builder()\n .parent(folder.id())\n .shortName(\"fw-policy\")\n .description(\"Resource created for Terraform acceptance testing\")\n .build());\n\n var primary = new FirewallPolicyRule(\"primary\", FirewallPolicyRuleArgs.builder()\n .firewallPolicy(default_.name())\n .description(\"Resource created for Terraform acceptance testing\")\n .priority(9000)\n .enableLogging(true)\n .action(\"allow\")\n .direction(\"EGRESS\")\n .disabled(false)\n .targetServiceAccounts(\"my@service-account.com\")\n .match(FirewallPolicyRuleMatchArgs.builder()\n .destIpRanges(\"11.100.0.1/32\")\n .destFqdns()\n .destRegionCodes(\"US\")\n .destThreatIntelligences(\"iplist-known-malicious-ips\")\n .srcAddressGroups()\n .destAddressGroups(basicGlobalNetworksecurityAddressGroup.id())\n .destNetworkScope(\"INTERNET\")\n .layer4Configs( \n FirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports(8080)\n .build(),\n FirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"udp\")\n .ports(22)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicGlobalNetworksecurityAddressGroup:\n type: gcp:networksecurity:AddressGroup\n name: basic_global_networksecurity_address_group\n properties:\n name: address-group\n parent: organizations/123456789\n description: Sample global networksecurity_address_group\n location: global\n items:\n - 208.80.154.224/32\n type: IPV4\n capacity: 100\n folder:\n type: gcp:organizations:Folder\n properties:\n displayName: folder\n parent: organizations/123456789\n deletionProtection: false\n default:\n type: gcp:compute:FirewallPolicy\n properties:\n parent: ${folder.id}\n shortName: fw-policy\n description: Resource created for Terraform acceptance testing\n primary:\n type: gcp:compute:FirewallPolicyRule\n properties:\n firewallPolicy: ${default.name}\n description: Resource created for Terraform acceptance testing\n priority: 9000\n enableLogging: true\n action: allow\n direction: EGRESS\n disabled: false\n targetServiceAccounts:\n - my@service-account.com\n match:\n destIpRanges:\n - 11.100.0.1/32\n destFqdns: []\n destRegionCodes:\n - US\n destThreatIntelligences:\n - iplist-known-malicious-ips\n srcAddressGroups: []\n destAddressGroups:\n - ${basicGlobalNetworksecurityAddressGroup.id}\n destNetworkScope: INTERNET\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - 8080\n - ipProtocol: udp\n ports:\n - 22\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firewall Policy Rule Network Scope\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst folder = new gcp.organizations.Folder(\"folder\", {\n displayName: \"folder\",\n parent: \"organizations/123456789\",\n deletionProtection: false,\n});\nconst _default = new gcp.compute.FirewallPolicy(\"default\", {\n parent: folder.id,\n shortName: \"fw-policy\",\n description: \"Firewall policy\",\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: false,\n});\nconst primary = new gcp.compute.FirewallPolicyRule(\"primary\", {\n firewallPolicy: _default.name,\n description: \"Firewall policy rule with network scope\",\n priority: 9000,\n action: \"allow\",\n direction: \"INGRESS\",\n disabled: false,\n match: {\n srcIpRanges: [\"11.100.0.1/32\"],\n srcNetworkScope: \"VPC_NETWORKS\",\n srcNetworks: [network.id],\n layer4Configs: [\n {\n ipProtocol: \"tcp\",\n ports: [\"8080\"],\n },\n {\n ipProtocol: \"udp\",\n ports: [\"22\"],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n display_name=\"folder\",\n parent=\"organizations/123456789\",\n deletion_protection=False)\ndefault = gcp.compute.FirewallPolicy(\"default\",\n parent=folder.id,\n short_name=\"fw-policy\",\n description=\"Firewall policy\")\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=False)\nprimary = gcp.compute.FirewallPolicyRule(\"primary\",\n firewall_policy=default.name,\n description=\"Firewall policy rule with network scope\",\n priority=9000,\n action=\"allow\",\n direction=\"INGRESS\",\n disabled=False,\n match={\n \"src_ip_ranges\": [\"11.100.0.1/32\"],\n \"src_network_scope\": \"VPC_NETWORKS\",\n \"src_networks\": [network.id],\n \"layer4_configs\": [\n {\n \"ip_protocol\": \"tcp\",\n \"ports\": [\"8080\"],\n },\n {\n \"ip_protocol\": \"udp\",\n \"ports\": [\"22\"],\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n DisplayName = \"folder\",\n Parent = \"organizations/123456789\",\n DeletionProtection = false,\n });\n\n var @default = new Gcp.Compute.FirewallPolicy(\"default\", new()\n {\n Parent = folder.Id,\n ShortName = \"fw-policy\",\n Description = \"Firewall policy\",\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var primary = new Gcp.Compute.FirewallPolicyRule(\"primary\", new()\n {\n FirewallPolicy = @default.Name,\n Description = \"Firewall policy rule with network scope\",\n Priority = 9000,\n Action = \"allow\",\n Direction = \"INGRESS\",\n Disabled = false,\n Match = new Gcp.Compute.Inputs.FirewallPolicyRuleMatchArgs\n {\n SrcIpRanges = new[]\n {\n \"11.100.0.1/32\",\n },\n SrcNetworkScope = \"VPC_NETWORKS\",\n SrcNetworks = new[]\n {\n network.Id,\n },\n Layer4Configs = new[]\n {\n new Gcp.Compute.Inputs.FirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"tcp\",\n Ports = new[]\n {\n \"8080\",\n },\n },\n new Gcp.Compute.Inputs.FirewallPolicyRuleMatchLayer4ConfigArgs\n {\n IpProtocol = \"udp\",\n Ports = new[]\n {\n \"22\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewFirewallPolicy(ctx, \"default\", \u0026compute.FirewallPolicyArgs{\n\t\t\tParent: folder.ID(),\n\t\t\tShortName: pulumi.String(\"fw-policy\"),\n\t\t\tDescription: pulumi.String(\"Firewall policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewFirewallPolicyRule(ctx, \"primary\", \u0026compute.FirewallPolicyRuleArgs{\n\t\t\tFirewallPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"Firewall policy rule with network scope\"),\n\t\t\tPriority: pulumi.Int(9000),\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tDirection: pulumi.String(\"INGRESS\"),\n\t\t\tDisabled: pulumi.Bool(false),\n\t\t\tMatch: \u0026compute.FirewallPolicyRuleMatchArgs{\n\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"11.100.0.1/32\"),\n\t\t\t\t},\n\t\t\t\tSrcNetworkScope: pulumi.String(\"VPC_NETWORKS\"),\n\t\t\t\tSrcNetworks: pulumi.StringArray{\n\t\t\t\t\tnetwork.ID(),\n\t\t\t\t},\n\t\t\t\tLayer4Configs: compute.FirewallPolicyRuleMatchLayer4ConfigArray{\n\t\t\t\t\t\u0026compute.FirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"8080\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.FirewallPolicyRuleMatchLayer4ConfigArgs{\n\t\t\t\t\t\tIpProtocol: pulumi.String(\"udp\"),\n\t\t\t\t\t\tPorts: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"22\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.compute.FirewallPolicy;\nimport com.pulumi.gcp.compute.FirewallPolicyArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.FirewallPolicyRule;\nimport com.pulumi.gcp.compute.FirewallPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.FirewallPolicyRuleMatchArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var folder = new Folder(\"folder\", FolderArgs.builder()\n .displayName(\"folder\")\n .parent(\"organizations/123456789\")\n .deletionProtection(false)\n .build());\n\n var default_ = new FirewallPolicy(\"default\", FirewallPolicyArgs.builder()\n .parent(folder.id())\n .shortName(\"fw-policy\")\n .description(\"Firewall policy\")\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var primary = new FirewallPolicyRule(\"primary\", FirewallPolicyRuleArgs.builder()\n .firewallPolicy(default_.name())\n .description(\"Firewall policy rule with network scope\")\n .priority(9000)\n .action(\"allow\")\n .direction(\"INGRESS\")\n .disabled(false)\n .match(FirewallPolicyRuleMatchArgs.builder()\n .srcIpRanges(\"11.100.0.1/32\")\n .srcNetworkScope(\"VPC_NETWORKS\")\n .srcNetworks(network.id())\n .layer4Configs( \n FirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"tcp\")\n .ports(8080)\n .build(),\n FirewallPolicyRuleMatchLayer4ConfigArgs.builder()\n .ipProtocol(\"udp\")\n .ports(22)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n displayName: folder\n parent: organizations/123456789\n deletionProtection: false\n default:\n type: gcp:compute:FirewallPolicy\n properties:\n parent: ${folder.id}\n shortName: fw-policy\n description: Firewall policy\n primary:\n type: gcp:compute:FirewallPolicyRule\n properties:\n firewallPolicy: ${default.name}\n description: Firewall policy rule with network scope\n priority: 9000\n action: allow\n direction: INGRESS\n disabled: false\n match:\n srcIpRanges:\n - 11.100.0.1/32\n srcNetworkScope: VPC_NETWORKS\n srcNetworks:\n - ${network.id}\n layer4Configs:\n - ipProtocol: tcp\n ports:\n - 8080\n - ipProtocol: udp\n ports:\n - 22\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFirewallPolicyRule can be imported using any of these accepted formats:\n\n* `locations/global/firewallPolicies/{{firewall_policy}}/rules/{{priority}}`\n\n* `{{firewall_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, FirewallPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyRule:FirewallPolicyRule default locations/global/firewallPolicies/{{firewall_policy}}/rules/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/firewallPolicyRule:FirewallPolicyRule default {{firewall_policy}}/{{priority}}\n```\n\n", "properties": { "action": { "type": "string", @@ -171207,7 +171207,7 @@ } }, "gcp:compute/globalForwardingRule:GlobalForwardingRule": { - "description": "Represents a GlobalForwardingRule resource. Global forwarding rules are\nused to forward traffic to the correct load balancer for HTTP load\nbalancing. Global forwarding rules can only be used for HTTP load\nbalancing.\n\nFor more information, see https://cloud.google.com/compute/docs/load-balancing/http/\n\n\n\n## Example Usage\n\n### Global Forwarding Rule Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"check-backend\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst _default = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"check-backend\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.id,\n port_range=\"80\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"check-backend\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var @default = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-backend\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"check-backend\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var default_ = new GlobalForwardingRule(\"default\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:GlobalForwardingRule\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: check-backend\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Global Forwarding Rule Internal\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n name: \"template-backend\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: \"default\",\n }],\n disks: [{\n sourceImage: debianImage.then(debianImage =\u003e debianImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n});\nconst igm = new gcp.compute.InstanceGroupManager(\"igm\", {\n name: \"igm-internal\",\n versions: [{\n instanceTemplate: instanceTemplate.id,\n name: \"primary\",\n }],\n baseInstanceName: \"internal-glb\",\n zone: \"us-central1-f\",\n targetSize: 1,\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"check-backend\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n backends: [{\n group: igm.instanceGroup,\n balancingMode: \"RATE\",\n capacityScaler: 0.4,\n maxRatePerInstance: 50,\n }],\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst _default = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n ipAddress: \"0.0.0.0\",\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name=\"template-backend\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": \"default\",\n }],\n disks=[{\n \"source_image\": debian_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }])\nigm = gcp.compute.InstanceGroupManager(\"igm\",\n name=\"igm-internal\",\n versions=[{\n \"instance_template\": instance_template.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"internal-glb\",\n zone=\"us-central1-f\",\n target_size=1)\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"check-backend\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n backends=[{\n \"group\": igm.instance_group,\n \"balancing_mode\": \"RATE\",\n \"capacity_scaler\": 0.4,\n \"max_rate_per_instance\": 50,\n }],\n health_checks=default_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.id,\n port_range=\"80\",\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n ip_address=\"0.0.0.0\",\n metadata_filters=[{\n \"filter_match_criteria\": \"MATCH_ANY\",\n \"filter_labels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n Name = \"template-backend\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n });\n\n var igm = new Gcp.Compute.InstanceGroupManager(\"igm\", new()\n {\n Name = \"igm-internal\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = instanceTemplate.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"internal-glb\",\n Zone = \"us-central1-f\",\n TargetSize = 1,\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"check-backend\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = igm.InstanceGroup,\n BalancingMode = \"RATE\",\n CapacityScaler = 0.4,\n MaxRatePerInstance = 50,\n },\n },\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var @default = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n IpAddress = \"0.0.0.0\",\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.GlobalForwardingRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.GlobalForwardingRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"template-backend\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debianImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tigm, err := compute.NewInstanceGroupManager(ctx, \"igm\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"igm-internal\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: instanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"internal-glb\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-backend\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: igm.InstanceGroup,\n\t\t\t\t\tBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(0.4),\n\t\t\t\t\tMaxRatePerInstance: pulumi.Float64(50),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tIpAddress: pulumi.String(\"0.0.0.0\"),\n\t\t\tMetadataFilters: compute.GlobalForwardingRuleMetadataFilterArray{\n\t\t\t\t\u0026compute.GlobalForwardingRuleMetadataFilterArgs{\n\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\tFilterLabels: compute.GlobalForwardingRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\u0026compute.GlobalForwardingRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport com.pulumi.gcp.compute.inputs.GlobalForwardingRuleMetadataFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var debianImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"template-backend\")\n .machineType(\"e2-medium\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(debianImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .build());\n\n var igm = new InstanceGroupManager(\"igm\", InstanceGroupManagerArgs.builder()\n .name(\"igm-internal\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .zone(\"us-central1-f\")\n .targetSize(1)\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"check-backend\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .backends(BackendServiceBackendArgs.builder()\n .group(igm.instanceGroup())\n .balancingMode(\"RATE\")\n .capacityScaler(0.4)\n .maxRatePerInstance(50)\n .build())\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var default_ = new GlobalForwardingRule(\"default\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .ipAddress(\"0.0.0.0\")\n .metadataFilters(GlobalForwardingRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(GlobalForwardingRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:GlobalForwardingRule\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n ipAddress: 0.0.0.0\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n backends:\n - group: ${igm.instanceGroup}\n balancingMode: RATE\n capacityScaler: 0.4\n maxRatePerInstance: 50\n healthChecks: ${defaultHealthCheck.id}\n igm:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: igm-internal\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n zone: us-central1-f\n targetSize: 1\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n name: template-backend\n machineType: e2-medium\n networkInterfaces:\n - network: default\n disks:\n - sourceImage: ${debianImage.selfLink}\n autoDelete: true\n boot: true\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: check-backend\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\nvariables:\n debianImage:\n fn::invoke:\n function: gcp:compute:getImage\n arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Global Forwarding Rule External Managed\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst _default = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n networkTier: \"PREMIUM\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\")\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.id,\n port_range=\"80\",\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n network_tier=\"PREMIUM\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var @default = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n NetworkTier = \"PREMIUM\",\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\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var default_ = new GlobalForwardingRule(\"default\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .networkTier(\"PREMIUM\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:GlobalForwardingRule\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n loadBalancingScheme: EXTERNAL_MANAGED\n networkTier: PREMIUM\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Global Forwarding Rule Hybrid\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst config = new pulumi.Config();\nconst subnetworkCidr = config.get(\"subnetworkCidr\") || \"10.0.0.0/24\";\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst internal = new gcp.compute.Network(\"internal\", {\n name: \"my-internal-network\",\n autoCreateSubnetworks: false,\n});\nconst internalSubnetwork = new gcp.compute.Subnetwork(\"internal\", {\n name: \"my-subnetwork\",\n network: internal.id,\n ipCidrRange: subnetworkCidr,\n region: \"us-central1\",\n privateIpGoogleAccess: true,\n});\n// Zonal NEG with GCE_VM_IP_PORT\nconst defaultNetworkEndpointGroup = new gcp.compute.NetworkEndpointGroup(\"default\", {\n name: \"default-neg\",\n network: _default.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n networkEndpointType: \"GCE_VM_IP_PORT\",\n});\n// Zonal NEG with GCE_VM_IP\nconst internalNetworkEndpointGroup = new gcp.compute.NetworkEndpointGroup(\"internal\", {\n name: \"internal-neg\",\n network: internal.id,\n subnetwork: internalSubnetwork.id,\n zone: \"us-central1-a\",\n networkEndpointType: \"GCE_VM_IP\",\n});\n// Hybrid connectivity NEG\nconst hybrid = new gcp.compute.NetworkEndpointGroup(\"hybrid\", {\n name: \"hybrid-neg\",\n network: _default.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n networkEndpointType: \"NON_GCP_PRIVATE_IP_PORT\",\n});\nconst hybrid_endpoint = new gcp.compute.NetworkEndpoint(\"hybrid-endpoint\", {\n networkEndpointGroup: hybrid.name,\n port: hybrid.defaultPort,\n ipAddress: \"127.0.0.1\",\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\n// Backend service for Zonal NEG\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-default\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n backends: [{\n group: defaultNetworkEndpointGroup.id,\n balancingMode: \"RATE\",\n maxRatePerEndpoint: 10,\n }],\n healthChecks: defaultHealthCheck.id,\n});\n// Backgend service for Hybrid NEG\nconst hybridBackendService = new gcp.compute.BackendService(\"hybrid\", {\n name: \"backend-hybrid\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n backends: [{\n group: hybrid.id,\n balancingMode: \"RATE\",\n maxRatePerEndpoint: 10,\n }],\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [\n {\n paths: [\"/*\"],\n service: defaultBackendService.id,\n },\n {\n paths: [\"/hybrid\"],\n service: hybridBackendService.id,\n },\n ],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconfig = pulumi.Config()\nsubnetwork_cidr = config.get(\"subnetworkCidr\")\nif subnetwork_cidr is None:\n subnetwork_cidr = \"10.0.0.0/24\"\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\ninternal = gcp.compute.Network(\"internal\",\n name=\"my-internal-network\",\n auto_create_subnetworks=False)\ninternal_subnetwork = gcp.compute.Subnetwork(\"internal\",\n name=\"my-subnetwork\",\n network=internal.id,\n ip_cidr_range=subnetwork_cidr,\n region=\"us-central1\",\n private_ip_google_access=True)\n# Zonal NEG with GCE_VM_IP_PORT\ndefault_network_endpoint_group = gcp.compute.NetworkEndpointGroup(\"default\",\n name=\"default-neg\",\n network=default.id,\n default_port=90,\n zone=\"us-central1-a\",\n network_endpoint_type=\"GCE_VM_IP_PORT\")\n# Zonal NEG with GCE_VM_IP\ninternal_network_endpoint_group = gcp.compute.NetworkEndpointGroup(\"internal\",\n name=\"internal-neg\",\n network=internal.id,\n subnetwork=internal_subnetwork.id,\n zone=\"us-central1-a\",\n network_endpoint_type=\"GCE_VM_IP\")\n# Hybrid connectivity NEG\nhybrid = gcp.compute.NetworkEndpointGroup(\"hybrid\",\n name=\"hybrid-neg\",\n network=default.id,\n default_port=90,\n zone=\"us-central1-a\",\n network_endpoint_type=\"NON_GCP_PRIVATE_IP_PORT\")\nhybrid_endpoint = gcp.compute.NetworkEndpoint(\"hybrid-endpoint\",\n network_endpoint_group=hybrid.name,\n port=hybrid.default_port,\n ip_address=\"127.0.0.1\")\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\n# Backend service for Zonal NEG\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-default\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n backends=[{\n \"group\": default_network_endpoint_group.id,\n \"balancing_mode\": \"RATE\",\n \"max_rate_per_endpoint\": 10,\n }],\n health_checks=default_health_check.id)\n# Backgend service for Hybrid NEG\nhybrid_backend_service = gcp.compute.BackendService(\"hybrid\",\n name=\"backend-hybrid\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n backends=[{\n \"group\": hybrid.id,\n \"balancing_mode\": \"RATE\",\n \"max_rate_per_endpoint\": 10,\n }],\n health_checks=default_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [\n {\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n },\n {\n \"paths\": [\"/hybrid\"],\n \"service\": hybrid_backend_service.id,\n },\n ],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.id,\n port_range=\"80\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var subnetworkCidr = config.Get(\"subnetworkCidr\") ?? \"10.0.0.0/24\";\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var @internal = new Gcp.Compute.Network(\"internal\", new()\n {\n Name = \"my-internal-network\",\n AutoCreateSubnetworks = false,\n });\n\n var internalSubnetwork = new Gcp.Compute.Subnetwork(\"internal\", new()\n {\n Name = \"my-subnetwork\",\n Network = @internal.Id,\n IpCidrRange = subnetworkCidr,\n Region = \"us-central1\",\n PrivateIpGoogleAccess = true,\n });\n\n // Zonal NEG with GCE_VM_IP_PORT\n var defaultNetworkEndpointGroup = new Gcp.Compute.NetworkEndpointGroup(\"default\", new()\n {\n Name = \"default-neg\",\n Network = @default.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"GCE_VM_IP_PORT\",\n });\n\n // Zonal NEG with GCE_VM_IP\n var internalNetworkEndpointGroup = new Gcp.Compute.NetworkEndpointGroup(\"internal\", new()\n {\n Name = \"internal-neg\",\n Network = @internal.Id,\n Subnetwork = internalSubnetwork.Id,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"GCE_VM_IP\",\n });\n\n // Hybrid connectivity NEG\n var hybrid = new Gcp.Compute.NetworkEndpointGroup(\"hybrid\", new()\n {\n Name = \"hybrid-neg\",\n Network = @default.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"NON_GCP_PRIVATE_IP_PORT\",\n });\n\n var hybrid_endpoint = new Gcp.Compute.NetworkEndpoint(\"hybrid-endpoint\", new()\n {\n NetworkEndpointGroup = hybrid.Name,\n Port = hybrid.DefaultPort,\n IpAddress = \"127.0.0.1\",\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n // Backend service for Zonal NEG\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-default\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = defaultNetworkEndpointGroup.Id,\n BalancingMode = \"RATE\",\n MaxRatePerEndpoint = 10,\n },\n },\n HealthChecks = defaultHealthCheck.Id,\n });\n\n // Backgend service for Hybrid NEG\n var hybridBackendService = new Gcp.Compute.BackendService(\"hybrid\", new()\n {\n Name = \"backend-hybrid\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = hybrid.Id,\n BalancingMode = \"RATE\",\n MaxRatePerEndpoint = 10,\n },\n },\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/hybrid\",\n },\n Service = hybridBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tsubnetworkCidr := \"10.0.0.0/24\"\n\t\tif param := cfg.Get(\"subnetworkCidr\"); param != \"\" {\n\t\t\tsubnetworkCidr = param\n\t\t}\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinternal, err := compute.NewNetwork(ctx, \"internal\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-internal-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinternalSubnetwork, err := compute.NewSubnetwork(ctx, \"internal\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: internal.ID(),\n\t\t\tIpCidrRange: pulumi.String(subnetworkCidr),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Zonal NEG with GCE_VM_IP_PORT\n\t\tdefaultNetworkEndpointGroup, err := compute.NewNetworkEndpointGroup(ctx, \"default\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"default-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Zonal NEG with GCE_VM_IP\n\t\t_, err = compute.NewNetworkEndpointGroup(ctx, \"internal\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"internal-neg\"),\n\t\t\tNetwork: internal.ID(),\n\t\t\tSubnetwork: internalSubnetwork.ID(),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Hybrid connectivity NEG\n\t\thybrid, err := compute.NewNetworkEndpointGroup(ctx, \"hybrid\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"hybrid-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"NON_GCP_PRIVATE_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpoint(ctx, \"hybrid-endpoint\", \u0026compute.NetworkEndpointArgs{\n\t\t\tNetworkEndpointGroup: hybrid.Name,\n\t\t\tPort: hybrid.DefaultPort,\n\t\t\tIpAddress: pulumi.String(\"127.0.0.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Backend service for Zonal NEG\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-default\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: defaultNetworkEndpointGroup.ID(),\n\t\t\t\t\tBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\tMaxRatePerEndpoint: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Backgend service for Hybrid NEG\n\t\thybridBackendService, err := compute.NewBackendService(ctx, \"hybrid\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-hybrid\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: hybrid.ID(),\n\t\t\t\t\tBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\tMaxRatePerEndpoint: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/hybrid\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: hybridBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.NetworkEndpoint;\nimport com.pulumi.gcp.compute.NetworkEndpointArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var subnetworkCidr = config.get(\"subnetworkCidr\").orElse(\"10.0.0.0/24\");\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var internal = new Network(\"internal\", NetworkArgs.builder()\n .name(\"my-internal-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var internalSubnetwork = new Subnetwork(\"internalSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(internal.id())\n .ipCidrRange(subnetworkCidr)\n .region(\"us-central1\")\n .privateIpGoogleAccess(true)\n .build());\n\n // Zonal NEG with GCE_VM_IP_PORT\n var defaultNetworkEndpointGroup = new NetworkEndpointGroup(\"defaultNetworkEndpointGroup\", NetworkEndpointGroupArgs.builder()\n .name(\"default-neg\")\n .network(default_.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .networkEndpointType(\"GCE_VM_IP_PORT\")\n .build());\n\n // Zonal NEG with GCE_VM_IP\n var internalNetworkEndpointGroup = new NetworkEndpointGroup(\"internalNetworkEndpointGroup\", NetworkEndpointGroupArgs.builder()\n .name(\"internal-neg\")\n .network(internal.id())\n .subnetwork(internalSubnetwork.id())\n .zone(\"us-central1-a\")\n .networkEndpointType(\"GCE_VM_IP\")\n .build());\n\n // Hybrid connectivity NEG\n var hybrid = new NetworkEndpointGroup(\"hybrid\", NetworkEndpointGroupArgs.builder()\n .name(\"hybrid-neg\")\n .network(default_.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .networkEndpointType(\"NON_GCP_PRIVATE_IP_PORT\")\n .build());\n\n var hybrid_endpoint = new NetworkEndpoint(\"hybrid-endpoint\", NetworkEndpointArgs.builder()\n .networkEndpointGroup(hybrid.name())\n .port(hybrid.defaultPort())\n .ipAddress(\"127.0.0.1\")\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n // Backend service for Zonal NEG\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-default\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .backends(BackendServiceBackendArgs.builder()\n .group(defaultNetworkEndpointGroup.id())\n .balancingMode(\"RATE\")\n .maxRatePerEndpoint(10)\n .build())\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n // Backgend service for Hybrid NEG\n var hybridBackendService = new BackendService(\"hybridBackendService\", BackendServiceArgs.builder()\n .name(\"backend-hybrid\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .backends(BackendServiceBackendArgs.builder()\n .group(hybrid.id())\n .balancingMode(\"RATE\")\n .maxRatePerEndpoint(10)\n .build())\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules( \n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build(),\n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/hybrid\")\n .service(hybridBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n # Roughly mirrors https://cloud.google.com/load-balancing/docs/https/setting-up-ext-https-hybrid\n subnetworkCidr:\n type: string\n default: 10.0.0.0/24\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n internal:\n type: gcp:compute:Network\n properties:\n name: my-internal-network\n autoCreateSubnetworks: false\n internalSubnetwork:\n type: gcp:compute:Subnetwork\n name: internal\n properties:\n name: my-subnetwork\n network: ${internal.id}\n ipCidrRange: ${subnetworkCidr}\n region: us-central1\n privateIpGoogleAccess: true\n # Zonal NEG with GCE_VM_IP_PORT\n defaultNetworkEndpointGroup:\n type: gcp:compute:NetworkEndpointGroup\n name: default\n properties:\n name: default-neg\n network: ${default.id}\n defaultPort: '90'\n zone: us-central1-a\n networkEndpointType: GCE_VM_IP_PORT\n # Zonal NEG with GCE_VM_IP\n internalNetworkEndpointGroup:\n type: gcp:compute:NetworkEndpointGroup\n name: internal\n properties:\n name: internal-neg\n network: ${internal.id}\n subnetwork: ${internalSubnetwork.id}\n zone: us-central1-a\n networkEndpointType: GCE_VM_IP\n # Hybrid connectivity NEG\n hybrid:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: hybrid-neg\n network: ${default.id}\n defaultPort: '90'\n zone: us-central1-a\n networkEndpointType: NON_GCP_PRIVATE_IP_PORT\n hybrid-endpoint:\n type: gcp:compute:NetworkEndpoint\n properties:\n networkEndpointGroup: ${hybrid.name}\n port: ${hybrid.defaultPort}\n ipAddress: 127.0.0.1\n # Backend service for Zonal NEG\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-default\n portName: http\n protocol: HTTP\n timeoutSec: 10\n backends:\n - group: ${defaultNetworkEndpointGroup.id}\n balancingMode: RATE\n maxRatePerEndpoint: 10\n healthChecks: ${defaultHealthCheck.id}\n # Backgend service for Hybrid NEG\n hybridBackendService:\n type: gcp:compute:BackendService\n name: hybrid\n properties:\n name: backend-hybrid\n portName: http\n protocol: HTTP\n timeoutSec: 10\n backends:\n - group: ${hybrid.id}\n balancingMode: RATE\n maxRatePerEndpoint: 10\n healthChecks: ${defaultHealthCheck.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: health-check\n timeoutSec: 1\n checkIntervalSec: 1\n tcpHealthCheck:\n port: '80'\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n - paths:\n - /hybrid\n service: ${hybridBackendService.id}\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Private Service Connect Google Apis\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n project: \"my-project-name\",\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst vpcSubnetwork = new gcp.compute.Subnetwork(\"vpc_subnetwork\", {\n project: network.project,\n name: \"my-subnetwork\",\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: network.id,\n privateIpGoogleAccess: true,\n});\nconst _default = new gcp.compute.GlobalAddress(\"default\", {\n project: network.project,\n name: \"global-psconnect-ip\",\n addressType: \"INTERNAL\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: network.id,\n address: \"100.100.100.106\",\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n project: network.project,\n name: \"globalrule\",\n target: \"all-apis\",\n network: network.id,\n ipAddress: _default.id,\n loadBalancingScheme: \"\",\n serviceDirectoryRegistrations: {\n namespace: \"sd-namespace\",\n serviceDirectoryRegion: \"europe-west3\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n project=\"my-project-name\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nvpc_subnetwork = gcp.compute.Subnetwork(\"vpc_subnetwork\",\n project=network.project,\n name=\"my-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=network.id,\n private_ip_google_access=True)\ndefault = gcp.compute.GlobalAddress(\"default\",\n project=network.project,\n name=\"global-psconnect-ip\",\n address_type=\"INTERNAL\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=network.id,\n address=\"100.100.100.106\")\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n project=network.project,\n name=\"globalrule\",\n target=\"all-apis\",\n network=network.id,\n ip_address=default.id,\n load_balancing_scheme=\"\",\n service_directory_registrations={\n \"namespace\": \"sd-namespace\",\n \"service_directory_region\": \"europe-west3\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Project = \"my-project-name\",\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var vpcSubnetwork = new Gcp.Compute.Subnetwork(\"vpc_subnetwork\", new()\n {\n Project = network.Project,\n Name = \"my-subnetwork\",\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = network.Id,\n PrivateIpGoogleAccess = true,\n });\n\n var @default = new Gcp.Compute.GlobalAddress(\"default\", new()\n {\n Project = network.Project,\n Name = \"global-psconnect-ip\",\n AddressType = \"INTERNAL\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = network.Id,\n Address = \"100.100.100.106\",\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Project = network.Project,\n Name = \"globalrule\",\n Target = \"all-apis\",\n Network = network.Id,\n IpAddress = @default.Id,\n LoadBalancingScheme = \"\",\n ServiceDirectoryRegistrations = new Gcp.Compute.Inputs.GlobalForwardingRuleServiceDirectoryRegistrationsArgs\n {\n Namespace = \"sd-namespace\",\n ServiceDirectoryRegion = \"europe-west3\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"vpc_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalAddress(ctx, \"default\", \u0026compute.GlobalAddressArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"global-psconnect-ip\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tAddress: pulumi.String(\"100.100.100.106\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"globalrule\"),\n\t\t\tTarget: pulumi.String(\"all-apis\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpAddress: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tServiceDirectoryRegistrations: \u0026compute.GlobalForwardingRuleServiceDirectoryRegistrationsArgs{\n\t\t\t\tNamespace: pulumi.String(\"sd-namespace\"),\n\t\t\t\tServiceDirectoryRegion: pulumi.String(\"europe-west3\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport com.pulumi.gcp.compute.inputs.GlobalForwardingRuleServiceDirectoryRegistrationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .project(\"my-project-name\")\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var vpcSubnetwork = new Subnetwork(\"vpcSubnetwork\", SubnetworkArgs.builder()\n .project(network.project())\n .name(\"my-subnetwork\")\n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(network.id())\n .privateIpGoogleAccess(true)\n .build());\n\n var default_ = new GlobalAddress(\"default\", GlobalAddressArgs.builder()\n .project(network.project())\n .name(\"global-psconnect-ip\")\n .addressType(\"INTERNAL\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(network.id())\n .address(\"100.100.100.106\")\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .project(network.project())\n .name(\"globalrule\")\n .target(\"all-apis\")\n .network(network.id())\n .ipAddress(default_.id())\n .loadBalancingScheme(\"\")\n .serviceDirectoryRegistrations(GlobalForwardingRuleServiceDirectoryRegistrationsArgs.builder()\n .namespace(\"sd-namespace\")\n .serviceDirectoryRegion(\"europe-west3\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n project: my-project-name\n name: my-network\n autoCreateSubnetworks: false\n vpcSubnetwork:\n type: gcp:compute:Subnetwork\n name: vpc_subnetwork\n properties:\n project: ${network.project}\n name: my-subnetwork\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${network.id}\n privateIpGoogleAccess: true\n default:\n type: gcp:compute:GlobalAddress\n properties:\n project: ${network.project}\n name: global-psconnect-ip\n addressType: INTERNAL\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${network.id}\n address: 100.100.100.106\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n project: ${network.project}\n name: globalrule\n target: all-apis\n network: ${network.id}\n ipAddress: ${default.id}\n loadBalancingScheme: \"\"\n serviceDirectoryRegistrations:\n namespace: sd-namespace\n serviceDirectoryRegion: europe-west3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Private Service Connect Google Apis No Automate Dns\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n project: \"my-project-name\",\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst vpcSubnetwork = new gcp.compute.Subnetwork(\"vpc_subnetwork\", {\n project: network.project,\n name: \"my-subnetwork\",\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: network.id,\n privateIpGoogleAccess: true,\n});\nconst _default = new gcp.compute.GlobalAddress(\"default\", {\n project: network.project,\n name: \"global-psconnect-ip\",\n addressType: \"INTERNAL\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: network.id,\n address: \"100.100.100.106\",\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n project: network.project,\n name: \"globalrule\",\n target: \"all-apis\",\n network: network.id,\n ipAddress: _default.id,\n loadBalancingScheme: \"\",\n noAutomateDnsZone: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n project=\"my-project-name\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nvpc_subnetwork = gcp.compute.Subnetwork(\"vpc_subnetwork\",\n project=network.project,\n name=\"my-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=network.id,\n private_ip_google_access=True)\ndefault = gcp.compute.GlobalAddress(\"default\",\n project=network.project,\n name=\"global-psconnect-ip\",\n address_type=\"INTERNAL\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=network.id,\n address=\"100.100.100.106\")\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n project=network.project,\n name=\"globalrule\",\n target=\"all-apis\",\n network=network.id,\n ip_address=default.id,\n load_balancing_scheme=\"\",\n no_automate_dns_zone=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Project = \"my-project-name\",\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var vpcSubnetwork = new Gcp.Compute.Subnetwork(\"vpc_subnetwork\", new()\n {\n Project = network.Project,\n Name = \"my-subnetwork\",\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = network.Id,\n PrivateIpGoogleAccess = true,\n });\n\n var @default = new Gcp.Compute.GlobalAddress(\"default\", new()\n {\n Project = network.Project,\n Name = \"global-psconnect-ip\",\n AddressType = \"INTERNAL\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = network.Id,\n Address = \"100.100.100.106\",\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Project = network.Project,\n Name = \"globalrule\",\n Target = \"all-apis\",\n Network = network.Id,\n IpAddress = @default.Id,\n LoadBalancingScheme = \"\",\n NoAutomateDnsZone = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"vpc_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalAddress(ctx, \"default\", \u0026compute.GlobalAddressArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"global-psconnect-ip\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tAddress: pulumi.String(\"100.100.100.106\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"globalrule\"),\n\t\t\tTarget: pulumi.String(\"all-apis\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpAddress: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNoAutomateDnsZone: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .project(\"my-project-name\")\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var vpcSubnetwork = new Subnetwork(\"vpcSubnetwork\", SubnetworkArgs.builder()\n .project(network.project())\n .name(\"my-subnetwork\")\n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(network.id())\n .privateIpGoogleAccess(true)\n .build());\n\n var default_ = new GlobalAddress(\"default\", GlobalAddressArgs.builder()\n .project(network.project())\n .name(\"global-psconnect-ip\")\n .addressType(\"INTERNAL\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(network.id())\n .address(\"100.100.100.106\")\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .project(network.project())\n .name(\"globalrule\")\n .target(\"all-apis\")\n .network(network.id())\n .ipAddress(default_.id())\n .loadBalancingScheme(\"\")\n .noAutomateDnsZone(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n project: my-project-name\n name: my-network\n autoCreateSubnetworks: false\n vpcSubnetwork:\n type: gcp:compute:Subnetwork\n name: vpc_subnetwork\n properties:\n project: ${network.project}\n name: my-subnetwork\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${network.id}\n privateIpGoogleAccess: true\n default:\n type: gcp:compute:GlobalAddress\n properties:\n project: ${network.project}\n name: global-psconnect-ip\n addressType: INTERNAL\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${network.id}\n address: 100.100.100.106\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n project: ${network.project}\n name: globalrule\n target: all-apis\n network: ${network.id}\n ipAddress: ${default.id}\n loadBalancingScheme: \"\"\n noAutomateDnsZone: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGlobalForwardingRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/forwardingRules/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, GlobalForwardingRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/globalForwardingRule:GlobalForwardingRule default projects/{{project}}/global/forwardingRules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/globalForwardingRule:GlobalForwardingRule default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/globalForwardingRule:GlobalForwardingRule default {{name}}\n```\n\n", + "description": "Represents a GlobalForwardingRule resource. Global forwarding rules are\nused to forward traffic to the correct load balancer for HTTP load\nbalancing. Global forwarding rules can only be used for HTTP load\nbalancing.\n\nFor more information, see https://cloud.google.com/compute/docs/load-balancing/http/\n\n\n\n## Example Usage\n\n### Global Forwarding Rule Http\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"check-backend\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst _default = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"check-backend\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.id,\n port_range=\"80\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"check-backend\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var @default = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-backend\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"check-backend\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var default_ = new GlobalForwardingRule(\"default\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:GlobalForwardingRule\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: check-backend\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Global Forwarding Rule Internal\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst debianImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst instanceTemplate = new gcp.compute.InstanceTemplate(\"instance_template\", {\n name: \"template-backend\",\n machineType: \"e2-medium\",\n networkInterfaces: [{\n network: \"default\",\n }],\n disks: [{\n sourceImage: debianImage.then(debianImage =\u003e debianImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n});\nconst igm = new gcp.compute.InstanceGroupManager(\"igm\", {\n name: \"igm-internal\",\n versions: [{\n instanceTemplate: instanceTemplate.id,\n name: \"primary\",\n }],\n baseInstanceName: \"internal-glb\",\n zone: \"us-central1-f\",\n targetSize: 1,\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"check-backend\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n backends: [{\n group: igm.instanceGroup,\n balancingMode: \"RATE\",\n capacityScaler: 0.4,\n maxRatePerInstance: 50,\n }],\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst _default = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n ipAddress: \"0.0.0.0\",\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndebian_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\ninstance_template = gcp.compute.InstanceTemplate(\"instance_template\",\n name=\"template-backend\",\n machine_type=\"e2-medium\",\n network_interfaces=[{\n \"network\": \"default\",\n }],\n disks=[{\n \"source_image\": debian_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }])\nigm = gcp.compute.InstanceGroupManager(\"igm\",\n name=\"igm-internal\",\n versions=[{\n \"instance_template\": instance_template.id,\n \"name\": \"primary\",\n }],\n base_instance_name=\"internal-glb\",\n zone=\"us-central1-f\",\n target_size=1)\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"check-backend\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n backends=[{\n \"group\": igm.instance_group,\n \"balancing_mode\": \"RATE\",\n \"capacity_scaler\": 0.4,\n \"max_rate_per_instance\": 50,\n }],\n health_checks=default_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.id,\n port_range=\"80\",\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n ip_address=\"0.0.0.0\",\n metadata_filters=[{\n \"filter_match_criteria\": \"MATCH_ANY\",\n \"filter_labels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var debianImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var instanceTemplate = new Gcp.Compute.InstanceTemplate(\"instance_template\", new()\n {\n Name = \"template-backend\",\n MachineType = \"e2-medium\",\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = debianImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n });\n\n var igm = new Gcp.Compute.InstanceGroupManager(\"igm\", new()\n {\n Name = \"igm-internal\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n InstanceTemplate = instanceTemplate.Id,\n Name = \"primary\",\n },\n },\n BaseInstanceName = \"internal-glb\",\n Zone = \"us-central1-f\",\n TargetSize = 1,\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"check-backend\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = igm.InstanceGroup,\n BalancingMode = \"RATE\",\n CapacityScaler = 0.4,\n MaxRatePerInstance = 50,\n },\n },\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var @default = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n IpAddress = \"0.0.0.0\",\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.GlobalForwardingRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.GlobalForwardingRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdebianImage, err := compute.LookupImage(ctx, \u0026compute.LookupImageArgs{\n\t\t\tFamily: pulumi.StringRef(\"debian-11\"),\n\t\t\tProject: pulumi.StringRef(\"debian-cloud\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstanceTemplate, err := compute.NewInstanceTemplate(ctx, \"instance_template\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"template-backend\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(debianImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tigm, err := compute.NewInstanceGroupManager(ctx, \"igm\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tName: pulumi.String(\"igm-internal\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tInstanceTemplate: instanceTemplate.ID(),\n\t\t\t\t\tName: pulumi.String(\"primary\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"internal-glb\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tTargetSize: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"check-backend\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: igm.InstanceGroup,\n\t\t\t\t\tBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(0.4),\n\t\t\t\t\tMaxRatePerInstance: pulumi.Float64(50),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tIpAddress: pulumi.String(\"0.0.0.0\"),\n\t\t\tMetadataFilters: compute.GlobalForwardingRuleMetadataFilterArray{\n\t\t\t\t\u0026compute.GlobalForwardingRuleMetadataFilterArgs{\n\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\tFilterLabels: compute.GlobalForwardingRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\u0026compute.GlobalForwardingRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport com.pulumi.gcp.compute.inputs.GlobalForwardingRuleMetadataFilterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var debianImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var instanceTemplate = new InstanceTemplate(\"instanceTemplate\", InstanceTemplateArgs.builder()\n .name(\"template-backend\")\n .machineType(\"e2-medium\")\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(debianImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .build());\n\n var igm = new InstanceGroupManager(\"igm\", InstanceGroupManagerArgs.builder()\n .name(\"igm-internal\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .instanceTemplate(instanceTemplate.id())\n .name(\"primary\")\n .build())\n .baseInstanceName(\"internal-glb\")\n .zone(\"us-central1-f\")\n .targetSize(1)\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"check-backend\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .backends(BackendServiceBackendArgs.builder()\n .group(igm.instanceGroup())\n .balancingMode(\"RATE\")\n .capacityScaler(0.4)\n .maxRatePerInstance(50)\n .build())\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var default_ = new GlobalForwardingRule(\"default\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .ipAddress(\"0.0.0.0\")\n .metadataFilters(GlobalForwardingRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(GlobalForwardingRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:GlobalForwardingRule\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n ipAddress: 0.0.0.0\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n backends:\n - group: ${igm.instanceGroup}\n balancingMode: RATE\n capacityScaler: 0.4\n maxRatePerInstance: 50\n healthChecks: ${defaultHealthCheck.id}\n igm:\n type: gcp:compute:InstanceGroupManager\n properties:\n name: igm-internal\n versions:\n - instanceTemplate: ${instanceTemplate.id}\n name: primary\n baseInstanceName: internal-glb\n zone: us-central1-f\n targetSize: 1\n instanceTemplate:\n type: gcp:compute:InstanceTemplate\n name: instance_template\n properties:\n name: template-backend\n machineType: e2-medium\n networkInterfaces:\n - network: default\n disks:\n - sourceImage: ${debianImage.selfLink}\n autoDelete: true\n boot: true\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: check-backend\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\nvariables:\n debianImage:\n fn::invoke:\n function: gcp:compute:getImage\n arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Global Forwarding Rule External Managed\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst _default = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n networkTier: \"PREMIUM\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\")\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.id,\n port_range=\"80\",\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n network_tier=\"PREMIUM\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var @default = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n NetworkTier = \"PREMIUM\",\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\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var default_ = new GlobalForwardingRule(\"default\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .networkTier(\"PREMIUM\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:GlobalForwardingRule\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n loadBalancingScheme: EXTERNAL_MANAGED\n networkTier: PREMIUM\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Global Forwarding Rule Hybrid\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst config = new pulumi.Config();\nconst subnetworkCidr = config.get(\"subnetworkCidr\") || \"10.0.0.0/24\";\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst internal = new gcp.compute.Network(\"internal\", {\n name: \"my-internal-network\",\n autoCreateSubnetworks: false,\n});\nconst internalSubnetwork = new gcp.compute.Subnetwork(\"internal\", {\n name: \"my-subnetwork\",\n network: internal.id,\n ipCidrRange: subnetworkCidr,\n region: \"us-central1\",\n privateIpGoogleAccess: true,\n});\n// Zonal NEG with GCE_VM_IP_PORT\nconst defaultNetworkEndpointGroup = new gcp.compute.NetworkEndpointGroup(\"default\", {\n name: \"default-neg\",\n network: _default.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n networkEndpointType: \"GCE_VM_IP_PORT\",\n});\n// Zonal NEG with GCE_VM_IP\nconst internalNetworkEndpointGroup = new gcp.compute.NetworkEndpointGroup(\"internal\", {\n name: \"internal-neg\",\n network: internal.id,\n subnetwork: internalSubnetwork.id,\n zone: \"us-central1-a\",\n networkEndpointType: \"GCE_VM_IP\",\n});\n// Hybrid connectivity NEG\nconst hybrid = new gcp.compute.NetworkEndpointGroup(\"hybrid\", {\n name: \"hybrid-neg\",\n network: _default.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n networkEndpointType: \"NON_GCP_PRIVATE_IP_PORT\",\n});\nconst hybrid_endpoint = new gcp.compute.NetworkEndpoint(\"hybrid-endpoint\", {\n networkEndpointGroup: hybrid.name,\n port: hybrid.defaultPort,\n ipAddress: \"127.0.0.1\",\n});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n timeoutSec: 1,\n checkIntervalSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\n// Backend service for Zonal NEG\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-default\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n backends: [{\n group: defaultNetworkEndpointGroup.id,\n balancingMode: \"RATE\",\n maxRatePerEndpoint: 10,\n }],\n healthChecks: defaultHealthCheck.id,\n});\n// Backgend service for Hybrid NEG\nconst hybridBackendService = new gcp.compute.BackendService(\"hybrid\", {\n name: \"backend-hybrid\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n backends: [{\n group: hybrid.id,\n balancingMode: \"RATE\",\n maxRatePerEndpoint: 10,\n }],\n healthChecks: defaultHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map-target-proxy\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [\n {\n paths: [\"/*\"],\n service: defaultBackendService.id,\n },\n {\n paths: [\"/hybrid\"],\n service: hybridBackendService.id,\n },\n ],\n }],\n});\nconst defaultTargetHttpProxy = new gcp.compute.TargetHttpProxy(\"default\", {\n name: \"target-proxy\",\n description: \"a description\",\n urlMap: defaultURLMap.id,\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"global-rule\",\n target: defaultTargetHttpProxy.id,\n portRange: \"80\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nconfig = pulumi.Config()\nsubnetwork_cidr = config.get(\"subnetworkCidr\")\nif subnetwork_cidr is None:\n subnetwork_cidr = \"10.0.0.0/24\"\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\ninternal = gcp.compute.Network(\"internal\",\n name=\"my-internal-network\",\n auto_create_subnetworks=False)\ninternal_subnetwork = gcp.compute.Subnetwork(\"internal\",\n name=\"my-subnetwork\",\n network=internal.id,\n ip_cidr_range=subnetwork_cidr,\n region=\"us-central1\",\n private_ip_google_access=True)\n# Zonal NEG with GCE_VM_IP_PORT\ndefault_network_endpoint_group = gcp.compute.NetworkEndpointGroup(\"default\",\n name=\"default-neg\",\n network=default.id,\n default_port=90,\n zone=\"us-central1-a\",\n network_endpoint_type=\"GCE_VM_IP_PORT\")\n# Zonal NEG with GCE_VM_IP\ninternal_network_endpoint_group = gcp.compute.NetworkEndpointGroup(\"internal\",\n name=\"internal-neg\",\n network=internal.id,\n subnetwork=internal_subnetwork.id,\n zone=\"us-central1-a\",\n network_endpoint_type=\"GCE_VM_IP\")\n# Hybrid connectivity NEG\nhybrid = gcp.compute.NetworkEndpointGroup(\"hybrid\",\n name=\"hybrid-neg\",\n network=default.id,\n default_port=90,\n zone=\"us-central1-a\",\n network_endpoint_type=\"NON_GCP_PRIVATE_IP_PORT\")\nhybrid_endpoint = gcp.compute.NetworkEndpoint(\"hybrid-endpoint\",\n network_endpoint_group=hybrid.name,\n port=hybrid.default_port,\n ip_address=\"127.0.0.1\")\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n timeout_sec=1,\n check_interval_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\n# Backend service for Zonal NEG\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-default\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n backends=[{\n \"group\": default_network_endpoint_group.id,\n \"balancing_mode\": \"RATE\",\n \"max_rate_per_endpoint\": 10,\n }],\n health_checks=default_health_check.id)\n# Backgend service for Hybrid NEG\nhybrid_backend_service = gcp.compute.BackendService(\"hybrid\",\n name=\"backend-hybrid\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n backends=[{\n \"group\": hybrid.id,\n \"balancing_mode\": \"RATE\",\n \"max_rate_per_endpoint\": 10,\n }],\n health_checks=default_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map-target-proxy\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [\n {\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n },\n {\n \"paths\": [\"/hybrid\"],\n \"service\": hybrid_backend_service.id,\n },\n ],\n }])\ndefault_target_http_proxy = gcp.compute.TargetHttpProxy(\"default\",\n name=\"target-proxy\",\n description=\"a description\",\n url_map=default_url_map.id)\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"global-rule\",\n target=default_target_http_proxy.id,\n port_range=\"80\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var config = new Config();\n var subnetworkCidr = config.Get(\"subnetworkCidr\") ?? \"10.0.0.0/24\";\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var @internal = new Gcp.Compute.Network(\"internal\", new()\n {\n Name = \"my-internal-network\",\n AutoCreateSubnetworks = false,\n });\n\n var internalSubnetwork = new Gcp.Compute.Subnetwork(\"internal\", new()\n {\n Name = \"my-subnetwork\",\n Network = @internal.Id,\n IpCidrRange = subnetworkCidr,\n Region = \"us-central1\",\n PrivateIpGoogleAccess = true,\n });\n\n // Zonal NEG with GCE_VM_IP_PORT\n var defaultNetworkEndpointGroup = new Gcp.Compute.NetworkEndpointGroup(\"default\", new()\n {\n Name = \"default-neg\",\n Network = @default.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"GCE_VM_IP_PORT\",\n });\n\n // Zonal NEG with GCE_VM_IP\n var internalNetworkEndpointGroup = new Gcp.Compute.NetworkEndpointGroup(\"internal\", new()\n {\n Name = \"internal-neg\",\n Network = @internal.Id,\n Subnetwork = internalSubnetwork.Id,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"GCE_VM_IP\",\n });\n\n // Hybrid connectivity NEG\n var hybrid = new Gcp.Compute.NetworkEndpointGroup(\"hybrid\", new()\n {\n Name = \"hybrid-neg\",\n Network = @default.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"NON_GCP_PRIVATE_IP_PORT\",\n });\n\n var hybrid_endpoint = new Gcp.Compute.NetworkEndpoint(\"hybrid-endpoint\", new()\n {\n NetworkEndpointGroup = hybrid.Name,\n Port = hybrid.DefaultPort,\n IpAddress = \"127.0.0.1\",\n });\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n TimeoutSec = 1,\n CheckIntervalSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n // Backend service for Zonal NEG\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-default\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = defaultNetworkEndpointGroup.Id,\n BalancingMode = \"RATE\",\n MaxRatePerEndpoint = 10,\n },\n },\n HealthChecks = defaultHealthCheck.Id,\n });\n\n // Backgend service for Hybrid NEG\n var hybridBackendService = new Gcp.Compute.BackendService(\"hybrid\", new()\n {\n Name = \"backend-hybrid\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n Backends = new[]\n {\n new Gcp.Compute.Inputs.BackendServiceBackendArgs\n {\n Group = hybrid.Id,\n BalancingMode = \"RATE\",\n MaxRatePerEndpoint = 10,\n },\n },\n HealthChecks = defaultHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map-target-proxy\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/hybrid\",\n },\n Service = hybridBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpProxy = new Gcp.Compute.TargetHttpProxy(\"default\", new()\n {\n Name = \"target-proxy\",\n Description = \"a description\",\n UrlMap = defaultURLMap.Id,\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"global-rule\",\n Target = defaultTargetHttpProxy.Id,\n PortRange = \"80\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi/config\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcfg := config.New(ctx, \"\")\n\t\tsubnetworkCidr := \"10.0.0.0/24\"\n\t\tif param := cfg.Get(\"subnetworkCidr\"); param != \"\" {\n\t\t\tsubnetworkCidr = param\n\t\t}\n\t\t_default, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinternal, err := compute.NewNetwork(ctx, \"internal\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-internal-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinternalSubnetwork, err := compute.NewSubnetwork(ctx, \"internal\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tNetwork: internal.ID(),\n\t\t\tIpCidrRange: pulumi.String(subnetworkCidr),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Zonal NEG with GCE_VM_IP_PORT\n\t\tdefaultNetworkEndpointGroup, err := compute.NewNetworkEndpointGroup(ctx, \"default\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"default-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Zonal NEG with GCE_VM_IP\n\t\t_, err = compute.NewNetworkEndpointGroup(ctx, \"internal\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"internal-neg\"),\n\t\t\tNetwork: internal.ID(),\n\t\t\tSubnetwork: internalSubnetwork.ID(),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"GCE_VM_IP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Hybrid connectivity NEG\n\t\thybrid, err := compute.NewNetworkEndpointGroup(ctx, \"hybrid\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"hybrid-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"NON_GCP_PRIVATE_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpoint(ctx, \"hybrid-endpoint\", \u0026compute.NetworkEndpointArgs{\n\t\t\tNetworkEndpointGroup: hybrid.Name,\n\t\t\tPort: hybrid.DefaultPort,\n\t\t\tIpAddress: pulumi.String(\"127.0.0.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Backend service for Zonal NEG\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-default\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: defaultNetworkEndpointGroup.ID(),\n\t\t\t\t\tBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\tMaxRatePerEndpoint: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Backgend service for Hybrid NEG\n\t\thybridBackendService, err := compute.NewBackendService(ctx, \"hybrid\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-hybrid\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tBackends: compute.BackendServiceBackendArray{\n\t\t\t\t\u0026compute.BackendServiceBackendArgs{\n\t\t\t\t\tGroup: hybrid.ID(),\n\t\t\t\t\tBalancingMode: pulumi.String(\"RATE\"),\n\t\t\t\t\tMaxRatePerEndpoint: pulumi.Float64(10),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map-target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/hybrid\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: hybridBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTargetHttpProxy, err := compute.NewTargetHttpProxy(ctx, \"default\", \u0026compute.TargetHttpProxyArgs{\n\t\t\tName: pulumi.String(\"target-proxy\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"global-rule\"),\n\t\t\tTarget: defaultTargetHttpProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"80\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.NetworkEndpoint;\nimport com.pulumi.gcp.compute.NetworkEndpointArgs;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckTcpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.BackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpProxy;\nimport com.pulumi.gcp.compute.TargetHttpProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var config = ctx.config();\n final var subnetworkCidr = config.get(\"subnetworkCidr\").orElse(\"10.0.0.0/24\");\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var internal = new Network(\"internal\", NetworkArgs.builder()\n .name(\"my-internal-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var internalSubnetwork = new Subnetwork(\"internalSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork\")\n .network(internal.id())\n .ipCidrRange(subnetworkCidr)\n .region(\"us-central1\")\n .privateIpGoogleAccess(true)\n .build());\n\n // Zonal NEG with GCE_VM_IP_PORT\n var defaultNetworkEndpointGroup = new NetworkEndpointGroup(\"defaultNetworkEndpointGroup\", NetworkEndpointGroupArgs.builder()\n .name(\"default-neg\")\n .network(default_.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .networkEndpointType(\"GCE_VM_IP_PORT\")\n .build());\n\n // Zonal NEG with GCE_VM_IP\n var internalNetworkEndpointGroup = new NetworkEndpointGroup(\"internalNetworkEndpointGroup\", NetworkEndpointGroupArgs.builder()\n .name(\"internal-neg\")\n .network(internal.id())\n .subnetwork(internalSubnetwork.id())\n .zone(\"us-central1-a\")\n .networkEndpointType(\"GCE_VM_IP\")\n .build());\n\n // Hybrid connectivity NEG\n var hybrid = new NetworkEndpointGroup(\"hybrid\", NetworkEndpointGroupArgs.builder()\n .name(\"hybrid-neg\")\n .network(default_.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .networkEndpointType(\"NON_GCP_PRIVATE_IP_PORT\")\n .build());\n\n var hybrid_endpoint = new NetworkEndpoint(\"hybrid-endpoint\", NetworkEndpointArgs.builder()\n .networkEndpointGroup(hybrid.name())\n .port(hybrid.defaultPort())\n .ipAddress(\"127.0.0.1\")\n .build());\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .timeoutSec(1)\n .checkIntervalSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n // Backend service for Zonal NEG\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-default\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .backends(BackendServiceBackendArgs.builder()\n .group(defaultNetworkEndpointGroup.id())\n .balancingMode(\"RATE\")\n .maxRatePerEndpoint(10)\n .build())\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n // Backgend service for Hybrid NEG\n var hybridBackendService = new BackendService(\"hybridBackendService\", BackendServiceArgs.builder()\n .name(\"backend-hybrid\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .backends(BackendServiceBackendArgs.builder()\n .group(hybrid.id())\n .balancingMode(\"RATE\")\n .maxRatePerEndpoint(10)\n .build())\n .healthChecks(defaultHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map-target-proxy\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules( \n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build(),\n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/hybrid\")\n .service(hybridBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpProxy = new TargetHttpProxy(\"defaultTargetHttpProxy\", TargetHttpProxyArgs.builder()\n .name(\"target-proxy\")\n .description(\"a description\")\n .urlMap(defaultURLMap.id())\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .name(\"global-rule\")\n .target(defaultTargetHttpProxy.id())\n .portRange(\"80\")\n .build());\n\n }\n}\n```\n```yaml\nconfiguration:\n # Roughly mirrors https://cloud.google.com/load-balancing/docs/https/setting-up-ext-https-hybrid\n subnetworkCidr:\n type: string\n default: 10.0.0.0/24\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n internal:\n type: gcp:compute:Network\n properties:\n name: my-internal-network\n autoCreateSubnetworks: false\n internalSubnetwork:\n type: gcp:compute:Subnetwork\n name: internal\n properties:\n name: my-subnetwork\n network: ${internal.id}\n ipCidrRange: ${subnetworkCidr}\n region: us-central1\n privateIpGoogleAccess: true\n # Zonal NEG with GCE_VM_IP_PORT\n defaultNetworkEndpointGroup:\n type: gcp:compute:NetworkEndpointGroup\n name: default\n properties:\n name: default-neg\n network: ${default.id}\n defaultPort: '90'\n zone: us-central1-a\n networkEndpointType: GCE_VM_IP_PORT\n # Zonal NEG with GCE_VM_IP\n internalNetworkEndpointGroup:\n type: gcp:compute:NetworkEndpointGroup\n name: internal\n properties:\n name: internal-neg\n network: ${internal.id}\n subnetwork: ${internalSubnetwork.id}\n zone: us-central1-a\n networkEndpointType: GCE_VM_IP\n # Hybrid connectivity NEG\n hybrid:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: hybrid-neg\n network: ${default.id}\n defaultPort: '90'\n zone: us-central1-a\n networkEndpointType: NON_GCP_PRIVATE_IP_PORT\n hybrid-endpoint:\n type: gcp:compute:NetworkEndpoint\n properties:\n networkEndpointGroup: ${hybrid.name}\n port: ${hybrid.defaultPort}\n ipAddress: 127.0.0.1\n # Backend service for Zonal NEG\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-default\n portName: http\n protocol: HTTP\n timeoutSec: 10\n backends:\n - group: ${defaultNetworkEndpointGroup.id}\n balancingMode: RATE\n maxRatePerEndpoint: 10\n healthChecks: ${defaultHealthCheck.id}\n # Backgend service for Hybrid NEG\n hybridBackendService:\n type: gcp:compute:BackendService\n name: hybrid\n properties:\n name: backend-hybrid\n portName: http\n protocol: HTTP\n timeoutSec: 10\n backends:\n - group: ${hybrid.id}\n balancingMode: RATE\n maxRatePerEndpoint: 10\n healthChecks: ${defaultHealthCheck.id}\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: health-check\n timeoutSec: 1\n checkIntervalSec: 1\n tcpHealthCheck:\n port: '80'\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map-target-proxy\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n - paths:\n - /hybrid\n service: ${hybridBackendService.id}\n defaultTargetHttpProxy:\n type: gcp:compute:TargetHttpProxy\n name: default\n properties:\n name: target-proxy\n description: a description\n urlMap: ${defaultURLMap.id}\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n name: global-rule\n target: ${defaultTargetHttpProxy.id}\n portRange: '80'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Private Service Connect Google Apis\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n project: \"my-project-name\",\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst vpcSubnetwork = new gcp.compute.Subnetwork(\"vpc_subnetwork\", {\n project: network.project,\n name: \"my-subnetwork\",\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: network.id,\n privateIpGoogleAccess: true,\n});\nconst _default = new gcp.compute.GlobalAddress(\"default\", {\n project: network.project,\n name: \"global-psconnect-ip\",\n addressType: \"INTERNAL\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: network.id,\n address: \"100.100.100.106\",\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n project: network.project,\n name: \"globalrule\",\n target: \"all-apis\",\n network: network.id,\n ipAddress: _default.id,\n loadBalancingScheme: \"\",\n serviceDirectoryRegistrations: {\n namespace: \"sd-namespace\",\n serviceDirectoryRegion: \"europe-west3\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n project=\"my-project-name\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nvpc_subnetwork = gcp.compute.Subnetwork(\"vpc_subnetwork\",\n project=network.project,\n name=\"my-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=network.id,\n private_ip_google_access=True)\ndefault = gcp.compute.GlobalAddress(\"default\",\n project=network.project,\n name=\"global-psconnect-ip\",\n address_type=\"INTERNAL\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=network.id,\n address=\"100.100.100.106\")\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n project=network.project,\n name=\"globalrule\",\n target=\"all-apis\",\n network=network.id,\n ip_address=default.id,\n load_balancing_scheme=\"\",\n service_directory_registrations={\n \"namespace\": \"sd-namespace\",\n \"service_directory_region\": \"europe-west3\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Project = \"my-project-name\",\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var vpcSubnetwork = new Gcp.Compute.Subnetwork(\"vpc_subnetwork\", new()\n {\n Project = network.Project,\n Name = \"my-subnetwork\",\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = network.Id,\n PrivateIpGoogleAccess = true,\n });\n\n var @default = new Gcp.Compute.GlobalAddress(\"default\", new()\n {\n Project = network.Project,\n Name = \"global-psconnect-ip\",\n AddressType = \"INTERNAL\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = network.Id,\n Address = \"100.100.100.106\",\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Project = network.Project,\n Name = \"globalrule\",\n Target = \"all-apis\",\n Network = network.Id,\n IpAddress = @default.Id,\n LoadBalancingScheme = \"\",\n ServiceDirectoryRegistrations = new Gcp.Compute.Inputs.GlobalForwardingRuleServiceDirectoryRegistrationsArgs\n {\n Namespace = \"sd-namespace\",\n ServiceDirectoryRegion = \"europe-west3\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"vpc_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewGlobalAddress(ctx, \"default\", \u0026compute.GlobalAddressArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"global-psconnect-ip\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tAddress: pulumi.String(\"100.100.100.106\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"globalrule\"),\n\t\t\tTarget: pulumi.String(\"all-apis\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpAddress: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tServiceDirectoryRegistrations: \u0026compute.GlobalForwardingRuleServiceDirectoryRegistrationsArgs{\n\t\t\t\tNamespace: pulumi.String(\"sd-namespace\"),\n\t\t\t\tServiceDirectoryRegion: pulumi.String(\"europe-west3\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport com.pulumi.gcp.compute.inputs.GlobalForwardingRuleServiceDirectoryRegistrationsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .project(\"my-project-name\")\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var vpcSubnetwork = new Subnetwork(\"vpcSubnetwork\", SubnetworkArgs.builder()\n .project(network.project())\n .name(\"my-subnetwork\")\n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(network.id())\n .privateIpGoogleAccess(true)\n .build());\n\n var default_ = new GlobalAddress(\"default\", GlobalAddressArgs.builder()\n .project(network.project())\n .name(\"global-psconnect-ip\")\n .addressType(\"INTERNAL\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(network.id())\n .address(\"100.100.100.106\")\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .project(network.project())\n .name(\"globalrule\")\n .target(\"all-apis\")\n .network(network.id())\n .ipAddress(default_.id())\n .loadBalancingScheme(\"\")\n .serviceDirectoryRegistrations(GlobalForwardingRuleServiceDirectoryRegistrationsArgs.builder()\n .namespace(\"sd-namespace\")\n .serviceDirectoryRegion(\"europe-west3\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n project: my-project-name\n name: my-network\n autoCreateSubnetworks: false\n vpcSubnetwork:\n type: gcp:compute:Subnetwork\n name: vpc_subnetwork\n properties:\n project: ${network.project}\n name: my-subnetwork\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${network.id}\n privateIpGoogleAccess: true\n default:\n type: gcp:compute:GlobalAddress\n properties:\n project: ${network.project}\n name: global-psconnect-ip\n addressType: INTERNAL\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${network.id}\n address: 100.100.100.106\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n project: ${network.project}\n name: globalrule\n target: all-apis\n network: ${network.id}\n ipAddress: ${default.id}\n loadBalancingScheme: \"\"\n serviceDirectoryRegistrations:\n namespace: sd-namespace\n serviceDirectoryRegion: europe-west3\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Private Service Connect Google Apis No Automate Dns\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n project: \"my-project-name\",\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst vpcSubnetwork = new gcp.compute.Subnetwork(\"vpc_subnetwork\", {\n project: network.project,\n name: \"my-subnetwork\",\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: network.id,\n privateIpGoogleAccess: true,\n});\nconst _default = new gcp.compute.GlobalAddress(\"default\", {\n project: network.project,\n name: \"global-psconnect-ip\",\n addressType: \"INTERNAL\",\n purpose: \"PRIVATE_SERVICE_CONNECT\",\n network: network.id,\n address: \"100.100.100.106\",\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n project: network.project,\n name: \"globalrule\",\n target: \"all-apis\",\n network: network.id,\n ipAddress: _default.id,\n loadBalancingScheme: \"\",\n noAutomateDnsZone: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n project=\"my-project-name\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nvpc_subnetwork = gcp.compute.Subnetwork(\"vpc_subnetwork\",\n project=network.project,\n name=\"my-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=network.id,\n private_ip_google_access=True)\ndefault = gcp.compute.GlobalAddress(\"default\",\n project=network.project,\n name=\"global-psconnect-ip\",\n address_type=\"INTERNAL\",\n purpose=\"PRIVATE_SERVICE_CONNECT\",\n network=network.id,\n address=\"100.100.100.106\")\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n project=network.project,\n name=\"globalrule\",\n target=\"all-apis\",\n network=network.id,\n ip_address=default.id,\n load_balancing_scheme=\"\",\n no_automate_dns_zone=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Project = \"my-project-name\",\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var vpcSubnetwork = new Gcp.Compute.Subnetwork(\"vpc_subnetwork\", new()\n {\n Project = network.Project,\n Name = \"my-subnetwork\",\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = network.Id,\n PrivateIpGoogleAccess = true,\n });\n\n var @default = new Gcp.Compute.GlobalAddress(\"default\", new()\n {\n Project = network.Project,\n Name = \"global-psconnect-ip\",\n AddressType = \"INTERNAL\",\n Purpose = \"PRIVATE_SERVICE_CONNECT\",\n Network = network.Id,\n Address = \"100.100.100.106\",\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Project = network.Project,\n Name = \"globalrule\",\n Target = \"all-apis\",\n Network = network.Id,\n IpAddress = @default.Id,\n LoadBalancingScheme = \"\",\n NoAutomateDnsZone = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"vpc_subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"my-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewGlobalAddress(ctx, \"default\", \u0026compute.GlobalAddressArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"global-psconnect-ip\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tAddress: pulumi.String(\"100.100.100.106\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tProject: network.Project,\n\t\t\tName: pulumi.String(\"globalrule\"),\n\t\t\tTarget: pulumi.String(\"all-apis\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpAddress: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNoAutomateDnsZone: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .project(\"my-project-name\")\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var vpcSubnetwork = new Subnetwork(\"vpcSubnetwork\", SubnetworkArgs.builder()\n .project(network.project())\n .name(\"my-subnetwork\")\n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(network.id())\n .privateIpGoogleAccess(true)\n .build());\n\n var default_ = new GlobalAddress(\"default\", GlobalAddressArgs.builder()\n .project(network.project())\n .name(\"global-psconnect-ip\")\n .addressType(\"INTERNAL\")\n .purpose(\"PRIVATE_SERVICE_CONNECT\")\n .network(network.id())\n .address(\"100.100.100.106\")\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .project(network.project())\n .name(\"globalrule\")\n .target(\"all-apis\")\n .network(network.id())\n .ipAddress(default_.id())\n .loadBalancingScheme(\"\")\n .noAutomateDnsZone(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n project: my-project-name\n name: my-network\n autoCreateSubnetworks: false\n vpcSubnetwork:\n type: gcp:compute:Subnetwork\n name: vpc_subnetwork\n properties:\n project: ${network.project}\n name: my-subnetwork\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${network.id}\n privateIpGoogleAccess: true\n default:\n type: gcp:compute:GlobalAddress\n properties:\n project: ${network.project}\n name: global-psconnect-ip\n addressType: INTERNAL\n purpose: PRIVATE_SERVICE_CONNECT\n network: ${network.id}\n address: 100.100.100.106\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n project: ${network.project}\n name: globalrule\n target: all-apis\n network: ${network.id}\n ipAddress: ${default.id}\n loadBalancingScheme: \"\"\n noAutomateDnsZone: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGlobalForwardingRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/forwardingRules/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, GlobalForwardingRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/globalForwardingRule:GlobalForwardingRule default projects/{{project}}/global/forwardingRules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/globalForwardingRule:GlobalForwardingRule default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/globalForwardingRule:GlobalForwardingRule default {{name}}\n```\n\n", "properties": { "allowPscGlobalAccess": { "type": "boolean", @@ -173103,7 +173103,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\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", + "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_default, 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_default, 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", @@ -175592,7 +175592,7 @@ } }, "gcp:compute/instanceGroupMembership:InstanceGroupMembership": { - "description": "Represents the Instance membership to the Instance Group.\n\n\u003e **NOTE** You can use this resource instead of the `instances` field in the\n`gcp.compute.InstanceGroup`, however it's not recommended to use it alongside this field.\nIt might cause inconsistencies, as they can end up competing over control.\n\n\u003e **NOTE** This resource has been added to avoid a situation, where after\nInstance is recreated, it's removed from Instance Group and it's needed to\nperform `apply` twice. To avoid situations like this, please use this resource\nwith the lifecycle `replace_triggered_by` method, with the passed Instance's ID.\n\n\nTo get more information about InstanceGroupMembership, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups)\n* How-to Guides\n * [Add instances](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/addInstances)\n * [List instances](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/listInstances)\n * [Remove instances](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/removeInstances)\n\n## Example Usage\n\n### Instance Group Membership\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_network = new gcp.compute.Network(\"default-network\", {name: \"network\"});\nconst default_instance = new gcp.compute.Instance(\"default-instance\", {\n name: \"instance\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n network: default_network.name,\n }],\n});\nconst default_instance_group = new gcp.compute.InstanceGroup(\"default-instance-group\", {name: \"instance-group\"});\nconst default_ig_membership = new gcp.compute.InstanceGroupMembership(\"default-ig-membership\", {\n instance: default_instance.selfLink,\n instanceGroup: default_instance_group.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default-network\", name=\"network\")\ndefault_instance = gcp.compute.Instance(\"default-instance\",\n name=\"instance\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network\": default_network.name,\n }])\ndefault_instance_group = gcp.compute.InstanceGroup(\"default-instance-group\", name=\"instance-group\")\ndefault_ig_membership = gcp.compute.InstanceGroupMembership(\"default-ig-membership\",\n instance=default_instance.self_link,\n instance_group=default_instance_group.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var default_network = new Gcp.Compute.Network(\"default-network\", new()\n {\n Name = \"network\",\n });\n\n var default_instance = new Gcp.Compute.Instance(\"default-instance\", new()\n {\n Name = \"instance\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = default_network.Name,\n },\n },\n });\n\n var default_instance_group = new Gcp.Compute.InstanceGroup(\"default-instance-group\", new()\n {\n Name = \"instance-group\",\n });\n\n var default_ig_membership = new Gcp.Compute.InstanceGroupMembership(\"default-ig-membership\", new()\n {\n Instance = default_instance.SelfLink,\n InstanceGroup = default_instance_group.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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-network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default-instance\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: default_network.Name,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroup(ctx, \"default-instance-group\", \u0026compute.InstanceGroupArgs{\n\t\t\tName: pulumi.String(\"instance-group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroupMembership(ctx, \"default-ig-membership\", \u0026compute.InstanceGroupMembershipArgs{\n\t\t\tInstance: default_instance.SelfLink,\n\t\t\tInstanceGroup: default_instance_group.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.InstanceGroup;\nimport com.pulumi.gcp.compute.InstanceGroupArgs;\nimport com.pulumi.gcp.compute.InstanceGroupMembership;\nimport com.pulumi.gcp.compute.InstanceGroupMembershipArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_network = new Network(\"default-network\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var default_instance = new Instance(\"default-instance\", InstanceArgs.builder()\n .name(\"instance\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(default_network.name())\n .build())\n .build());\n\n var default_instance_group = new InstanceGroup(\"default-instance-group\", InstanceGroupArgs.builder()\n .name(\"instance-group\")\n .build());\n\n var default_ig_membership = new InstanceGroupMembership(\"default-ig-membership\", InstanceGroupMembershipArgs.builder()\n .instance(default_instance.selfLink())\n .instanceGroup(default_instance_group.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-network:\n type: gcp:compute:Network\n properties:\n name: network\n default-instance:\n type: gcp:compute:Instance\n properties:\n name: instance\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: ${[\"default-network\"].name}\n default-instance-group:\n type: gcp:compute:InstanceGroup\n properties:\n name: instance-group\n default-ig-membership:\n type: gcp:compute:InstanceGroupMembership\n properties:\n instance: ${[\"default-instance\"].selfLink}\n instanceGroup: ${[\"default-instance-group\"].name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstanceGroupMembership can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroups/{{instance_group}}/{{instance}}`\n\n* `{{project}}/{{zone}}/{{instance_group}}/{{instance}}`\n\n* `{{zone}}/{{instance_group}}/{{instance}}`\n\n* `{{instance_group}}/{{instance}}`\n\nWhen using the `pulumi import` command, InstanceGroupMembership can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default projects/{{project}}/zones/{{zone}}/instanceGroups/{{instance_group}}/{{instance}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default {{project}}/{{zone}}/{{instance_group}}/{{instance}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default {{zone}}/{{instance_group}}/{{instance}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default {{instance_group}}/{{instance}}\n```\n\n", + "description": "Represents the Instance membership to the Instance Group.\n\n\u003e **NOTE** You can use this resource instead of the `instances` field in the\n`gcp.compute.InstanceGroup`, however it's not recommended to use it alongside this field.\nIt might cause inconsistencies, as they can end up competing over control.\n\n\u003e **NOTE** This resource has been added to avoid a situation, where after\nInstance is recreated, it's removed from Instance Group and it's needed to\nperform `apply` twice. To avoid situations like this, please use this resource\nwith the lifecycle `replace_triggered_by` method, with the passed Instance's ID.\n\n\nTo get more information about InstanceGroupMembership, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups)\n* How-to Guides\n * [Add instances](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/addInstances)\n * [List instances](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/listInstances)\n * [Remove instances](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroups/removeInstances)\n\n## Example Usage\n\n### Instance Group Membership\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default_network = new gcp.compute.Network(\"default-network\", {name: \"network\"});\nconst default_instance = new gcp.compute.Instance(\"default-instance\", {\n name: \"instance\",\n machineType: \"e2-medium\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n network: default_network.name,\n }],\n});\nconst default_instance_group = new gcp.compute.InstanceGroup(\"default-instance-group\", {name: \"instance-group\"});\nconst default_ig_membership = new gcp.compute.InstanceGroupMembership(\"default-ig-membership\", {\n instance: default_instance.selfLink,\n instanceGroup: default_instance_group.name,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default-network\", name=\"network\")\ndefault_instance = gcp.compute.Instance(\"default-instance\",\n name=\"instance\",\n machine_type=\"e2-medium\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network\": default_network.name,\n }])\ndefault_instance_group = gcp.compute.InstanceGroup(\"default-instance-group\", name=\"instance-group\")\ndefault_ig_membership = gcp.compute.InstanceGroupMembership(\"default-ig-membership\",\n instance=default_instance.self_link,\n instance_group=default_instance_group.name)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var default_network = new Gcp.Compute.Network(\"default-network\", new()\n {\n Name = \"network\",\n });\n\n var default_instance = new Gcp.Compute.Instance(\"default-instance\", new()\n {\n Name = \"instance\",\n MachineType = \"e2-medium\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = default_network.Name,\n },\n },\n });\n\n var default_instance_group = new Gcp.Compute.InstanceGroup(\"default-instance-group\", new()\n {\n Name = \"instance-group\",\n });\n\n var default_ig_membership = new Gcp.Compute.InstanceGroupMembership(\"default-ig-membership\", new()\n {\n Instance = default_instance.SelfLink,\n InstanceGroup = default_instance_group.Name,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdefault_network, err := compute.NewNetwork(ctx, \"default-network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefault_instance, err := compute.NewInstance(ctx, \"default-instance\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"instance\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: default_network.Name,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefault_instance_group, err := compute.NewInstanceGroup(ctx, \"default-instance-group\", \u0026compute.InstanceGroupArgs{\n\t\t\tName: pulumi.String(\"instance-group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroupMembership(ctx, \"default-ig-membership\", \u0026compute.InstanceGroupMembershipArgs{\n\t\t\tInstance: default_instance.SelfLink,\n\t\t\tInstanceGroup: default_instance_group.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.InstanceGroup;\nimport com.pulumi.gcp.compute.InstanceGroupArgs;\nimport com.pulumi.gcp.compute.InstanceGroupMembership;\nimport com.pulumi.gcp.compute.InstanceGroupMembershipArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_network = new Network(\"default-network\", NetworkArgs.builder()\n .name(\"network\")\n .build());\n\n var default_instance = new Instance(\"default-instance\", InstanceArgs.builder()\n .name(\"instance\")\n .machineType(\"e2-medium\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .network(default_network.name())\n .build())\n .build());\n\n var default_instance_group = new InstanceGroup(\"default-instance-group\", InstanceGroupArgs.builder()\n .name(\"instance-group\")\n .build());\n\n var default_ig_membership = new InstanceGroupMembership(\"default-ig-membership\", InstanceGroupMembershipArgs.builder()\n .instance(default_instance.selfLink())\n .instanceGroup(default_instance_group.name())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default-network:\n type: gcp:compute:Network\n properties:\n name: network\n default-instance:\n type: gcp:compute:Instance\n properties:\n name: instance\n machineType: e2-medium\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: ${[\"default-network\"].name}\n default-instance-group:\n type: gcp:compute:InstanceGroup\n properties:\n name: instance-group\n default-ig-membership:\n type: gcp:compute:InstanceGroupMembership\n properties:\n instance: ${[\"default-instance\"].selfLink}\n instanceGroup: ${[\"default-instance-group\"].name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstanceGroupMembership can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroups/{{instance_group}}/{{instance}}`\n\n* `{{project}}/{{zone}}/{{instance_group}}/{{instance}}`\n\n* `{{zone}}/{{instance_group}}/{{instance}}`\n\n* `{{instance_group}}/{{instance}}`\n\nWhen using the `pulumi import` command, InstanceGroupMembership can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default projects/{{project}}/zones/{{zone}}/instanceGroups/{{instance_group}}/{{instance}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default {{project}}/{{zone}}/{{instance_group}}/{{instance}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default {{zone}}/{{instance_group}}/{{instance}}\n```\n\n```sh\n$ pulumi import gcp:compute/instanceGroupMembership:InstanceGroupMembership default {{instance_group}}/{{instance}}\n```\n\n", "properties": { "instance": { "type": "string", @@ -176160,7 +176160,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, \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", + "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_default, 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_default, 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", @@ -178284,7 +178284,7 @@ } }, "gcp:compute/managedSslCertificate:ManagedSslCertificate": { - "description": "An SslCertificate resource, used for HTTPS load balancing. This resource\nrepresents a certificate for which the certificate secrets are created and\nmanaged by Google.\n\nFor a resource where you provide the key, see the\nSSL Certificate resource.\n\n\nTo get more information about ManagedSslCertificate, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/sslCertificates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/ssl-certificates)\n\n\u003e **Warning:** This resource should be used with extreme caution! Provisioning an SSL\ncertificate is complex. Ensure that you understand the lifecycle of a\ncertificate before attempting complex tasks like cert rotation automatically.\nThis resource will \"return\" as soon as the certificate object is created,\nbut post-creation the certificate object will go through a \"provisioning\"\nprocess. The provisioning process can complete only when the domain name\nfor which the certificate is created points to a target pool which, itself,\npoints at the certificate. Depending on your DNS provider, this may take\nsome time, and migrating from self-managed certificates to Google-managed\ncertificates may entail some downtime while the certificate provisions.\n\nIn conclusion: Be extremely cautious.\n\n## Example Usage\n\n### Managed Ssl Certificate Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.ManagedSslCertificate(\"default\", {\n name: \"test-cert\",\n managed: {\n domains: [\"sslcert.tf-test.club.\"],\n },\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpsProxy = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [_default.id],\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"forwarding-rule\",\n target: defaultTargetHttpsProxy.id,\n portRange: \"443\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.ManagedSslCertificate(\"default\",\n name=\"test-cert\",\n managed={\n \"domains\": [\"sslcert.tf-test.club.\"],\n })\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_https_proxy = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default.id])\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"forwarding-rule\",\n target=default_target_https_proxy.id,\n port_range=\"443\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.ManagedSslCertificate(\"default\", new()\n {\n Name = \"test-cert\",\n Managed = new Gcp.Compute.Inputs.ManagedSslCertificateManagedArgs\n {\n Domains = new[]\n {\n \"sslcert.tf-test.club.\",\n },\n },\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpsProxy = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n @default.Id,\n },\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"forwarding-rule\",\n Target = defaultTargetHttpsProxy.Id,\n PortRange = \"443\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewManagedSslCertificate(ctx, \"default\", \u0026compute.ManagedSslCertificateArgs{\n\t\t\tName: pulumi.String(\"test-cert\"),\n\t\t\tManaged: \u0026compute.ManagedSslCertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club.\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTargetHttpsProxy, err := compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"forwarding-rule\"),\n\t\t\tTarget: defaultTargetHttpsProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"443\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ManagedSslCertificate;\nimport com.pulumi.gcp.compute.ManagedSslCertificateArgs;\nimport com.pulumi.gcp.compute.inputs.ManagedSslCertificateManagedArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ManagedSslCertificate(\"default\", ManagedSslCertificateArgs.builder()\n .name(\"test-cert\")\n .managed(ManagedSslCertificateManagedArgs.builder()\n .domains(\"sslcert.tf-test.club.\")\n .build())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpsProxy = new TargetHttpsProxy(\"defaultTargetHttpsProxy\", TargetHttpsProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(default_.id())\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .name(\"forwarding-rule\")\n .target(defaultTargetHttpsProxy.id())\n .portRange(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:ManagedSslCertificate\n properties:\n name: test-cert\n managed:\n domains:\n - sslcert.tf-test.club.\n defaultTargetHttpsProxy:\n type: gcp:compute:TargetHttpsProxy\n name: default\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${default.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - sslcert.tf-test.club\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n name: forwarding-rule\n target: ${defaultTargetHttpsProxy.id}\n portRange: 443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nManagedSslCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/sslCertificates/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedSslCertificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/managedSslCertificate:ManagedSslCertificate default projects/{{project}}/global/sslCertificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/managedSslCertificate:ManagedSslCertificate default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/managedSslCertificate:ManagedSslCertificate default {{name}}\n```\n\n", + "description": "An SslCertificate resource, used for HTTPS load balancing. This resource\nrepresents a certificate for which the certificate secrets are created and\nmanaged by Google.\n\nFor a resource where you provide the key, see the\nSSL Certificate resource.\n\n\nTo get more information about ManagedSslCertificate, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/sslCertificates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/ssl-certificates)\n\n\u003e **Warning:** This resource should be used with extreme caution! Provisioning an SSL\ncertificate is complex. Ensure that you understand the lifecycle of a\ncertificate before attempting complex tasks like cert rotation automatically.\nThis resource will \"return\" as soon as the certificate object is created,\nbut post-creation the certificate object will go through a \"provisioning\"\nprocess. The provisioning process can complete only when the domain name\nfor which the certificate is created points to a target pool which, itself,\npoints at the certificate. Depending on your DNS provider, this may take\nsome time, and migrating from self-managed certificates to Google-managed\ncertificates may entail some downtime while the certificate provisions.\n\nIn conclusion: Be extremely cautious.\n\n## Example Usage\n\n### Managed Ssl Certificate Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.ManagedSslCertificate(\"default\", {\n name: \"test-cert\",\n managed: {\n domains: [\"sslcert.tf-test.club.\"],\n },\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpsProxy = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [_default.id],\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"forwarding-rule\",\n target: defaultTargetHttpsProxy.id,\n portRange: \"443\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.ManagedSslCertificate(\"default\",\n name=\"test-cert\",\n managed={\n \"domains\": [\"sslcert.tf-test.club.\"],\n })\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_https_proxy = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default.id])\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"forwarding-rule\",\n target=default_target_https_proxy.id,\n port_range=\"443\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.ManagedSslCertificate(\"default\", new()\n {\n Name = \"test-cert\",\n Managed = new Gcp.Compute.Inputs.ManagedSslCertificateManagedArgs\n {\n Domains = new[]\n {\n \"sslcert.tf-test.club.\",\n },\n },\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpsProxy = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n @default.Id,\n },\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"forwarding-rule\",\n Target = defaultTargetHttpsProxy.Id,\n PortRange = \"443\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewManagedSslCertificate(ctx, \"default\", \u0026compute.ManagedSslCertificateArgs{\n\t\t\tName: pulumi.String(\"test-cert\"),\n\t\t\tManaged: \u0026compute.ManagedSslCertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club.\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTargetHttpsProxy, err := compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"forwarding-rule\"),\n\t\t\tTarget: defaultTargetHttpsProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"443\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ManagedSslCertificate;\nimport com.pulumi.gcp.compute.ManagedSslCertificateArgs;\nimport com.pulumi.gcp.compute.inputs.ManagedSslCertificateManagedArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ManagedSslCertificate(\"default\", ManagedSslCertificateArgs.builder()\n .name(\"test-cert\")\n .managed(ManagedSslCertificateManagedArgs.builder()\n .domains(\"sslcert.tf-test.club.\")\n .build())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpsProxy = new TargetHttpsProxy(\"defaultTargetHttpsProxy\", TargetHttpsProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(default_.id())\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .name(\"forwarding-rule\")\n .target(defaultTargetHttpsProxy.id())\n .portRange(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:ManagedSslCertificate\n properties:\n name: test-cert\n managed:\n domains:\n - sslcert.tf-test.club.\n defaultTargetHttpsProxy:\n type: gcp:compute:TargetHttpsProxy\n name: default\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${default.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - sslcert.tf-test.club\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n name: forwarding-rule\n target: ${defaultTargetHttpsProxy.id}\n portRange: 443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nManagedSslCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/sslCertificates/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedSslCertificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/managedSslCertificate:ManagedSslCertificate default projects/{{project}}/global/sslCertificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/managedSslCertificate:ManagedSslCertificate default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/managedSslCertificate:ManagedSslCertificate default {{name}}\n```\n\n", "properties": { "certificateId": { "type": "integer", @@ -178427,7 +178427,7 @@ ] }, "gcp:compute/mangedSslCertificate:MangedSslCertificate": { - "description": "An SslCertificate resource, used for HTTPS load balancing. This resource\nrepresents a certificate for which the certificate secrets are created and\nmanaged by Google.\n\nFor a resource where you provide the key, see the\nSSL Certificate resource.\n\n\nTo get more information about ManagedSslCertificate, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/sslCertificates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/ssl-certificates)\n\n\u003e **Warning:** This resource should be used with extreme caution! Provisioning an SSL\ncertificate is complex. Ensure that you understand the lifecycle of a\ncertificate before attempting complex tasks like cert rotation automatically.\nThis resource will \"return\" as soon as the certificate object is created,\nbut post-creation the certificate object will go through a \"provisioning\"\nprocess. The provisioning process can complete only when the domain name\nfor which the certificate is created points to a target pool which, itself,\npoints at the certificate. Depending on your DNS provider, this may take\nsome time, and migrating from self-managed certificates to Google-managed\ncertificates may entail some downtime while the certificate provisions.\n\nIn conclusion: Be extremely cautious.\n\n## Example Usage\n\n### Managed Ssl Certificate Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.ManagedSslCertificate(\"default\", {\n name: \"test-cert\",\n managed: {\n domains: [\"sslcert.tf-test.club.\"],\n },\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpsProxy = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [_default.id],\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"forwarding-rule\",\n target: defaultTargetHttpsProxy.id,\n portRange: \"443\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.ManagedSslCertificate(\"default\",\n name=\"test-cert\",\n managed={\n \"domains\": [\"sslcert.tf-test.club.\"],\n })\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_https_proxy = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default.id])\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"forwarding-rule\",\n target=default_target_https_proxy.id,\n port_range=\"443\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.ManagedSslCertificate(\"default\", new()\n {\n Name = \"test-cert\",\n Managed = new Gcp.Compute.Inputs.ManagedSslCertificateManagedArgs\n {\n Domains = new[]\n {\n \"sslcert.tf-test.club.\",\n },\n },\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpsProxy = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n @default.Id,\n },\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"forwarding-rule\",\n Target = defaultTargetHttpsProxy.Id,\n PortRange = \"443\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewManagedSslCertificate(ctx, \"default\", \u0026compute.ManagedSslCertificateArgs{\n\t\t\tName: pulumi.String(\"test-cert\"),\n\t\t\tManaged: \u0026compute.ManagedSslCertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club.\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTargetHttpsProxy, err := compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"forwarding-rule\"),\n\t\t\tTarget: defaultTargetHttpsProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"443\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ManagedSslCertificate;\nimport com.pulumi.gcp.compute.ManagedSslCertificateArgs;\nimport com.pulumi.gcp.compute.inputs.ManagedSslCertificateManagedArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ManagedSslCertificate(\"default\", ManagedSslCertificateArgs.builder()\n .name(\"test-cert\")\n .managed(ManagedSslCertificateManagedArgs.builder()\n .domains(\"sslcert.tf-test.club.\")\n .build())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpsProxy = new TargetHttpsProxy(\"defaultTargetHttpsProxy\", TargetHttpsProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(default_.id())\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .name(\"forwarding-rule\")\n .target(defaultTargetHttpsProxy.id())\n .portRange(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:ManagedSslCertificate\n properties:\n name: test-cert\n managed:\n domains:\n - sslcert.tf-test.club.\n defaultTargetHttpsProxy:\n type: gcp:compute:TargetHttpsProxy\n name: default\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${default.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - sslcert.tf-test.club\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n name: forwarding-rule\n target: ${defaultTargetHttpsProxy.id}\n portRange: 443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nManagedSslCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/sslCertificates/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedSslCertificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/mangedSslCertificate:MangedSslCertificate default projects/{{project}}/global/sslCertificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/mangedSslCertificate:MangedSslCertificate default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/mangedSslCertificate:MangedSslCertificate default {{name}}\n```\n\n", + "description": "An SslCertificate resource, used for HTTPS load balancing. This resource\nrepresents a certificate for which the certificate secrets are created and\nmanaged by Google.\n\nFor a resource where you provide the key, see the\nSSL Certificate resource.\n\n\nTo get more information about ManagedSslCertificate, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/sslCertificates)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/ssl-certificates)\n\n\u003e **Warning:** This resource should be used with extreme caution! Provisioning an SSL\ncertificate is complex. Ensure that you understand the lifecycle of a\ncertificate before attempting complex tasks like cert rotation automatically.\nThis resource will \"return\" as soon as the certificate object is created,\nbut post-creation the certificate object will go through a \"provisioning\"\nprocess. The provisioning process can complete only when the domain name\nfor which the certificate is created points to a target pool which, itself,\npoints at the certificate. Depending on your DNS provider, this may take\nsome time, and migrating from self-managed certificates to Google-managed\ncertificates may entail some downtime while the certificate provisions.\n\nIn conclusion: Be extremely cautious.\n\n## Example Usage\n\n### Managed Ssl Certificate Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.ManagedSslCertificate(\"default\", {\n name: \"test-cert\",\n managed: {\n domains: [\"sslcert.tf-test.club.\"],\n },\n});\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"http-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"backend-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultURLMap = new gcp.compute.URLMap(\"default\", {\n name: \"url-map\",\n description: \"a description\",\n defaultService: defaultBackendService.id,\n hostRules: [{\n hosts: [\"sslcert.tf-test.club\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: defaultBackendService.id,\n pathRules: [{\n paths: [\"/*\"],\n service: defaultBackendService.id,\n }],\n }],\n});\nconst defaultTargetHttpsProxy = new gcp.compute.TargetHttpsProxy(\"default\", {\n name: \"test-proxy\",\n urlMap: defaultURLMap.id,\n sslCertificates: [_default.id],\n});\nconst defaultGlobalForwardingRule = new gcp.compute.GlobalForwardingRule(\"default\", {\n name: \"forwarding-rule\",\n target: defaultTargetHttpsProxy.id,\n portRange: \"443\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.ManagedSslCertificate(\"default\",\n name=\"test-cert\",\n managed={\n \"domains\": [\"sslcert.tf-test.club.\"],\n })\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"http-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"backend-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\ndefault_url_map = gcp.compute.URLMap(\"default\",\n name=\"url-map\",\n description=\"a description\",\n default_service=default_backend_service.id,\n host_rules=[{\n \"hosts\": [\"sslcert.tf-test.club\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default_backend_service.id,\n \"path_rules\": [{\n \"paths\": [\"/*\"],\n \"service\": default_backend_service.id,\n }],\n }])\ndefault_target_https_proxy = gcp.compute.TargetHttpsProxy(\"default\",\n name=\"test-proxy\",\n url_map=default_url_map.id,\n ssl_certificates=[default.id])\ndefault_global_forwarding_rule = gcp.compute.GlobalForwardingRule(\"default\",\n name=\"forwarding-rule\",\n target=default_target_https_proxy.id,\n port_range=\"443\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.ManagedSslCertificate(\"default\", new()\n {\n Name = \"test-cert\",\n Managed = new Gcp.Compute.Inputs.ManagedSslCertificateManagedArgs\n {\n Domains = new[]\n {\n \"sslcert.tf-test.club.\",\n },\n },\n });\n\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"http-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"backend-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultURLMap = new Gcp.Compute.URLMap(\"default\", new()\n {\n Name = \"url-map\",\n Description = \"a description\",\n DefaultService = defaultBackendService.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"sslcert.tf-test.club\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = defaultBackendService.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/*\",\n },\n Service = defaultBackendService.Id,\n },\n },\n },\n },\n });\n\n var defaultTargetHttpsProxy = new Gcp.Compute.TargetHttpsProxy(\"default\", new()\n {\n Name = \"test-proxy\",\n UrlMap = defaultURLMap.Id,\n SslCertificates = new[]\n {\n @default.Id,\n },\n });\n\n var defaultGlobalForwardingRule = new Gcp.Compute.GlobalForwardingRule(\"default\", new()\n {\n Name = \"forwarding-rule\",\n Target = defaultTargetHttpsProxy.Id,\n PortRange = \"443\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewManagedSslCertificate(ctx, \"default\", \u0026compute.ManagedSslCertificateArgs{\n\t\t\tName: pulumi.String(\"test-cert\"),\n\t\t\tManaged: \u0026compute.ManagedSslCertificateManagedArgs{\n\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club.\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackendService, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"backend-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultURLMap, err := compute.NewURLMap(ctx, \"default\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"url-map\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"sslcert.tf-test.club\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: defaultBackendService.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: defaultBackendService.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultTargetHttpsProxy, err := compute.NewTargetHttpsProxy(ctx, \"default\", \u0026compute.TargetHttpsProxyArgs{\n\t\t\tName: pulumi.String(\"test-proxy\"),\n\t\t\tUrlMap: defaultURLMap.ID(),\n\t\t\tSslCertificates: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewGlobalForwardingRule(ctx, \"default\", \u0026compute.GlobalForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"forwarding-rule\"),\n\t\t\tTarget: defaultTargetHttpsProxy.ID(),\n\t\t\tPortRange: pulumi.String(\"443\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ManagedSslCertificate;\nimport com.pulumi.gcp.compute.ManagedSslCertificateArgs;\nimport com.pulumi.gcp.compute.inputs.ManagedSslCertificateManagedArgs;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.TargetHttpsProxy;\nimport com.pulumi.gcp.compute.TargetHttpsProxyArgs;\nimport com.pulumi.gcp.compute.GlobalForwardingRule;\nimport com.pulumi.gcp.compute.GlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ManagedSslCertificate(\"default\", ManagedSslCertificateArgs.builder()\n .name(\"test-cert\")\n .managed(ManagedSslCertificateManagedArgs.builder()\n .domains(\"sslcert.tf-test.club.\")\n .build())\n .build());\n\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"http-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"backend-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultURLMap = new URLMap(\"defaultURLMap\", URLMapArgs.builder()\n .name(\"url-map\")\n .description(\"a description\")\n .defaultService(defaultBackendService.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"sslcert.tf-test.club\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(defaultBackendService.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/*\")\n .service(defaultBackendService.id())\n .build())\n .build())\n .build());\n\n var defaultTargetHttpsProxy = new TargetHttpsProxy(\"defaultTargetHttpsProxy\", TargetHttpsProxyArgs.builder()\n .name(\"test-proxy\")\n .urlMap(defaultURLMap.id())\n .sslCertificates(default_.id())\n .build());\n\n var defaultGlobalForwardingRule = new GlobalForwardingRule(\"defaultGlobalForwardingRule\", GlobalForwardingRuleArgs.builder()\n .name(\"forwarding-rule\")\n .target(defaultTargetHttpsProxy.id())\n .portRange(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:ManagedSslCertificate\n properties:\n name: test-cert\n managed:\n domains:\n - sslcert.tf-test.club.\n defaultTargetHttpsProxy:\n type: gcp:compute:TargetHttpsProxy\n name: default\n properties:\n name: test-proxy\n urlMap: ${defaultURLMap.id}\n sslCertificates:\n - ${default.id}\n defaultURLMap:\n type: gcp:compute:URLMap\n name: default\n properties:\n name: url-map\n description: a description\n defaultService: ${defaultBackendService.id}\n hostRules:\n - hosts:\n - sslcert.tf-test.club\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${defaultBackendService.id}\n pathRules:\n - paths:\n - /*\n service: ${defaultBackendService.id}\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: backend-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: http-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGlobalForwardingRule:\n type: gcp:compute:GlobalForwardingRule\n name: default\n properties:\n name: forwarding-rule\n target: ${defaultTargetHttpsProxy.id}\n portRange: 443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nManagedSslCertificate can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/sslCertificates/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ManagedSslCertificate can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/mangedSslCertificate:MangedSslCertificate default projects/{{project}}/global/sslCertificates/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/mangedSslCertificate:MangedSslCertificate default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/mangedSslCertificate:MangedSslCertificate default {{name}}\n```\n\n", "properties": { "certificateId": { "type": "integer", @@ -178811,7 +178811,7 @@ } }, "gcp:compute/networkAttachment:NetworkAttachment": { - "description": "A network attachment is a resource that lets a producer Virtual Private Cloud (VPC) network initiate connections to a consumer VPC network through a Private Service Connect interface.\n\n\nTo get more information about NetworkAttachment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/networkAttachments)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vpc/docs/about-network-attachments)\n\n## Example Usage\n\n### Network Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"basic-subnetwork\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst rejectedProducerProject = new gcp.organizations.Project(\"rejected_producer_project\", {\n projectId: \"prj-rejected\",\n name: \"prj-rejected\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst acceptedProducerProject = new gcp.organizations.Project(\"accepted_producer_project\", {\n projectId: \"prj-accepted\",\n name: \"prj-accepted\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst _default = new gcp.compute.NetworkAttachment(\"default\", {\n name: \"basic-network-attachment\",\n region: \"us-central1\",\n description: \"basic network attachment description\",\n connectionPreference: \"ACCEPT_MANUAL\",\n subnetworks: [defaultSubnetwork.selfLink],\n producerAcceptLists: [acceptedProducerProject.projectId],\n producerRejectLists: [rejectedProducerProject.projectId],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"basic-subnetwork\",\n region=\"us-central1\",\n network=default_network.id,\n ip_cidr_range=\"10.0.0.0/16\")\nrejected_producer_project = gcp.organizations.Project(\"rejected_producer_project\",\n project_id=\"prj-rejected\",\n name=\"prj-rejected\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\naccepted_producer_project = gcp.organizations.Project(\"accepted_producer_project\",\n project_id=\"prj-accepted\",\n name=\"prj-accepted\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\ndefault = gcp.compute.NetworkAttachment(\"default\",\n name=\"basic-network-attachment\",\n region=\"us-central1\",\n description=\"basic network attachment description\",\n connection_preference=\"ACCEPT_MANUAL\",\n subnetworks=[default_subnetwork.self_link],\n producer_accept_lists=[accepted_producer_project.project_id],\n producer_reject_lists=[rejected_producer_project.project_id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"basic-subnetwork\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var rejectedProducerProject = new Gcp.Organizations.Project(\"rejected_producer_project\", new()\n {\n ProjectId = \"prj-rejected\",\n Name = \"prj-rejected\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var acceptedProducerProject = new Gcp.Organizations.Project(\"accepted_producer_project\", new()\n {\n ProjectId = \"prj-accepted\",\n Name = \"prj-accepted\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var @default = new Gcp.Compute.NetworkAttachment(\"default\", new()\n {\n Name = \"basic-network-attachment\",\n Region = \"us-central1\",\n Description = \"basic network attachment description\",\n ConnectionPreference = \"ACCEPT_MANUAL\",\n Subnetworks = new[]\n {\n defaultSubnetwork.SelfLink,\n },\n ProducerAcceptLists = new[]\n {\n acceptedProducerProject.ProjectId,\n },\n ProducerRejectLists = new[]\n {\n rejectedProducerProject.ProjectId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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(\"basic-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"basic-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trejectedProducerProject, err := organizations.NewProject(ctx, \"rejected_producer_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"prj-rejected\"),\n\t\t\tName: pulumi.String(\"prj-rejected\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tacceptedProducerProject, err := organizations.NewProject(ctx, \"accepted_producer_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"prj-accepted\"),\n\t\t\tName: pulumi.String(\"prj-accepted\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkAttachment(ctx, \"default\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"basic-network-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"basic network attachment description\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_MANUAL\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tdefaultSubnetwork.SelfLink,\n\t\t\t},\n\t\t\tProducerAcceptLists: pulumi.StringArray{\n\t\t\t\tacceptedProducerProject.ProjectId,\n\t\t\t},\n\t\t\tProducerRejectLists: pulumi.StringArray{\n\t\t\t\trejectedProducerProject.ProjectId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"basic-subnetwork\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var rejectedProducerProject = new Project(\"rejectedProducerProject\", ProjectArgs.builder()\n .projectId(\"prj-rejected\")\n .name(\"prj-rejected\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var acceptedProducerProject = new Project(\"acceptedProducerProject\", ProjectArgs.builder()\n .projectId(\"prj-accepted\")\n .name(\"prj-accepted\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var default_ = new NetworkAttachment(\"default\", NetworkAttachmentArgs.builder()\n .name(\"basic-network-attachment\")\n .region(\"us-central1\")\n .description(\"basic network attachment description\")\n .connectionPreference(\"ACCEPT_MANUAL\")\n .subnetworks(defaultSubnetwork.selfLink())\n .producerAcceptLists(acceptedProducerProject.projectId())\n .producerRejectLists(rejectedProducerProject.projectId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:NetworkAttachment\n properties:\n name: basic-network-attachment\n region: us-central1\n description: basic network attachment description\n connectionPreference: ACCEPT_MANUAL\n subnetworks:\n - ${defaultSubnetwork.selfLink}\n producerAcceptLists:\n - ${acceptedProducerProject.projectId}\n producerRejectLists:\n - ${rejectedProducerProject.projectId}\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: basic-subnetwork\n region: us-central1\n network: ${defaultNetwork.id}\n ipCidrRange: 10.0.0.0/16\n rejectedProducerProject:\n type: gcp:organizations:Project\n name: rejected_producer_project\n properties:\n projectId: prj-rejected\n name: prj-rejected\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n acceptedProducerProject:\n type: gcp:organizations:Project\n name: accepted_producer_project\n properties:\n projectId: prj-accepted\n name: prj-accepted\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Attachment Instance Usage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"basic-subnetwork\",\n region: \"us-central1\",\n network: _default.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst defaultNetworkAttachment = new gcp.compute.NetworkAttachment(\"default\", {\n name: \"basic-network-attachment\",\n region: \"us-central1\",\n description: \"my basic network attachment\",\n subnetworks: [defaultSubnetwork.id],\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n});\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n name: \"basic-instance\",\n zone: \"us-central1-a\",\n machineType: \"e2-micro\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [\n {\n network: \"default\",\n },\n {\n networkAttachment: defaultNetworkAttachment.selfLink,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"basic-subnetwork\",\n region=\"us-central1\",\n network=default.id,\n ip_cidr_range=\"10.0.0.0/16\")\ndefault_network_attachment = gcp.compute.NetworkAttachment(\"default\",\n name=\"basic-network-attachment\",\n region=\"us-central1\",\n description=\"my basic network attachment\",\n subnetworks=[default_subnetwork.id],\n connection_preference=\"ACCEPT_AUTOMATIC\")\ndefault_instance = gcp.compute.Instance(\"default\",\n name=\"basic-instance\",\n zone=\"us-central1-a\",\n machine_type=\"e2-micro\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[\n {\n \"network\": \"default\",\n },\n {\n \"network_attachment\": default_network_attachment.self_link,\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"basic-subnetwork\",\n Region = \"us-central1\",\n Network = @default.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var defaultNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"default\", new()\n {\n Name = \"basic-network-attachment\",\n Region = \"us-central1\",\n Description = \"my basic network attachment\",\n Subnetworks = new[]\n {\n defaultSubnetwork.Id,\n },\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n });\n\n var defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n Name = \"basic-instance\",\n Zone = \"us-central1-a\",\n MachineType = \"e2-micro\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n NetworkAttachment = defaultNetworkAttachment.SelfLink,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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(\"basic-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"basic-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"default\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"basic-network-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"my basic network attachment\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tdefaultSubnetwork.ID(),\n\t\t\t},\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"basic-instance\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tMachineType: pulumi.String(\"e2-micro\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetworkAttachment: defaultNetworkAttachment.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"basic-subnetwork\")\n .region(\"us-central1\")\n .network(default_.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var defaultNetworkAttachment = new NetworkAttachment(\"defaultNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"basic-network-attachment\")\n .region(\"us-central1\")\n .description(\"my basic network attachment\")\n .subnetworks(defaultSubnetwork.id())\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .build());\n\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .name(\"basic-instance\")\n .zone(\"us-central1-a\")\n .machineType(\"e2-micro\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .networkInterfaces( \n InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build(),\n InstanceNetworkInterfaceArgs.builder()\n .networkAttachment(defaultNetworkAttachment.selfLink())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: basic-subnetwork\n region: us-central1\n network: ${default.id}\n ipCidrRange: 10.0.0.0/16\n defaultNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: default\n properties:\n name: basic-network-attachment\n region: us-central1\n description: my basic network attachment\n subnetworks:\n - ${defaultSubnetwork.id}\n connectionPreference: ACCEPT_AUTOMATIC\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n name: basic-instance\n zone: us-central1-a\n machineType: e2-micro\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: default\n - networkAttachment: ${defaultNetworkAttachment.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkAttachment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/networkAttachments/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NetworkAttachment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default projects/{{project}}/regions/{{region}}/networkAttachments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default {{name}}\n```\n\n", + "description": "A network attachment is a resource that lets a producer Virtual Private Cloud (VPC) network initiate connections to a consumer VPC network through a Private Service Connect interface.\n\n\nTo get more information about NetworkAttachment, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/networkAttachments)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vpc/docs/about-network-attachments)\n\n## Example Usage\n\n### Network Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"basic-subnetwork\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst rejectedProducerProject = new gcp.organizations.Project(\"rejected_producer_project\", {\n projectId: \"prj-rejected\",\n name: \"prj-rejected\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst acceptedProducerProject = new gcp.organizations.Project(\"accepted_producer_project\", {\n projectId: \"prj-accepted\",\n name: \"prj-accepted\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst _default = new gcp.compute.NetworkAttachment(\"default\", {\n name: \"basic-network-attachment\",\n region: \"us-central1\",\n description: \"basic network attachment description\",\n connectionPreference: \"ACCEPT_MANUAL\",\n subnetworks: [defaultSubnetwork.selfLink],\n producerAcceptLists: [acceptedProducerProject.projectId],\n producerRejectLists: [rejectedProducerProject.projectId],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"basic-subnetwork\",\n region=\"us-central1\",\n network=default_network.id,\n ip_cidr_range=\"10.0.0.0/16\")\nrejected_producer_project = gcp.organizations.Project(\"rejected_producer_project\",\n project_id=\"prj-rejected\",\n name=\"prj-rejected\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\naccepted_producer_project = gcp.organizations.Project(\"accepted_producer_project\",\n project_id=\"prj-accepted\",\n name=\"prj-accepted\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\ndefault = gcp.compute.NetworkAttachment(\"default\",\n name=\"basic-network-attachment\",\n region=\"us-central1\",\n description=\"basic network attachment description\",\n connection_preference=\"ACCEPT_MANUAL\",\n subnetworks=[default_subnetwork.self_link],\n producer_accept_lists=[accepted_producer_project.project_id],\n producer_reject_lists=[rejected_producer_project.project_id])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"basic-subnetwork\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var rejectedProducerProject = new Gcp.Organizations.Project(\"rejected_producer_project\", new()\n {\n ProjectId = \"prj-rejected\",\n Name = \"prj-rejected\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var acceptedProducerProject = new Gcp.Organizations.Project(\"accepted_producer_project\", new()\n {\n ProjectId = \"prj-accepted\",\n Name = \"prj-accepted\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var @default = new Gcp.Compute.NetworkAttachment(\"default\", new()\n {\n Name = \"basic-network-attachment\",\n Region = \"us-central1\",\n Description = \"basic network attachment description\",\n ConnectionPreference = \"ACCEPT_MANUAL\",\n Subnetworks = new[]\n {\n defaultSubnetwork.SelfLink,\n },\n ProducerAcceptLists = new[]\n {\n acceptedProducerProject.ProjectId,\n },\n ProducerRejectLists = new[]\n {\n rejectedProducerProject.ProjectId,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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(\"basic-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"basic-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trejectedProducerProject, err := organizations.NewProject(ctx, \"rejected_producer_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"prj-rejected\"),\n\t\t\tName: pulumi.String(\"prj-rejected\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tacceptedProducerProject, err := organizations.NewProject(ctx, \"accepted_producer_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"prj-accepted\"),\n\t\t\tName: pulumi.String(\"prj-accepted\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkAttachment(ctx, \"default\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"basic-network-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"basic network attachment description\"),\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_MANUAL\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tdefaultSubnetwork.SelfLink,\n\t\t\t},\n\t\t\tProducerAcceptLists: pulumi.StringArray{\n\t\t\t\tacceptedProducerProject.ProjectId,\n\t\t\t},\n\t\t\tProducerRejectLists: pulumi.StringArray{\n\t\t\t\trejectedProducerProject.ProjectId,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"basic-subnetwork\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var rejectedProducerProject = new Project(\"rejectedProducerProject\", ProjectArgs.builder()\n .projectId(\"prj-rejected\")\n .name(\"prj-rejected\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var acceptedProducerProject = new Project(\"acceptedProducerProject\", ProjectArgs.builder()\n .projectId(\"prj-accepted\")\n .name(\"prj-accepted\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var default_ = new NetworkAttachment(\"default\", NetworkAttachmentArgs.builder()\n .name(\"basic-network-attachment\")\n .region(\"us-central1\")\n .description(\"basic network attachment description\")\n .connectionPreference(\"ACCEPT_MANUAL\")\n .subnetworks(defaultSubnetwork.selfLink())\n .producerAcceptLists(acceptedProducerProject.projectId())\n .producerRejectLists(rejectedProducerProject.projectId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:NetworkAttachment\n properties:\n name: basic-network-attachment\n region: us-central1\n description: basic network attachment description\n connectionPreference: ACCEPT_MANUAL\n subnetworks:\n - ${defaultSubnetwork.selfLink}\n producerAcceptLists:\n - ${acceptedProducerProject.projectId}\n producerRejectLists:\n - ${rejectedProducerProject.projectId}\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: basic-subnetwork\n region: us-central1\n network: ${defaultNetwork.id}\n ipCidrRange: 10.0.0.0/16\n rejectedProducerProject:\n type: gcp:organizations:Project\n name: rejected_producer_project\n properties:\n projectId: prj-rejected\n name: prj-rejected\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n acceptedProducerProject:\n type: gcp:organizations:Project\n name: accepted_producer_project\n properties:\n projectId: prj-accepted\n name: prj-accepted\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Attachment Instance Usage\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"basic-subnetwork\",\n region: \"us-central1\",\n network: _default.id,\n ipCidrRange: \"10.0.0.0/16\",\n});\nconst defaultNetworkAttachment = new gcp.compute.NetworkAttachment(\"default\", {\n name: \"basic-network-attachment\",\n region: \"us-central1\",\n description: \"my basic network attachment\",\n subnetworks: [defaultSubnetwork.id],\n connectionPreference: \"ACCEPT_AUTOMATIC\",\n});\nconst defaultInstance = new gcp.compute.Instance(\"default\", {\n name: \"basic-instance\",\n zone: \"us-central1-a\",\n machineType: \"e2-micro\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [\n {\n network: \"default\",\n },\n {\n networkAttachment: defaultNetworkAttachment.selfLink,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"basic-subnetwork\",\n region=\"us-central1\",\n network=default.id,\n ip_cidr_range=\"10.0.0.0/16\")\ndefault_network_attachment = gcp.compute.NetworkAttachment(\"default\",\n name=\"basic-network-attachment\",\n region=\"us-central1\",\n description=\"my basic network attachment\",\n subnetworks=[default_subnetwork.id],\n connection_preference=\"ACCEPT_AUTOMATIC\")\ndefault_instance = gcp.compute.Instance(\"default\",\n name=\"basic-instance\",\n zone=\"us-central1-a\",\n machine_type=\"e2-micro\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[\n {\n \"network\": \"default\",\n },\n {\n \"network_attachment\": default_network_attachment.self_link,\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"basic-subnetwork\",\n Region = \"us-central1\",\n Network = @default.Id,\n IpCidrRange = \"10.0.0.0/16\",\n });\n\n var defaultNetworkAttachment = new Gcp.Compute.NetworkAttachment(\"default\", new()\n {\n Name = \"basic-network-attachment\",\n Region = \"us-central1\",\n Description = \"my basic network attachment\",\n Subnetworks = new[]\n {\n defaultSubnetwork.Id,\n },\n ConnectionPreference = \"ACCEPT_AUTOMATIC\",\n });\n\n var defaultInstance = new Gcp.Compute.Instance(\"default\", new()\n {\n Name = \"basic-instance\",\n Zone = \"us-central1-a\",\n MachineType = \"e2-micro\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n NetworkAttachment = defaultNetworkAttachment.SelfLink,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"basic-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"basic-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetworkAttachment, err := compute.NewNetworkAttachment(ctx, \"default\", \u0026compute.NetworkAttachmentArgs{\n\t\t\tName: pulumi.String(\"basic-network-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"my basic network attachment\"),\n\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\tdefaultSubnetwork.ID(),\n\t\t\t},\n\t\t\tConnectionPreference: pulumi.String(\"ACCEPT_AUTOMATIC\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"basic-instance\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tMachineType: pulumi.String(\"e2-micro\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tNetworkAttachment: defaultNetworkAttachment.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkAttachment;\nimport com.pulumi.gcp.compute.NetworkAttachmentArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"basic-subnetwork\")\n .region(\"us-central1\")\n .network(default_.id())\n .ipCidrRange(\"10.0.0.0/16\")\n .build());\n\n var defaultNetworkAttachment = new NetworkAttachment(\"defaultNetworkAttachment\", NetworkAttachmentArgs.builder()\n .name(\"basic-network-attachment\")\n .region(\"us-central1\")\n .description(\"my basic network attachment\")\n .subnetworks(defaultSubnetwork.id())\n .connectionPreference(\"ACCEPT_AUTOMATIC\")\n .build());\n\n var defaultInstance = new Instance(\"defaultInstance\", InstanceArgs.builder()\n .name(\"basic-instance\")\n .zone(\"us-central1-a\")\n .machineType(\"e2-micro\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .networkInterfaces( \n InstanceNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build(),\n InstanceNetworkInterfaceArgs.builder()\n .networkAttachment(defaultNetworkAttachment.selfLink())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: basic-subnetwork\n region: us-central1\n network: ${default.id}\n ipCidrRange: 10.0.0.0/16\n defaultNetworkAttachment:\n type: gcp:compute:NetworkAttachment\n name: default\n properties:\n name: basic-network-attachment\n region: us-central1\n description: my basic network attachment\n subnetworks:\n - ${defaultSubnetwork.id}\n connectionPreference: ACCEPT_AUTOMATIC\n defaultInstance:\n type: gcp:compute:Instance\n name: default\n properties:\n name: basic-instance\n zone: us-central1-a\n machineType: e2-micro\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - network: default\n - networkAttachment: ${defaultNetworkAttachment.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkAttachment can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/networkAttachments/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NetworkAttachment can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default projects/{{project}}/regions/{{region}}/networkAttachments/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkAttachment:NetworkAttachment default {{name}}\n```\n\n", "properties": { "connectionEndpoints": { "type": "array", @@ -179171,7 +179171,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\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", + "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_default, 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\tendpoint_instance, 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", @@ -179278,7 +179278,7 @@ } }, "gcp:compute/networkEndpointGroup:NetworkEndpointGroup": { - "description": "Network endpoint groups (NEGs) are zonal resources that represent\ncollections of IP address and port combinations for GCP resources within a\nsingle subnet. Each IP address and port combination is called a network\nendpoint.\n\nNetwork endpoint groups can be used as backends in backend services for\nHTTP(S), TCP proxy, and SSL proxy load balancers. You cannot use NEGs as a\nbackend with internal load balancers. Because NEG backends allow you to\nspecify IP addresses and ports, you can distribute traffic in a granular\nfashion among applications or containers running within VM instances.\n\nRecreating a network endpoint group that's in use by another resource will give a\n`resourceInUseByAnotherResource` error. Use `lifecycle.create_before_destroy`\nto avoid this type of error.\n\n\nTo get more information about NetworkEndpointGroup, 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 Group\n\n\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: \"neg-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"neg-subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst neg = new gcp.compute.NetworkEndpointGroup(\"neg\", {\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\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.0/16\",\n region=\"us-central1\",\n network=default.id)\nneg = gcp.compute.NetworkEndpointGroup(\"neg\",\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 @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.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var neg = new Gcp.Compute.NetworkEndpointGroup(\"neg\", 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\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.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.NewNetworkEndpointGroup(ctx, \"neg\", \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.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"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.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var neg = new NetworkEndpointGroup(\"neg\", 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 neg:\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.0/16\n region: us-central1\n network: ${default.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Endpoint Group Non Gcp\n\n\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: \"neg-network\"});\nconst neg = new gcp.compute.NetworkEndpointGroup(\"neg\", {\n name: \"my-lb-neg\",\n network: _default.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n networkEndpointType: \"NON_GCP_PRIVATE_IP_PORT\",\n});\nconst default_endpoint = new gcp.compute.NetworkEndpoint(\"default-endpoint\", {\n networkEndpointGroup: neg.name,\n port: neg.defaultPort,\n ipAddress: \"127.0.0.1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"neg-network\")\nneg = gcp.compute.NetworkEndpointGroup(\"neg\",\n name=\"my-lb-neg\",\n network=default.id,\n default_port=90,\n zone=\"us-central1-a\",\n network_endpoint_type=\"NON_GCP_PRIVATE_IP_PORT\")\ndefault_endpoint = gcp.compute.NetworkEndpoint(\"default-endpoint\",\n network_endpoint_group=neg.name,\n port=neg.default_port,\n ip_address=\"127.0.0.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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"neg-network\",\n });\n\n var neg = new Gcp.Compute.NetworkEndpointGroup(\"neg\", new()\n {\n Name = \"my-lb-neg\",\n Network = @default.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"NON_GCP_PRIVATE_IP_PORT\",\n });\n\n var default_endpoint = new Gcp.Compute.NetworkEndpoint(\"default-endpoint\", new()\n {\n NetworkEndpointGroup = neg.Name,\n Port = neg.DefaultPort,\n IpAddress = \"127.0.0.1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"neg-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tneg, err := compute.NewNetworkEndpointGroup(ctx, \"neg\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-lb-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"NON_GCP_PRIVATE_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpoint(ctx, \"default-endpoint\", \u0026compute.NetworkEndpointArgs{\n\t\t\tNetworkEndpointGroup: neg.Name,\n\t\t\tPort: neg.DefaultPort,\n\t\t\tIpAddress: pulumi.String(\"127.0.0.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.NetworkEndpoint;\nimport com.pulumi.gcp.compute.NetworkEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"neg-network\")\n .build());\n\n var neg = new NetworkEndpointGroup(\"neg\", NetworkEndpointGroupArgs.builder()\n .name(\"my-lb-neg\")\n .network(default_.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .networkEndpointType(\"NON_GCP_PRIVATE_IP_PORT\")\n .build());\n\n var default_endpoint = new NetworkEndpoint(\"default-endpoint\", NetworkEndpointArgs.builder()\n .networkEndpointGroup(neg.name())\n .port(neg.defaultPort())\n .ipAddress(\"127.0.0.1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n neg:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: my-lb-neg\n network: ${default.id}\n defaultPort: '90'\n zone: us-central1-a\n networkEndpointType: NON_GCP_PRIVATE_IP_PORT\n default-endpoint:\n type: gcp:compute:NetworkEndpoint\n properties:\n networkEndpointGroup: ${neg.name}\n port: ${neg.defaultPort}\n ipAddress: 127.0.0.1\n default:\n type: gcp:compute:Network\n properties:\n name: neg-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkEndpointGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NetworkEndpointGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkEndpointGroup:NetworkEndpointGroup default projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointGroup:NetworkEndpointGroup default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointGroup:NetworkEndpointGroup default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointGroup:NetworkEndpointGroup default {{name}}\n```\n\n", + "description": "Network endpoint groups (NEGs) are zonal resources that represent\ncollections of IP address and port combinations for GCP resources within a\nsingle subnet. Each IP address and port combination is called a network\nendpoint.\n\nNetwork endpoint groups can be used as backends in backend services for\nHTTP(S), TCP proxy, and SSL proxy load balancers. You cannot use NEGs as a\nbackend with internal load balancers. Because NEG backends allow you to\nspecify IP addresses and ports, you can distribute traffic in a granular\nfashion among applications or containers running within VM instances.\n\nRecreating a network endpoint group that's in use by another resource will give a\n`resourceInUseByAnotherResource` error. Use `lifecycle.create_before_destroy`\nto avoid this type of error.\n\n\nTo get more information about NetworkEndpointGroup, 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 Group\n\n\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: \"neg-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"neg-subnetwork\",\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst neg = new gcp.compute.NetworkEndpointGroup(\"neg\", {\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\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.0/16\",\n region=\"us-central1\",\n network=default.id)\nneg = gcp.compute.NetworkEndpointGroup(\"neg\",\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 @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.0/16\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var neg = new Gcp.Compute.NetworkEndpointGroup(\"neg\", 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\t_default, 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.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.NewNetworkEndpointGroup(ctx, \"neg\", \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.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"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.0/16\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var neg = new NetworkEndpointGroup(\"neg\", 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 neg:\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.0/16\n region: us-central1\n network: ${default.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Endpoint Group Non Gcp\n\n\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: \"neg-network\"});\nconst neg = new gcp.compute.NetworkEndpointGroup(\"neg\", {\n name: \"my-lb-neg\",\n network: _default.id,\n defaultPort: 90,\n zone: \"us-central1-a\",\n networkEndpointType: \"NON_GCP_PRIVATE_IP_PORT\",\n});\nconst default_endpoint = new gcp.compute.NetworkEndpoint(\"default-endpoint\", {\n networkEndpointGroup: neg.name,\n port: neg.defaultPort,\n ipAddress: \"127.0.0.1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\", name=\"neg-network\")\nneg = gcp.compute.NetworkEndpointGroup(\"neg\",\n name=\"my-lb-neg\",\n network=default.id,\n default_port=90,\n zone=\"us-central1-a\",\n network_endpoint_type=\"NON_GCP_PRIVATE_IP_PORT\")\ndefault_endpoint = gcp.compute.NetworkEndpoint(\"default-endpoint\",\n network_endpoint_group=neg.name,\n port=neg.default_port,\n ip_address=\"127.0.0.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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"neg-network\",\n });\n\n var neg = new Gcp.Compute.NetworkEndpointGroup(\"neg\", new()\n {\n Name = \"my-lb-neg\",\n Network = @default.Id,\n DefaultPort = 90,\n Zone = \"us-central1-a\",\n NetworkEndpointType = \"NON_GCP_PRIVATE_IP_PORT\",\n });\n\n var default_endpoint = new Gcp.Compute.NetworkEndpoint(\"default-endpoint\", new()\n {\n NetworkEndpointGroup = neg.Name,\n Port = neg.DefaultPort,\n IpAddress = \"127.0.0.1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"neg-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tneg, err := compute.NewNetworkEndpointGroup(ctx, \"neg\", \u0026compute.NetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-lb-neg\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tDefaultPort: pulumi.Int(90),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"NON_GCP_PRIVATE_IP_PORT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkEndpoint(ctx, \"default-endpoint\", \u0026compute.NetworkEndpointArgs{\n\t\t\tNetworkEndpointGroup: neg.Name,\n\t\t\tPort: neg.DefaultPort,\n\t\t\tIpAddress: pulumi.String(\"127.0.0.1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.NetworkEndpointGroup;\nimport com.pulumi.gcp.compute.NetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.NetworkEndpoint;\nimport com.pulumi.gcp.compute.NetworkEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"neg-network\")\n .build());\n\n var neg = new NetworkEndpointGroup(\"neg\", NetworkEndpointGroupArgs.builder()\n .name(\"my-lb-neg\")\n .network(default_.id())\n .defaultPort(\"90\")\n .zone(\"us-central1-a\")\n .networkEndpointType(\"NON_GCP_PRIVATE_IP_PORT\")\n .build());\n\n var default_endpoint = new NetworkEndpoint(\"default-endpoint\", NetworkEndpointArgs.builder()\n .networkEndpointGroup(neg.name())\n .port(neg.defaultPort())\n .ipAddress(\"127.0.0.1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n neg:\n type: gcp:compute:NetworkEndpointGroup\n properties:\n name: my-lb-neg\n network: ${default.id}\n defaultPort: '90'\n zone: us-central1-a\n networkEndpointType: NON_GCP_PRIVATE_IP_PORT\n default-endpoint:\n type: gcp:compute:NetworkEndpoint\n properties:\n networkEndpointGroup: ${neg.name}\n port: ${neg.defaultPort}\n ipAddress: 127.0.0.1\n default:\n type: gcp:compute:Network\n properties:\n name: neg-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkEndpointGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NetworkEndpointGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkEndpointGroup:NetworkEndpointGroup default projects/{{project}}/zones/{{zone}}/networkEndpointGroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointGroup:NetworkEndpointGroup default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointGroup:NetworkEndpointGroup default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/networkEndpointGroup:NetworkEndpointGroup default {{name}}\n```\n\n", "properties": { "defaultPort": { "type": "integer", @@ -179430,7 +179430,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\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", + "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_default, 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\tendpoint_instance1, 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\tendpoint_instance2, 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", @@ -180101,7 +180101,7 @@ } }, "gcp:compute/networkPeering:NetworkPeering": { - "description": "Manages a network peering within GCE. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/vpc/vpc-peering)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/networks).\n\n\u003e Both networks must create a peering with each other for the peering\nto be functional.\n\n\u003e Subnets IP ranges across peered VPC networks cannot overlap.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"foobar\",\n autoCreateSubnetworks: false,\n});\nconst other = new gcp.compute.Network(\"other\", {\n name: \"other\",\n autoCreateSubnetworks: false,\n});\nconst peering1 = new gcp.compute.NetworkPeering(\"peering1\", {\n name: \"peering1\",\n network: _default.selfLink,\n peerNetwork: other.selfLink,\n});\nconst peering2 = new gcp.compute.NetworkPeering(\"peering2\", {\n name: \"peering2\",\n network: other.selfLink,\n peerNetwork: _default.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"foobar\",\n auto_create_subnetworks=False)\nother = gcp.compute.Network(\"other\",\n name=\"other\",\n auto_create_subnetworks=False)\npeering1 = gcp.compute.NetworkPeering(\"peering1\",\n name=\"peering1\",\n network=default.self_link,\n peer_network=other.self_link)\npeering2 = gcp.compute.NetworkPeering(\"peering2\",\n name=\"peering2\",\n network=other.self_link,\n peer_network=default.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 = \"foobar\",\n AutoCreateSubnetworks = false,\n });\n\n var other = new Gcp.Compute.Network(\"other\", new()\n {\n Name = \"other\",\n AutoCreateSubnetworks = false,\n });\n\n var peering1 = new Gcp.Compute.NetworkPeering(\"peering1\", new()\n {\n Name = \"peering1\",\n Network = @default.SelfLink,\n PeerNetwork = other.SelfLink,\n });\n\n var peering2 = new Gcp.Compute.NetworkPeering(\"peering2\", new()\n {\n Name = \"peering2\",\n Network = other.SelfLink,\n PeerNetwork = @default.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(\"foobar\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tother, err := compute.NewNetwork(ctx, \"other\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"other\"),\n\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.NewNetworkPeering(ctx, \"peering1\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peering1\"),\n\t\t\tNetwork: _default.SelfLink,\n\t\t\tPeerNetwork: other.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeering(ctx, \"peering2\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peering2\"),\n\t\t\tNetwork: other.SelfLink,\n\t\t\tPeerNetwork: _default.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.NetworkPeering;\nimport com.pulumi.gcp.compute.NetworkPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"foobar\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var other = new Network(\"other\", NetworkArgs.builder()\n .name(\"other\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var peering1 = new NetworkPeering(\"peering1\", NetworkPeeringArgs.builder()\n .name(\"peering1\")\n .network(default_.selfLink())\n .peerNetwork(other.selfLink())\n .build());\n\n var peering2 = new NetworkPeering(\"peering2\", NetworkPeeringArgs.builder()\n .name(\"peering2\")\n .network(other.selfLink())\n .peerNetwork(default_.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peering1:\n type: gcp:compute:NetworkPeering\n properties:\n name: peering1\n network: ${default.selfLink}\n peerNetwork: ${other.selfLink}\n peering2:\n type: gcp:compute:NetworkPeering\n properties:\n name: peering2\n network: ${other.selfLink}\n peerNetwork: ${default.selfLink}\n default:\n type: gcp:compute:Network\n properties:\n name: foobar\n autoCreateSubnetworks: 'false'\n other:\n type: gcp:compute:Network\n properties:\n name: other\n autoCreateSubnetworks: 'false'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVPC network peerings can be imported using the name and project of the primary network the peering exists in and the name of the network peering\n\n* `{{project_id}}/{{network_id}}/{{peering_id}}`\n\nWhen using the `pulumi import` command, VPC network peerings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkPeering:NetworkPeering default {{project_id}}/{{network_id}}/{{peering_id}}\n```\n\n", + "description": "Manages a network peering within GCE. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/vpc/vpc-peering)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/networks).\n\n\u003e Both networks must create a peering with each other for the peering\nto be functional.\n\n\u003e Subnets IP ranges across peered VPC networks cannot overlap.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"foobar\",\n autoCreateSubnetworks: false,\n});\nconst other = new gcp.compute.Network(\"other\", {\n name: \"other\",\n autoCreateSubnetworks: false,\n});\nconst peering1 = new gcp.compute.NetworkPeering(\"peering1\", {\n name: \"peering1\",\n network: _default.selfLink,\n peerNetwork: other.selfLink,\n});\nconst peering2 = new gcp.compute.NetworkPeering(\"peering2\", {\n name: \"peering2\",\n network: other.selfLink,\n peerNetwork: _default.selfLink,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"foobar\",\n auto_create_subnetworks=False)\nother = gcp.compute.Network(\"other\",\n name=\"other\",\n auto_create_subnetworks=False)\npeering1 = gcp.compute.NetworkPeering(\"peering1\",\n name=\"peering1\",\n network=default.self_link,\n peer_network=other.self_link)\npeering2 = gcp.compute.NetworkPeering(\"peering2\",\n name=\"peering2\",\n network=other.self_link,\n peer_network=default.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 = \"foobar\",\n AutoCreateSubnetworks = false,\n });\n\n var other = new Gcp.Compute.Network(\"other\", new()\n {\n Name = \"other\",\n AutoCreateSubnetworks = false,\n });\n\n var peering1 = new Gcp.Compute.NetworkPeering(\"peering1\", new()\n {\n Name = \"peering1\",\n Network = @default.SelfLink,\n PeerNetwork = other.SelfLink,\n });\n\n var peering2 = new Gcp.Compute.NetworkPeering(\"peering2\", new()\n {\n Name = \"peering2\",\n Network = other.SelfLink,\n PeerNetwork = @default.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_default, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"foobar\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tother, err := compute.NewNetwork(ctx, \"other\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"other\"),\n\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.NewNetworkPeering(ctx, \"peering1\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peering1\"),\n\t\t\tNetwork: _default.SelfLink,\n\t\t\tPeerNetwork: other.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeering(ctx, \"peering2\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peering2\"),\n\t\t\tNetwork: other.SelfLink,\n\t\t\tPeerNetwork: _default.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.NetworkPeering;\nimport com.pulumi.gcp.compute.NetworkPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"foobar\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var other = new Network(\"other\", NetworkArgs.builder()\n .name(\"other\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var peering1 = new NetworkPeering(\"peering1\", NetworkPeeringArgs.builder()\n .name(\"peering1\")\n .network(default_.selfLink())\n .peerNetwork(other.selfLink())\n .build());\n\n var peering2 = new NetworkPeering(\"peering2\", NetworkPeeringArgs.builder()\n .name(\"peering2\")\n .network(other.selfLink())\n .peerNetwork(default_.selfLink())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peering1:\n type: gcp:compute:NetworkPeering\n properties:\n name: peering1\n network: ${default.selfLink}\n peerNetwork: ${other.selfLink}\n peering2:\n type: gcp:compute:NetworkPeering\n properties:\n name: peering2\n network: ${other.selfLink}\n peerNetwork: ${default.selfLink}\n default:\n type: gcp:compute:Network\n properties:\n name: foobar\n autoCreateSubnetworks: 'false'\n other:\n type: gcp:compute:Network\n properties:\n name: other\n autoCreateSubnetworks: 'false'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVPC network peerings can be imported using the name and project of the primary network the peering exists in and the name of the network peering\n\n* `{{project_id}}/{{network_id}}/{{peering_id}}`\n\nWhen using the `pulumi import` command, VPC network peerings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/networkPeering:NetworkPeering default {{project_id}}/{{network_id}}/{{peering_id}}\n```\n\n", "properties": { "exportCustomRoutes": { "type": "boolean", @@ -180335,7 +180335,7 @@ } }, "gcp:compute/nodeGroup:NodeGroup": { - "description": "Represents a NodeGroup resource to manage a group of sole-tenant nodes.\n\n\nTo get more information about NodeGroup, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups)\n* How-to Guides\n * [Sole-Tenant Nodes](https://cloud.google.com/compute/docs/nodes/)\n\n\u003e **Warning:** Due to limitations of the API, this provider cannot update the\nnumber of nodes in a node group and changes to node group size either\nthrough provider config or through external changes will cause\nthe provider to delete and recreate the node group.\n\n## Example Usage\n\n### Node Group Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"n1-node-96-624\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-a\",\n description: \"example google_compute_node_group for the Google Provider\",\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"n1-node-96-624\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-a\",\n description=\"example google_compute_node_group for the Google Provider\",\n initial_size=1,\n node_template=soletenant_tmpl.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"n1-node-96-624\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-a\",\n Description = \"example google_compute_node_group for the Google Provider\",\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"n1-node-96-624\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for the Google Provider\"),\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"n1-node-96-624\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-a\")\n .description(\"example google_compute_node_group for the Google Provider\")\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: n1-node-96-624\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-a\n description: example google_compute_node_group for the Google Provider\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Node Group Maintenance Interval\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"c2-node-60-240\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-a\",\n description: \"example google_compute_node_group for Terraform Google Provider\",\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n maintenanceInterval: \"RECURRENT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"c2-node-60-240\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-a\",\n description=\"example google_compute_node_group for Terraform Google Provider\",\n initial_size=1,\n node_template=soletenant_tmpl.id,\n maintenance_interval=\"RECURRENT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"c2-node-60-240\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-a\",\n Description = \"example google_compute_node_group for Terraform Google Provider\",\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n MaintenanceInterval = \"RECURRENT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"c2-node-60-240\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for Terraform Google Provider\"),\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t\tMaintenanceInterval: pulumi.String(\"RECURRENT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"c2-node-60-240\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-a\")\n .description(\"example google_compute_node_group for Terraform Google Provider\")\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .maintenanceInterval(\"RECURRENT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: c2-node-60-240\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-a\n description: example google_compute_node_group for Terraform Google Provider\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n maintenanceInterval: RECURRENT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Node Group Autoscaling Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"n1-node-96-624\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-a\",\n description: \"example google_compute_node_group for Google Provider\",\n maintenancePolicy: \"RESTART_IN_PLACE\",\n maintenanceWindow: {\n startTime: \"08:00\",\n },\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n autoscalingPolicy: {\n mode: \"ONLY_SCALE_OUT\",\n minNodes: 1,\n maxNodes: 10,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"n1-node-96-624\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-a\",\n description=\"example google_compute_node_group for Google Provider\",\n maintenance_policy=\"RESTART_IN_PLACE\",\n maintenance_window={\n \"start_time\": \"08:00\",\n },\n initial_size=1,\n node_template=soletenant_tmpl.id,\n autoscaling_policy={\n \"mode\": \"ONLY_SCALE_OUT\",\n \"min_nodes\": 1,\n \"max_nodes\": 10,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"n1-node-96-624\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-a\",\n Description = \"example google_compute_node_group for Google Provider\",\n MaintenancePolicy = \"RESTART_IN_PLACE\",\n MaintenanceWindow = new Gcp.Compute.Inputs.NodeGroupMaintenanceWindowArgs\n {\n StartTime = \"08:00\",\n },\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n AutoscalingPolicy = new Gcp.Compute.Inputs.NodeGroupAutoscalingPolicyArgs\n {\n Mode = \"ONLY_SCALE_OUT\",\n MinNodes = 1,\n MaxNodes = 10,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"n1-node-96-624\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for Google Provider\"),\n\t\t\tMaintenancePolicy: pulumi.String(\"RESTART_IN_PLACE\"),\n\t\t\tMaintenanceWindow: \u0026compute.NodeGroupMaintenanceWindowArgs{\n\t\t\t\tStartTime: pulumi.String(\"08:00\"),\n\t\t\t},\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t\tAutoscalingPolicy: \u0026compute.NodeGroupAutoscalingPolicyArgs{\n\t\t\t\tMode: pulumi.String(\"ONLY_SCALE_OUT\"),\n\t\t\t\tMinNodes: pulumi.Int(1),\n\t\t\t\tMaxNodes: pulumi.Int(10),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\nimport com.pulumi.gcp.compute.inputs.NodeGroupMaintenanceWindowArgs;\nimport com.pulumi.gcp.compute.inputs.NodeGroupAutoscalingPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"n1-node-96-624\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-a\")\n .description(\"example google_compute_node_group for Google Provider\")\n .maintenancePolicy(\"RESTART_IN_PLACE\")\n .maintenanceWindow(NodeGroupMaintenanceWindowArgs.builder()\n .startTime(\"08:00\")\n .build())\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .autoscalingPolicy(NodeGroupAutoscalingPolicyArgs.builder()\n .mode(\"ONLY_SCALE_OUT\")\n .minNodes(1)\n .maxNodes(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: n1-node-96-624\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-a\n description: example google_compute_node_group for Google Provider\n maintenancePolicy: RESTART_IN_PLACE\n maintenanceWindow:\n startTime: 08:00\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n autoscalingPolicy:\n mode: ONLY_SCALE_OUT\n minNodes: 1\n maxNodes: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Node Group Share Settings\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst guestProject = new gcp.organizations.Project(\"guest_project\", {\n projectId: \"project-id\",\n name: \"project-name\",\n orgId: \"123456789\",\n deletionPolicy: \"DELETE\",\n});\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"n1-node-96-624\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-f\",\n description: \"example google_compute_node_group for Terraform Google Provider\",\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n shareSettings: {\n shareType: \"SPECIFIC_PROJECTS\",\n projectMaps: [{\n id: guestProject.projectId,\n projectId: guestProject.projectId,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nguest_project = gcp.organizations.Project(\"guest_project\",\n project_id=\"project-id\",\n name=\"project-name\",\n org_id=\"123456789\",\n deletion_policy=\"DELETE\")\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"n1-node-96-624\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-f\",\n description=\"example google_compute_node_group for Terraform Google Provider\",\n initial_size=1,\n node_template=soletenant_tmpl.id,\n share_settings={\n \"share_type\": \"SPECIFIC_PROJECTS\",\n \"project_maps\": [{\n \"id\": guest_project.project_id,\n \"project_id\": guest_project.project_id,\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var guestProject = new Gcp.Organizations.Project(\"guest_project\", new()\n {\n ProjectId = \"project-id\",\n Name = \"project-name\",\n OrgId = \"123456789\",\n DeletionPolicy = \"DELETE\",\n });\n\n var soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"n1-node-96-624\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-f\",\n Description = \"example google_compute_node_group for Terraform Google Provider\",\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n ShareSettings = new Gcp.Compute.Inputs.NodeGroupShareSettingsArgs\n {\n ShareType = \"SPECIFIC_PROJECTS\",\n ProjectMaps = new[]\n {\n new Gcp.Compute.Inputs.NodeGroupShareSettingsProjectMapArgs\n {\n Id = guestProject.ProjectId,\n ProjectId = guestProject.ProjectId,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tguestProject, err := organizations.NewProject(ctx, \"guest_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"project-id\"),\n\t\t\tName: pulumi.String(\"project-name\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"n1-node-96-624\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for Terraform Google Provider\"),\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t\tShareSettings: \u0026compute.NodeGroupShareSettingsArgs{\n\t\t\t\tShareType: pulumi.String(\"SPECIFIC_PROJECTS\"),\n\t\t\t\tProjectMaps: compute.NodeGroupShareSettingsProjectMapArray{\n\t\t\t\t\t\u0026compute.NodeGroupShareSettingsProjectMapArgs{\n\t\t\t\t\t\tId: guestProject.ProjectId,\n\t\t\t\t\t\tProjectId: guestProject.ProjectId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.compute.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\nimport com.pulumi.gcp.compute.inputs.NodeGroupShareSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var guestProject = new Project(\"guestProject\", ProjectArgs.builder()\n .projectId(\"project-id\")\n .name(\"project-name\")\n .orgId(\"123456789\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"n1-node-96-624\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-f\")\n .description(\"example google_compute_node_group for Terraform Google Provider\")\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .shareSettings(NodeGroupShareSettingsArgs.builder()\n .shareType(\"SPECIFIC_PROJECTS\")\n .projectMaps(NodeGroupShareSettingsProjectMapArgs.builder()\n .id(guestProject.projectId())\n .projectId(guestProject.projectId())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n guestProject:\n type: gcp:organizations:Project\n name: guest_project\n properties:\n projectId: project-id\n name: project-name\n orgId: '123456789'\n deletionPolicy: DELETE\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: n1-node-96-624\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-f\n description: example google_compute_node_group for Terraform Google Provider\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n shareSettings:\n shareType: SPECIFIC_PROJECTS\n projectMaps:\n - id: ${guestProject.projectId}\n projectId: ${guestProject.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodeGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/nodeGroups/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NodeGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default projects/{{project}}/zones/{{zone}}/nodeGroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default {{name}}\n```\n\n", + "description": "Represents a NodeGroup resource to manage a group of sole-tenant nodes.\n\n\nTo get more information about NodeGroup, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/nodeGroups)\n* How-to Guides\n * [Sole-Tenant Nodes](https://cloud.google.com/compute/docs/nodes/)\n\n\u003e **Warning:** Due to limitations of the API, this provider cannot update the\nnumber of nodes in a node group and changes to node group size either\nthrough provider config or through external changes will cause\nthe provider to delete and recreate the node group.\n\n## Example Usage\n\n### Node Group Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"n1-node-96-624\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-a\",\n description: \"example google_compute_node_group for the Google Provider\",\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"n1-node-96-624\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-a\",\n description=\"example google_compute_node_group for the Google Provider\",\n initial_size=1,\n node_template=soletenant_tmpl.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"n1-node-96-624\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-a\",\n Description = \"example google_compute_node_group for the Google Provider\",\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tsoletenant_tmpl, err := compute.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"n1-node-96-624\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for the Google Provider\"),\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"n1-node-96-624\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-a\")\n .description(\"example google_compute_node_group for the Google Provider\")\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: n1-node-96-624\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-a\n description: example google_compute_node_group for the Google Provider\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Node Group Maintenance Interval\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"c2-node-60-240\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-a\",\n description: \"example google_compute_node_group for Terraform Google Provider\",\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n maintenanceInterval: \"RECURRENT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"c2-node-60-240\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-a\",\n description=\"example google_compute_node_group for Terraform Google Provider\",\n initial_size=1,\n node_template=soletenant_tmpl.id,\n maintenance_interval=\"RECURRENT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"c2-node-60-240\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-a\",\n Description = \"example google_compute_node_group for Terraform Google Provider\",\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n MaintenanceInterval = \"RECURRENT\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tsoletenant_tmpl, err := compute.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"c2-node-60-240\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for Terraform Google Provider\"),\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t\tMaintenanceInterval: pulumi.String(\"RECURRENT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"c2-node-60-240\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-a\")\n .description(\"example google_compute_node_group for Terraform Google Provider\")\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .maintenanceInterval(\"RECURRENT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: c2-node-60-240\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-a\n description: example google_compute_node_group for Terraform Google Provider\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n maintenanceInterval: RECURRENT\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Node Group Autoscaling Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"n1-node-96-624\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-a\",\n description: \"example google_compute_node_group for Google Provider\",\n maintenancePolicy: \"RESTART_IN_PLACE\",\n maintenanceWindow: {\n startTime: \"08:00\",\n },\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n autoscalingPolicy: {\n mode: \"ONLY_SCALE_OUT\",\n minNodes: 1,\n maxNodes: 10,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"n1-node-96-624\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-a\",\n description=\"example google_compute_node_group for Google Provider\",\n maintenance_policy=\"RESTART_IN_PLACE\",\n maintenance_window={\n \"start_time\": \"08:00\",\n },\n initial_size=1,\n node_template=soletenant_tmpl.id,\n autoscaling_policy={\n \"mode\": \"ONLY_SCALE_OUT\",\n \"min_nodes\": 1,\n \"max_nodes\": 10,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"n1-node-96-624\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-a\",\n Description = \"example google_compute_node_group for Google Provider\",\n MaintenancePolicy = \"RESTART_IN_PLACE\",\n MaintenanceWindow = new Gcp.Compute.Inputs.NodeGroupMaintenanceWindowArgs\n {\n StartTime = \"08:00\",\n },\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n AutoscalingPolicy = new Gcp.Compute.Inputs.NodeGroupAutoscalingPolicyArgs\n {\n Mode = \"ONLY_SCALE_OUT\",\n MinNodes = 1,\n MaxNodes = 10,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tsoletenant_tmpl, err := compute.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"n1-node-96-624\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for Google Provider\"),\n\t\t\tMaintenancePolicy: pulumi.String(\"RESTART_IN_PLACE\"),\n\t\t\tMaintenanceWindow: \u0026compute.NodeGroupMaintenanceWindowArgs{\n\t\t\t\tStartTime: pulumi.String(\"08:00\"),\n\t\t\t},\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t\tAutoscalingPolicy: \u0026compute.NodeGroupAutoscalingPolicyArgs{\n\t\t\t\tMode: pulumi.String(\"ONLY_SCALE_OUT\"),\n\t\t\t\tMinNodes: pulumi.Int(1),\n\t\t\t\tMaxNodes: pulumi.Int(10),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\nimport com.pulumi.gcp.compute.inputs.NodeGroupMaintenanceWindowArgs;\nimport com.pulumi.gcp.compute.inputs.NodeGroupAutoscalingPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"n1-node-96-624\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-a\")\n .description(\"example google_compute_node_group for Google Provider\")\n .maintenancePolicy(\"RESTART_IN_PLACE\")\n .maintenanceWindow(NodeGroupMaintenanceWindowArgs.builder()\n .startTime(\"08:00\")\n .build())\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .autoscalingPolicy(NodeGroupAutoscalingPolicyArgs.builder()\n .mode(\"ONLY_SCALE_OUT\")\n .minNodes(1)\n .maxNodes(10)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: n1-node-96-624\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-a\n description: example google_compute_node_group for Google Provider\n maintenancePolicy: RESTART_IN_PLACE\n maintenanceWindow:\n startTime: 08:00\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n autoscalingPolicy:\n mode: ONLY_SCALE_OUT\n minNodes: 1\n maxNodes: 10\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Node Group Share Settings\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst guestProject = new gcp.organizations.Project(\"guest_project\", {\n projectId: \"project-id\",\n name: \"project-name\",\n orgId: \"123456789\",\n deletionPolicy: \"DELETE\",\n});\nconst soletenant_tmpl = new gcp.compute.NodeTemplate(\"soletenant-tmpl\", {\n name: \"soletenant-tmpl\",\n region: \"us-central1\",\n nodeType: \"n1-node-96-624\",\n});\nconst nodes = new gcp.compute.NodeGroup(\"nodes\", {\n name: \"soletenant-group\",\n zone: \"us-central1-f\",\n description: \"example google_compute_node_group for Terraform Google Provider\",\n initialSize: 1,\n nodeTemplate: soletenant_tmpl.id,\n shareSettings: {\n shareType: \"SPECIFIC_PROJECTS\",\n projectMaps: [{\n id: guestProject.projectId,\n projectId: guestProject.projectId,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nguest_project = gcp.organizations.Project(\"guest_project\",\n project_id=\"project-id\",\n name=\"project-name\",\n org_id=\"123456789\",\n deletion_policy=\"DELETE\")\nsoletenant_tmpl = gcp.compute.NodeTemplate(\"soletenant-tmpl\",\n name=\"soletenant-tmpl\",\n region=\"us-central1\",\n node_type=\"n1-node-96-624\")\nnodes = gcp.compute.NodeGroup(\"nodes\",\n name=\"soletenant-group\",\n zone=\"us-central1-f\",\n description=\"example google_compute_node_group for Terraform Google Provider\",\n initial_size=1,\n node_template=soletenant_tmpl.id,\n share_settings={\n \"share_type\": \"SPECIFIC_PROJECTS\",\n \"project_maps\": [{\n \"id\": guest_project.project_id,\n \"project_id\": guest_project.project_id,\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var guestProject = new Gcp.Organizations.Project(\"guest_project\", new()\n {\n ProjectId = \"project-id\",\n Name = \"project-name\",\n OrgId = \"123456789\",\n DeletionPolicy = \"DELETE\",\n });\n\n var soletenant_tmpl = new Gcp.Compute.NodeTemplate(\"soletenant-tmpl\", new()\n {\n Name = \"soletenant-tmpl\",\n Region = \"us-central1\",\n NodeType = \"n1-node-96-624\",\n });\n\n var nodes = new Gcp.Compute.NodeGroup(\"nodes\", new()\n {\n Name = \"soletenant-group\",\n Zone = \"us-central1-f\",\n Description = \"example google_compute_node_group for Terraform Google Provider\",\n InitialSize = 1,\n NodeTemplate = soletenant_tmpl.Id,\n ShareSettings = new Gcp.Compute.Inputs.NodeGroupShareSettingsArgs\n {\n ShareType = \"SPECIFIC_PROJECTS\",\n ProjectMaps = new[]\n {\n new Gcp.Compute.Inputs.NodeGroupShareSettingsProjectMapArgs\n {\n Id = guestProject.ProjectId,\n ProjectId = guestProject.ProjectId,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tguestProject, err := organizations.NewProject(ctx, \"guest_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"project-id\"),\n\t\t\tName: pulumi.String(\"project-name\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsoletenant_tmpl, err := compute.NewNodeTemplate(ctx, \"soletenant-tmpl\", \u0026compute.NodeTemplateArgs{\n\t\t\tName: pulumi.String(\"soletenant-tmpl\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNodeType: pulumi.String(\"n1-node-96-624\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNodeGroup(ctx, \"nodes\", \u0026compute.NodeGroupArgs{\n\t\t\tName: pulumi.String(\"soletenant-group\"),\n\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\tDescription: pulumi.String(\"example google_compute_node_group for Terraform Google Provider\"),\n\t\t\tInitialSize: pulumi.Int(1),\n\t\t\tNodeTemplate: soletenant_tmpl.ID(),\n\t\t\tShareSettings: \u0026compute.NodeGroupShareSettingsArgs{\n\t\t\t\tShareType: pulumi.String(\"SPECIFIC_PROJECTS\"),\n\t\t\t\tProjectMaps: compute.NodeGroupShareSettingsProjectMapArray{\n\t\t\t\t\t\u0026compute.NodeGroupShareSettingsProjectMapArgs{\n\t\t\t\t\t\tId: guestProject.ProjectId,\n\t\t\t\t\t\tProjectId: guestProject.ProjectId,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.compute.NodeTemplate;\nimport com.pulumi.gcp.compute.NodeTemplateArgs;\nimport com.pulumi.gcp.compute.NodeGroup;\nimport com.pulumi.gcp.compute.NodeGroupArgs;\nimport com.pulumi.gcp.compute.inputs.NodeGroupShareSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var guestProject = new Project(\"guestProject\", ProjectArgs.builder()\n .projectId(\"project-id\")\n .name(\"project-name\")\n .orgId(\"123456789\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var soletenant_tmpl = new NodeTemplate(\"soletenant-tmpl\", NodeTemplateArgs.builder()\n .name(\"soletenant-tmpl\")\n .region(\"us-central1\")\n .nodeType(\"n1-node-96-624\")\n .build());\n\n var nodes = new NodeGroup(\"nodes\", NodeGroupArgs.builder()\n .name(\"soletenant-group\")\n .zone(\"us-central1-f\")\n .description(\"example google_compute_node_group for Terraform Google Provider\")\n .initialSize(1)\n .nodeTemplate(soletenant_tmpl.id())\n .shareSettings(NodeGroupShareSettingsArgs.builder()\n .shareType(\"SPECIFIC_PROJECTS\")\n .projectMaps(NodeGroupShareSettingsProjectMapArgs.builder()\n .id(guestProject.projectId())\n .projectId(guestProject.projectId())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n guestProject:\n type: gcp:organizations:Project\n name: guest_project\n properties:\n projectId: project-id\n name: project-name\n orgId: '123456789'\n deletionPolicy: DELETE\n soletenant-tmpl:\n type: gcp:compute:NodeTemplate\n properties:\n name: soletenant-tmpl\n region: us-central1\n nodeType: n1-node-96-624\n nodes:\n type: gcp:compute:NodeGroup\n properties:\n name: soletenant-group\n zone: us-central1-f\n description: example google_compute_node_group for Terraform Google Provider\n initialSize: 1\n nodeTemplate: ${[\"soletenant-tmpl\"].id}\n shareSettings:\n shareType: SPECIFIC_PROJECTS\n projectMaps:\n - id: ${guestProject.projectId}\n projectId: ${guestProject.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNodeGroup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/nodeGroups/{{name}}`\n\n* `{{project}}/{{zone}}/{{name}}`\n\n* `{{zone}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NodeGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default projects/{{project}}/zones/{{zone}}/nodeGroups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default {{project}}/{{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default {{zone}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/nodeGroup:NodeGroup default {{name}}\n```\n\n", "properties": { "autoscalingPolicy": { "$ref": "#/types/gcp:compute/NodeGroupAutoscalingPolicy:NodeGroupAutoscalingPolicy", @@ -181072,7 +181072,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\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", + "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_default, 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", @@ -181210,7 +181210,7 @@ } }, "gcp:compute/perInstanceConfig:PerInstanceConfig": { - "description": "A config defined for a single managed instance that belongs to an instance group manager. It preserves the instance name\nacross instance group manager operations and can define stateful disks or metadata that are unique to the instance.\n\n\nTo get more information about PerInstanceConfig, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/instance-groups/stateful-migs#per-instance_configs)\n\n## Example Usage\n\n### Stateful Igm\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst igm_basic = new gcp.compute.InstanceTemplate(\"igm-basic\", {\n name: \"my-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst igm_no_tp = new gcp.compute.InstanceGroupManager(\"igm-no-tp\", {\n description: \"Test instance group manager\",\n name: \"my-igm\",\n versions: [{\n name: \"prod\",\n instanceTemplate: igm_basic.selfLink,\n }],\n baseInstanceName: \"igm-no-tp\",\n zone: \"us-central1-c\",\n targetSize: 2,\n});\nconst _default = new gcp.compute.Disk(\"default\", {\n name: \"my-disk-name\",\n type: \"pd-ssd\",\n zone: igm.zone,\n image: \"debian-11-bullseye-v20220719\",\n physicalBlockSizeBytes: 4096,\n});\nconst withDisk = new gcp.compute.PerInstanceConfig(\"with_disk\", {\n zone: igm.zone,\n instanceGroupManager: igm.name,\n name: \"instance-1\",\n preservedState: {\n metadata: {\n foo: \"bar\",\n instance_template: igm_basic.selfLink,\n },\n disks: [{\n deviceName: \"my-stateful-disk\",\n source: _default.id,\n mode: \"READ_ONLY\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nigm_basic = gcp.compute.InstanceTemplate(\"igm-basic\",\n name=\"my-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"source_image\": my_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nigm_no_tp = gcp.compute.InstanceGroupManager(\"igm-no-tp\",\n description=\"Test instance group manager\",\n name=\"my-igm\",\n versions=[{\n \"name\": \"prod\",\n \"instance_template\": igm_basic.self_link,\n }],\n base_instance_name=\"igm-no-tp\",\n zone=\"us-central1-c\",\n target_size=2)\ndefault = gcp.compute.Disk(\"default\",\n name=\"my-disk-name\",\n type=\"pd-ssd\",\n zone=igm[\"zone\"],\n image=\"debian-11-bullseye-v20220719\",\n physical_block_size_bytes=4096)\nwith_disk = gcp.compute.PerInstanceConfig(\"with_disk\",\n zone=igm[\"zone\"],\n instance_group_manager=igm[\"name\"],\n name=\"instance-1\",\n preserved_state={\n \"metadata\": {\n \"foo\": \"bar\",\n \"instance_template\": igm_basic.self_link,\n },\n \"disks\": [{\n \"device_name\": \"my-stateful-disk\",\n \"source\": default.id,\n \"mode\": \"READ_ONLY\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var igm_basic = new Gcp.Compute.InstanceTemplate(\"igm-basic\", new()\n {\n Name = \"my-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var igm_no_tp = new Gcp.Compute.InstanceGroupManager(\"igm-no-tp\", new()\n {\n Description = \"Test instance group manager\",\n Name = \"my-igm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n Name = \"prod\",\n InstanceTemplate = igm_basic.SelfLink,\n },\n },\n BaseInstanceName = \"igm-no-tp\",\n Zone = \"us-central1-c\",\n TargetSize = 2,\n });\n\n var @default = new Gcp.Compute.Disk(\"default\", new()\n {\n Name = \"my-disk-name\",\n Type = \"pd-ssd\",\n Zone = igm.Zone,\n Image = \"debian-11-bullseye-v20220719\",\n PhysicalBlockSizeBytes = 4096,\n });\n\n var withDisk = new Gcp.Compute.PerInstanceConfig(\"with_disk\", new()\n {\n Zone = igm.Zone,\n InstanceGroupManager = igm.Name,\n Name = \"instance-1\",\n PreservedState = new Gcp.Compute.Inputs.PerInstanceConfigPreservedStateArgs\n {\n Metadata = \n {\n { \"foo\", \"bar\" },\n { \"instance_template\", igm_basic.SelfLink },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.PerInstanceConfigPreservedStateDiskArgs\n {\n DeviceName = \"my-stateful-disk\",\n Source = @default.Id,\n Mode = \"READ_ONLY\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"igm-basic\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroupManager(ctx, \"igm-no-tp\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tDescription: pulumi.String(\"Test instance group manager\"),\n\t\t\tName: pulumi.String(\"my-igm\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"prod\"),\n\t\t\t\t\tInstanceTemplate: igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"igm-no-tp\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewDisk(ctx, \"default\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"my-disk-name\"),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.Any(igm.Zone),\n\t\t\tImage: pulumi.String(\"debian-11-bullseye-v20220719\"),\n\t\t\tPhysicalBlockSizeBytes: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewPerInstanceConfig(ctx, \"with_disk\", \u0026compute.PerInstanceConfigArgs{\n\t\t\tZone: pulumi.Any(igm.Zone),\n\t\t\tInstanceGroupManager: pulumi.Any(igm.Name),\n\t\t\tName: pulumi.String(\"instance-1\"),\n\t\t\tPreservedState: \u0026compute.PerInstanceConfigPreservedStateArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"instance_template\": igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t\tDisks: compute.PerInstanceConfigPreservedStateDiskArray{\n\t\t\t\t\t\u0026compute.PerInstanceConfigPreservedStateDiskArgs{\n\t\t\t\t\t\tDeviceName: pulumi.String(\"my-stateful-disk\"),\n\t\t\t\t\t\tSource: _default.ID(),\n\t\t\t\t\t\tMode: pulumi.String(\"READ_ONLY\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.PerInstanceConfig;\nimport com.pulumi.gcp.compute.PerInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.PerInstanceConfigPreservedStateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var igm_basic = new InstanceTemplate(\"igm-basic\", InstanceTemplateArgs.builder()\n .name(\"my-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n var igm_no_tp = new InstanceGroupManager(\"igm-no-tp\", InstanceGroupManagerArgs.builder()\n .description(\"Test instance group manager\")\n .name(\"my-igm\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .name(\"prod\")\n .instanceTemplate(igm_basic.selfLink())\n .build())\n .baseInstanceName(\"igm-no-tp\")\n .zone(\"us-central1-c\")\n .targetSize(2)\n .build());\n\n var default_ = new Disk(\"default\", DiskArgs.builder()\n .name(\"my-disk-name\")\n .type(\"pd-ssd\")\n .zone(igm.zone())\n .image(\"debian-11-bullseye-v20220719\")\n .physicalBlockSizeBytes(4096)\n .build());\n\n var withDisk = new PerInstanceConfig(\"withDisk\", PerInstanceConfigArgs.builder()\n .zone(igm.zone())\n .instanceGroupManager(igm.name())\n .name(\"instance-1\")\n .preservedState(PerInstanceConfigPreservedStateArgs.builder()\n .metadata(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"instance_template\", igm_basic.selfLink())\n ))\n .disks(PerInstanceConfigPreservedStateDiskArgs.builder()\n .deviceName(\"my-stateful-disk\")\n .source(default_.id())\n .mode(\"READ_ONLY\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-basic:\n type: gcp:compute:InstanceTemplate\n properties:\n name: my-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${myImage.selfLink}\n autoDelete: true\n boot: true\n networkInterfaces:\n - network: default\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\n igm-no-tp:\n type: gcp:compute:InstanceGroupManager\n properties:\n description: Test instance group manager\n name: my-igm\n versions:\n - name: prod\n instanceTemplate: ${[\"igm-basic\"].selfLink}\n baseInstanceName: igm-no-tp\n zone: us-central1-c\n targetSize: 2\n default:\n type: gcp:compute:Disk\n properties:\n name: my-disk-name\n type: pd-ssd\n zone: ${igm.zone}\n image: debian-11-bullseye-v20220719\n physicalBlockSizeBytes: 4096\n withDisk:\n type: gcp:compute:PerInstanceConfig\n name: with_disk\n properties:\n zone: ${igm.zone}\n instanceGroupManager: ${igm.name}\n name: instance-1\n preservedState:\n metadata:\n foo: bar\n instance_template: ${[\"igm-basic\"].selfLink}\n disks:\n - deviceName: my-stateful-disk\n source: ${default.id}\n mode: READ_ONLY\nvariables:\n myImage:\n fn::invoke:\n function: gcp:compute:getImage\n arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPerInstanceConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/{{name}}`\n\n* `{{project}}/{{zone}}/{{instance_group_manager}}/{{name}}`\n\n* `{{zone}}/{{instance_group_manager}}/{{name}}`\n\n* `{{instance_group_manager}}/{{name}}`\n\nWhen using the `pulumi import` command, PerInstanceConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{project}}/{{zone}}/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{zone}}/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{instance_group_manager}}/{{name}}\n```\n\n", + "description": "A config defined for a single managed instance that belongs to an instance group manager. It preserves the instance name\nacross instance group manager operations and can define stateful disks or metadata that are unique to the instance.\n\n\nTo get more information about PerInstanceConfig, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/instance-groups/stateful-migs#per-instance_configs)\n\n## Example Usage\n\n### Stateful Igm\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst igm_basic = new gcp.compute.InstanceTemplate(\"igm-basic\", {\n name: \"my-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst igm_no_tp = new gcp.compute.InstanceGroupManager(\"igm-no-tp\", {\n description: \"Test instance group manager\",\n name: \"my-igm\",\n versions: [{\n name: \"prod\",\n instanceTemplate: igm_basic.selfLink,\n }],\n baseInstanceName: \"igm-no-tp\",\n zone: \"us-central1-c\",\n targetSize: 2,\n});\nconst _default = new gcp.compute.Disk(\"default\", {\n name: \"my-disk-name\",\n type: \"pd-ssd\",\n zone: igm.zone,\n image: \"debian-11-bullseye-v20220719\",\n physicalBlockSizeBytes: 4096,\n});\nconst withDisk = new gcp.compute.PerInstanceConfig(\"with_disk\", {\n zone: igm.zone,\n instanceGroupManager: igm.name,\n name: \"instance-1\",\n preservedState: {\n metadata: {\n foo: \"bar\",\n instance_template: igm_basic.selfLink,\n },\n disks: [{\n deviceName: \"my-stateful-disk\",\n source: _default.id,\n mode: \"READ_ONLY\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nigm_basic = gcp.compute.InstanceTemplate(\"igm-basic\",\n name=\"my-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"source_image\": my_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nigm_no_tp = gcp.compute.InstanceGroupManager(\"igm-no-tp\",\n description=\"Test instance group manager\",\n name=\"my-igm\",\n versions=[{\n \"name\": \"prod\",\n \"instance_template\": igm_basic.self_link,\n }],\n base_instance_name=\"igm-no-tp\",\n zone=\"us-central1-c\",\n target_size=2)\ndefault = gcp.compute.Disk(\"default\",\n name=\"my-disk-name\",\n type=\"pd-ssd\",\n zone=igm[\"zone\"],\n image=\"debian-11-bullseye-v20220719\",\n physical_block_size_bytes=4096)\nwith_disk = gcp.compute.PerInstanceConfig(\"with_disk\",\n zone=igm[\"zone\"],\n instance_group_manager=igm[\"name\"],\n name=\"instance-1\",\n preserved_state={\n \"metadata\": {\n \"foo\": \"bar\",\n \"instance_template\": igm_basic.self_link,\n },\n \"disks\": [{\n \"device_name\": \"my-stateful-disk\",\n \"source\": default.id,\n \"mode\": \"READ_ONLY\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var igm_basic = new Gcp.Compute.InstanceTemplate(\"igm-basic\", new()\n {\n Name = \"my-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var igm_no_tp = new Gcp.Compute.InstanceGroupManager(\"igm-no-tp\", new()\n {\n Description = \"Test instance group manager\",\n Name = \"my-igm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.InstanceGroupManagerVersionArgs\n {\n Name = \"prod\",\n InstanceTemplate = igm_basic.SelfLink,\n },\n },\n BaseInstanceName = \"igm-no-tp\",\n Zone = \"us-central1-c\",\n TargetSize = 2,\n });\n\n var @default = new Gcp.Compute.Disk(\"default\", new()\n {\n Name = \"my-disk-name\",\n Type = \"pd-ssd\",\n Zone = igm.Zone,\n Image = \"debian-11-bullseye-v20220719\",\n PhysicalBlockSizeBytes = 4096,\n });\n\n var withDisk = new Gcp.Compute.PerInstanceConfig(\"with_disk\", new()\n {\n Zone = igm.Zone,\n InstanceGroupManager = igm.Name,\n Name = \"instance-1\",\n PreservedState = new Gcp.Compute.Inputs.PerInstanceConfigPreservedStateArgs\n {\n Metadata = \n {\n { \"foo\", \"bar\" },\n { \"instance_template\", igm_basic.SelfLink },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.PerInstanceConfigPreservedStateDiskArgs\n {\n DeviceName = \"my-stateful-disk\",\n Source = @default.Id,\n Mode = \"READ_ONLY\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tigm_basic, err := compute.NewInstanceTemplate(ctx, \"igm-basic\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstanceGroupManager(ctx, \"igm-no-tp\", \u0026compute.InstanceGroupManagerArgs{\n\t\t\tDescription: pulumi.String(\"Test instance group manager\"),\n\t\t\tName: pulumi.String(\"my-igm\"),\n\t\t\tVersions: compute.InstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.InstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"prod\"),\n\t\t\t\t\tInstanceTemplate: igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"igm-no-tp\"),\n\t\t\tZone: pulumi.String(\"us-central1-c\"),\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewDisk(ctx, \"default\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"my-disk-name\"),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.Any(igm.Zone),\n\t\t\tImage: pulumi.String(\"debian-11-bullseye-v20220719\"),\n\t\t\tPhysicalBlockSizeBytes: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewPerInstanceConfig(ctx, \"with_disk\", \u0026compute.PerInstanceConfigArgs{\n\t\t\tZone: pulumi.Any(igm.Zone),\n\t\t\tInstanceGroupManager: pulumi.Any(igm.Name),\n\t\t\tName: pulumi.String(\"instance-1\"),\n\t\t\tPreservedState: \u0026compute.PerInstanceConfigPreservedStateArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"instance_template\": igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t\tDisks: compute.PerInstanceConfigPreservedStateDiskArray{\n\t\t\t\t\t\u0026compute.PerInstanceConfigPreservedStateDiskArgs{\n\t\t\t\t\t\tDeviceName: pulumi.String(\"my-stateful-disk\"),\n\t\t\t\t\t\tSource: _default.ID(),\n\t\t\t\t\t\tMode: pulumi.String(\"READ_ONLY\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.InstanceGroupManager;\nimport com.pulumi.gcp.compute.InstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.PerInstanceConfig;\nimport com.pulumi.gcp.compute.PerInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.PerInstanceConfigPreservedStateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var igm_basic = new InstanceTemplate(\"igm-basic\", InstanceTemplateArgs.builder()\n .name(\"my-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n var igm_no_tp = new InstanceGroupManager(\"igm-no-tp\", InstanceGroupManagerArgs.builder()\n .description(\"Test instance group manager\")\n .name(\"my-igm\")\n .versions(InstanceGroupManagerVersionArgs.builder()\n .name(\"prod\")\n .instanceTemplate(igm_basic.selfLink())\n .build())\n .baseInstanceName(\"igm-no-tp\")\n .zone(\"us-central1-c\")\n .targetSize(2)\n .build());\n\n var default_ = new Disk(\"default\", DiskArgs.builder()\n .name(\"my-disk-name\")\n .type(\"pd-ssd\")\n .zone(igm.zone())\n .image(\"debian-11-bullseye-v20220719\")\n .physicalBlockSizeBytes(4096)\n .build());\n\n var withDisk = new PerInstanceConfig(\"withDisk\", PerInstanceConfigArgs.builder()\n .zone(igm.zone())\n .instanceGroupManager(igm.name())\n .name(\"instance-1\")\n .preservedState(PerInstanceConfigPreservedStateArgs.builder()\n .metadata(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"instance_template\", igm_basic.selfLink())\n ))\n .disks(PerInstanceConfigPreservedStateDiskArgs.builder()\n .deviceName(\"my-stateful-disk\")\n .source(default_.id())\n .mode(\"READ_ONLY\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-basic:\n type: gcp:compute:InstanceTemplate\n properties:\n name: my-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${myImage.selfLink}\n autoDelete: true\n boot: true\n networkInterfaces:\n - network: default\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\n igm-no-tp:\n type: gcp:compute:InstanceGroupManager\n properties:\n description: Test instance group manager\n name: my-igm\n versions:\n - name: prod\n instanceTemplate: ${[\"igm-basic\"].selfLink}\n baseInstanceName: igm-no-tp\n zone: us-central1-c\n targetSize: 2\n default:\n type: gcp:compute:Disk\n properties:\n name: my-disk-name\n type: pd-ssd\n zone: ${igm.zone}\n image: debian-11-bullseye-v20220719\n physicalBlockSizeBytes: 4096\n withDisk:\n type: gcp:compute:PerInstanceConfig\n name: with_disk\n properties:\n zone: ${igm.zone}\n instanceGroupManager: ${igm.name}\n name: instance-1\n preservedState:\n metadata:\n foo: bar\n instance_template: ${[\"igm-basic\"].selfLink}\n disks:\n - deviceName: my-stateful-disk\n source: ${default.id}\n mode: READ_ONLY\nvariables:\n myImage:\n fn::invoke:\n function: gcp:compute:getImage\n arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPerInstanceConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/{{name}}`\n\n* `{{project}}/{{zone}}/{{instance_group_manager}}/{{name}}`\n\n* `{{zone}}/{{instance_group_manager}}/{{name}}`\n\n* `{{instance_group_manager}}/{{name}}`\n\nWhen using the `pulumi import` command, PerInstanceConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{project}}/{{zone}}/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{zone}}/{{instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/perInstanceConfig:PerInstanceConfig default {{instance_group_manager}}/{{name}}\n```\n\n", "properties": { "instanceGroupManager": { "type": "string", @@ -185012,7 +185012,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\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", + "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_default, 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_default, 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_default, 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", @@ -185156,7 +185156,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 uniformBucketLevelAccess: true,\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-neg\",\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\",\n uniform_bucket_level_access=True)\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-neg\",\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 UniformBucketLevelAccess = true,\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-neg\",\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\tUniformBucketLevelAccess: pulumi.Bool(true),\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-neg\"),\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 .uniformBucketLevelAccess(true)\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-neg\")\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-neg\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 uniformBucketLevelAccess: true\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 ports: [\n \"80\",\n \"88\",\n \"443\",\n ],\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 pscData: {\n producerPort: \"88\",\n },\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 ports=[\n \"80\",\n \"88\",\n \"443\",\n ],\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 psc_data={\n \"producer_port\": \"88\",\n },\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 Ports = new[]\n {\n \"80\",\n \"88\",\n \"443\",\n },\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 PscData = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupPscDataArgs\n {\n ProducerPort = \"88\",\n },\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\tPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"80\"),\n\t\t\t\tpulumi.String(\"88\"),\n\t\t\t\tpulumi.String(\"443\"),\n\t\t\t},\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\tPscData: \u0026compute.RegionNetworkEndpointGroupPscDataArgs{\n\t\t\t\tProducerPort: pulumi.String(\"88\"),\n\t\t\t},\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 com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupPscDataArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 .ports( \n \"80\",\n \"88\",\n \"443\")\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 .pscData(RegionNetworkEndpointGroupPscDataArgs.builder()\n .producerPort(\"88\")\n .build())\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 ports:\n - '80'\n - '88'\n - '443'\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 pscData:\n producerPort: '88'\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 uniformBucketLevelAccess: true,\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-neg\",\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\",\n uniform_bucket_level_access=True)\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-neg\",\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 UniformBucketLevelAccess = true,\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-neg\",\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\tUniformBucketLevelAccess: pulumi.Bool(true),\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-neg\"),\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 .uniformBucketLevelAccess(true)\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-neg\")\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-neg\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 uniformBucketLevelAccess: true\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 ports: [\n \"80\",\n \"88\",\n \"443\",\n ],\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 pscData: {\n producerPort: \"88\",\n },\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 ports=[\n \"80\",\n \"88\",\n \"443\",\n ],\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 psc_data={\n \"producer_port\": \"88\",\n },\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 Ports = new[]\n {\n \"80\",\n \"88\",\n \"443\",\n },\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 PscData = new Gcp.Compute.Inputs.RegionNetworkEndpointGroupPscDataArgs\n {\n ProducerPort = \"88\",\n },\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_default, 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\tPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"80\"),\n\t\t\t\tpulumi.String(\"88\"),\n\t\t\t\tpulumi.String(\"443\"),\n\t\t\t},\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\tPscData: \u0026compute.RegionNetworkEndpointGroupPscDataArgs{\n\t\t\t\tProducerPort: pulumi.String(\"88\"),\n\t\t\t},\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 com.pulumi.gcp.compute.inputs.RegionNetworkEndpointGroupPscDataArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 .ports( \n \"80\",\n \"88\",\n \"443\")\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 .pscData(RegionNetworkEndpointGroupPscDataArgs.builder()\n .producerPort(\"88\")\n .build())\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 ports:\n - '80'\n - '88'\n - '443'\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 pscData:\n producerPort: '88'\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_default, 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_default, 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_default, 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", @@ -186020,7 +186020,7 @@ } }, "gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig": { - "description": "A config defined for a single managed instance that belongs to an instance group manager. It preserves the instance name\nacross instance group manager operations and can define stateful disks or metadata that are unique to the instance.\nThis resource works with regional instance group managers.\n\n\nTo get more information about RegionPerInstanceConfig, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/instance-groups/stateful-migs#per-instance_configs)\n\n## Example Usage\n\n### Stateful Rigm\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst igm_basic = new gcp.compute.InstanceTemplate(\"igm-basic\", {\n name: \"my-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst rigm = new gcp.compute.RegionInstanceGroupManager(\"rigm\", {\n description: \"Demo test instance group manager\",\n name: \"my-rigm\",\n versions: [{\n name: \"prod\",\n instanceTemplate: igm_basic.selfLink,\n }],\n updatePolicy: {\n type: \"OPPORTUNISTIC\",\n instanceRedistributionType: \"NONE\",\n minimalAction: \"RESTART\",\n },\n baseInstanceName: \"rigm\",\n region: \"us-central1\",\n targetSize: 2,\n});\nconst _default = new gcp.compute.Disk(\"default\", {\n name: \"my-disk-name\",\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n image: \"debian-11-bullseye-v20220719\",\n physicalBlockSizeBytes: 4096,\n});\nconst withDisk = new gcp.compute.RegionPerInstanceConfig(\"with_disk\", {\n region: igm.region,\n regionInstanceGroupManager: rigm.name,\n name: \"instance-1\",\n preservedState: {\n metadata: {\n foo: \"bar\",\n instance_template: igm_basic.selfLink,\n },\n disks: [{\n deviceName: \"my-stateful-disk\",\n source: _default.id,\n mode: \"READ_ONLY\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nigm_basic = gcp.compute.InstanceTemplate(\"igm-basic\",\n name=\"my-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"source_image\": my_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nrigm = gcp.compute.RegionInstanceGroupManager(\"rigm\",\n description=\"Demo test instance group manager\",\n name=\"my-rigm\",\n versions=[{\n \"name\": \"prod\",\n \"instance_template\": igm_basic.self_link,\n }],\n update_policy={\n \"type\": \"OPPORTUNISTIC\",\n \"instance_redistribution_type\": \"NONE\",\n \"minimal_action\": \"RESTART\",\n },\n base_instance_name=\"rigm\",\n region=\"us-central1\",\n target_size=2)\ndefault = gcp.compute.Disk(\"default\",\n name=\"my-disk-name\",\n type=\"pd-ssd\",\n zone=\"us-central1-a\",\n image=\"debian-11-bullseye-v20220719\",\n physical_block_size_bytes=4096)\nwith_disk = gcp.compute.RegionPerInstanceConfig(\"with_disk\",\n region=igm[\"region\"],\n region_instance_group_manager=rigm.name,\n name=\"instance-1\",\n preserved_state={\n \"metadata\": {\n \"foo\": \"bar\",\n \"instance_template\": igm_basic.self_link,\n },\n \"disks\": [{\n \"device_name\": \"my-stateful-disk\",\n \"source\": default.id,\n \"mode\": \"READ_ONLY\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var igm_basic = new Gcp.Compute.InstanceTemplate(\"igm-basic\", new()\n {\n Name = \"my-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var rigm = new Gcp.Compute.RegionInstanceGroupManager(\"rigm\", new()\n {\n Description = \"Demo test instance group manager\",\n Name = \"my-rigm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n Name = \"prod\",\n InstanceTemplate = igm_basic.SelfLink,\n },\n },\n UpdatePolicy = new Gcp.Compute.Inputs.RegionInstanceGroupManagerUpdatePolicyArgs\n {\n Type = \"OPPORTUNISTIC\",\n InstanceRedistributionType = \"NONE\",\n MinimalAction = \"RESTART\",\n },\n BaseInstanceName = \"rigm\",\n Region = \"us-central1\",\n TargetSize = 2,\n });\n\n var @default = new Gcp.Compute.Disk(\"default\", new()\n {\n Name = \"my-disk-name\",\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n Image = \"debian-11-bullseye-v20220719\",\n PhysicalBlockSizeBytes = 4096,\n });\n\n var withDisk = new Gcp.Compute.RegionPerInstanceConfig(\"with_disk\", new()\n {\n Region = igm.Region,\n RegionInstanceGroupManager = rigm.Name,\n Name = \"instance-1\",\n PreservedState = new Gcp.Compute.Inputs.RegionPerInstanceConfigPreservedStateArgs\n {\n Metadata = \n {\n { \"foo\", \"bar\" },\n { \"instance_template\", igm_basic.SelfLink },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.RegionPerInstanceConfigPreservedStateDiskArgs\n {\n DeviceName = \"my-stateful-disk\",\n Source = @default.Id,\n Mode = \"READ_ONLY\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"igm-basic\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trigm, err := compute.NewRegionInstanceGroupManager(ctx, \"rigm\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tDescription: pulumi.String(\"Demo test instance group manager\"),\n\t\t\tName: pulumi.String(\"my-rigm\"),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"prod\"),\n\t\t\t\t\tInstanceTemplate: igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tUpdatePolicy: \u0026compute.RegionInstanceGroupManagerUpdatePolicyArgs{\n\t\t\t\tType: pulumi.String(\"OPPORTUNISTIC\"),\n\t\t\t\tInstanceRedistributionType: pulumi.String(\"NONE\"),\n\t\t\t\tMinimalAction: pulumi.String(\"RESTART\"),\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"rigm\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewDisk(ctx, \"default\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"my-disk-name\"),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tImage: pulumi.String(\"debian-11-bullseye-v20220719\"),\n\t\t\tPhysicalBlockSizeBytes: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionPerInstanceConfig(ctx, \"with_disk\", \u0026compute.RegionPerInstanceConfigArgs{\n\t\t\tRegion: pulumi.Any(igm.Region),\n\t\t\tRegionInstanceGroupManager: rigm.Name,\n\t\t\tName: pulumi.String(\"instance-1\"),\n\t\t\tPreservedState: \u0026compute.RegionPerInstanceConfigPreservedStateArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"instance_template\": igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t\tDisks: compute.RegionPerInstanceConfigPreservedStateDiskArray{\n\t\t\t\t\t\u0026compute.RegionPerInstanceConfigPreservedStateDiskArgs{\n\t\t\t\t\t\tDeviceName: pulumi.String(\"my-stateful-disk\"),\n\t\t\t\t\t\tSource: _default.ID(),\n\t\t\t\t\t\tMode: pulumi.String(\"READ_ONLY\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerUpdatePolicyArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.RegionPerInstanceConfig;\nimport com.pulumi.gcp.compute.RegionPerInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.RegionPerInstanceConfigPreservedStateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var igm_basic = new InstanceTemplate(\"igm-basic\", InstanceTemplateArgs.builder()\n .name(\"my-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder()\n .description(\"Demo test instance group manager\")\n .name(\"my-rigm\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .name(\"prod\")\n .instanceTemplate(igm_basic.selfLink())\n .build())\n .updatePolicy(RegionInstanceGroupManagerUpdatePolicyArgs.builder()\n .type(\"OPPORTUNISTIC\")\n .instanceRedistributionType(\"NONE\")\n .minimalAction(\"RESTART\")\n .build())\n .baseInstanceName(\"rigm\")\n .region(\"us-central1\")\n .targetSize(2)\n .build());\n\n var default_ = new Disk(\"default\", DiskArgs.builder()\n .name(\"my-disk-name\")\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .image(\"debian-11-bullseye-v20220719\")\n .physicalBlockSizeBytes(4096)\n .build());\n\n var withDisk = new RegionPerInstanceConfig(\"withDisk\", RegionPerInstanceConfigArgs.builder()\n .region(igm.region())\n .regionInstanceGroupManager(rigm.name())\n .name(\"instance-1\")\n .preservedState(RegionPerInstanceConfigPreservedStateArgs.builder()\n .metadata(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"instance_template\", igm_basic.selfLink())\n ))\n .disks(RegionPerInstanceConfigPreservedStateDiskArgs.builder()\n .deviceName(\"my-stateful-disk\")\n .source(default_.id())\n .mode(\"READ_ONLY\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-basic:\n type: gcp:compute:InstanceTemplate\n properties:\n name: my-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${myImage.selfLink}\n autoDelete: true\n boot: true\n networkInterfaces:\n - network: default\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n description: Demo test instance group manager\n name: my-rigm\n versions:\n - name: prod\n instanceTemplate: ${[\"igm-basic\"].selfLink}\n updatePolicy:\n type: OPPORTUNISTIC\n instanceRedistributionType: NONE\n minimalAction: RESTART\n baseInstanceName: rigm\n region: us-central1\n targetSize: 2\n default:\n type: gcp:compute:Disk\n properties:\n name: my-disk-name\n type: pd-ssd\n zone: us-central1-a\n image: debian-11-bullseye-v20220719\n physicalBlockSizeBytes: 4096\n withDisk:\n type: gcp:compute:RegionPerInstanceConfig\n name: with_disk\n properties:\n region: ${igm.region}\n regionInstanceGroupManager: ${rigm.name}\n name: instance-1\n preservedState:\n metadata:\n foo: bar\n instance_template: ${[\"igm-basic\"].selfLink}\n disks:\n - deviceName: my-stateful-disk\n source: ${default.id}\n mode: READ_ONLY\nvariables:\n myImage:\n fn::invoke:\n function: gcp:compute:getImage\n arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionPerInstanceConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/instanceGroupManagers/{{region_instance_group_manager}}/{{name}}`\n\n* `{{project}}/{{region}}/{{region_instance_group_manager}}/{{name}}`\n\n* `{{region}}/{{region_instance_group_manager}}/{{name}}`\n\n* `{{region_instance_group_manager}}/{{name}}`\n\nWhen using the `pulumi import` command, RegionPerInstanceConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default projects/{{project}}/regions/{{region}}/instanceGroupManagers/{{region_instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default {{project}}/{{region}}/{{region_instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default {{region}}/{{region_instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default {{region_instance_group_manager}}/{{name}}\n```\n\n", + "description": "A config defined for a single managed instance that belongs to an instance group manager. It preserves the instance name\nacross instance group manager operations and can define stateful disks or metadata that are unique to the instance.\nThis resource works with regional instance group managers.\n\n\nTo get more information about RegionPerInstanceConfig, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/instanceGroupManagers)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/instance-groups/stateful-migs#per-instance_configs)\n\n## Example Usage\n\n### Stateful Rigm\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst myImage = gcp.compute.getImage({\n family: \"debian-11\",\n project: \"debian-cloud\",\n});\nconst igm_basic = new gcp.compute.InstanceTemplate(\"igm-basic\", {\n name: \"my-template\",\n machineType: \"e2-medium\",\n canIpForward: false,\n tags: [\n \"foo\",\n \"bar\",\n ],\n disks: [{\n sourceImage: myImage.then(myImage =\u003e myImage.selfLink),\n autoDelete: true,\n boot: true,\n }],\n networkInterfaces: [{\n network: \"default\",\n }],\n serviceAccount: {\n scopes: [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n },\n});\nconst rigm = new gcp.compute.RegionInstanceGroupManager(\"rigm\", {\n description: \"Demo test instance group manager\",\n name: \"my-rigm\",\n versions: [{\n name: \"prod\",\n instanceTemplate: igm_basic.selfLink,\n }],\n updatePolicy: {\n type: \"OPPORTUNISTIC\",\n instanceRedistributionType: \"NONE\",\n minimalAction: \"RESTART\",\n },\n baseInstanceName: \"rigm\",\n region: \"us-central1\",\n targetSize: 2,\n});\nconst _default = new gcp.compute.Disk(\"default\", {\n name: \"my-disk-name\",\n type: \"pd-ssd\",\n zone: \"us-central1-a\",\n image: \"debian-11-bullseye-v20220719\",\n physicalBlockSizeBytes: 4096,\n});\nconst withDisk = new gcp.compute.RegionPerInstanceConfig(\"with_disk\", {\n region: igm.region,\n regionInstanceGroupManager: rigm.name,\n name: \"instance-1\",\n preservedState: {\n metadata: {\n foo: \"bar\",\n instance_template: igm_basic.selfLink,\n },\n disks: [{\n deviceName: \"my-stateful-disk\",\n source: _default.id,\n mode: \"READ_ONLY\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_image = gcp.compute.get_image(family=\"debian-11\",\n project=\"debian-cloud\")\nigm_basic = gcp.compute.InstanceTemplate(\"igm-basic\",\n name=\"my-template\",\n machine_type=\"e2-medium\",\n can_ip_forward=False,\n tags=[\n \"foo\",\n \"bar\",\n ],\n disks=[{\n \"source_image\": my_image.self_link,\n \"auto_delete\": True,\n \"boot\": True,\n }],\n network_interfaces=[{\n \"network\": \"default\",\n }],\n service_account={\n \"scopes\": [\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n ],\n })\nrigm = gcp.compute.RegionInstanceGroupManager(\"rigm\",\n description=\"Demo test instance group manager\",\n name=\"my-rigm\",\n versions=[{\n \"name\": \"prod\",\n \"instance_template\": igm_basic.self_link,\n }],\n update_policy={\n \"type\": \"OPPORTUNISTIC\",\n \"instance_redistribution_type\": \"NONE\",\n \"minimal_action\": \"RESTART\",\n },\n base_instance_name=\"rigm\",\n region=\"us-central1\",\n target_size=2)\ndefault = gcp.compute.Disk(\"default\",\n name=\"my-disk-name\",\n type=\"pd-ssd\",\n zone=\"us-central1-a\",\n image=\"debian-11-bullseye-v20220719\",\n physical_block_size_bytes=4096)\nwith_disk = gcp.compute.RegionPerInstanceConfig(\"with_disk\",\n region=igm[\"region\"],\n region_instance_group_manager=rigm.name,\n name=\"instance-1\",\n preserved_state={\n \"metadata\": {\n \"foo\": \"bar\",\n \"instance_template\": igm_basic.self_link,\n },\n \"disks\": [{\n \"device_name\": \"my-stateful-disk\",\n \"source\": default.id,\n \"mode\": \"READ_ONLY\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var myImage = Gcp.Compute.GetImage.Invoke(new()\n {\n Family = \"debian-11\",\n Project = \"debian-cloud\",\n });\n\n var igm_basic = new Gcp.Compute.InstanceTemplate(\"igm-basic\", new()\n {\n Name = \"my-template\",\n MachineType = \"e2-medium\",\n CanIpForward = false,\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateDiskArgs\n {\n SourceImage = myImage.Apply(getImageResult =\u003e getImageResult.SelfLink),\n AutoDelete = true,\n Boot = true,\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceTemplateNetworkInterfaceArgs\n {\n Network = \"default\",\n },\n },\n ServiceAccount = new Gcp.Compute.Inputs.InstanceTemplateServiceAccountArgs\n {\n Scopes = new[]\n {\n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\",\n },\n },\n });\n\n var rigm = new Gcp.Compute.RegionInstanceGroupManager(\"rigm\", new()\n {\n Description = \"Demo test instance group manager\",\n Name = \"my-rigm\",\n Versions = new[]\n {\n new Gcp.Compute.Inputs.RegionInstanceGroupManagerVersionArgs\n {\n Name = \"prod\",\n InstanceTemplate = igm_basic.SelfLink,\n },\n },\n UpdatePolicy = new Gcp.Compute.Inputs.RegionInstanceGroupManagerUpdatePolicyArgs\n {\n Type = \"OPPORTUNISTIC\",\n InstanceRedistributionType = \"NONE\",\n MinimalAction = \"RESTART\",\n },\n BaseInstanceName = \"rigm\",\n Region = \"us-central1\",\n TargetSize = 2,\n });\n\n var @default = new Gcp.Compute.Disk(\"default\", new()\n {\n Name = \"my-disk-name\",\n Type = \"pd-ssd\",\n Zone = \"us-central1-a\",\n Image = \"debian-11-bullseye-v20220719\",\n PhysicalBlockSizeBytes = 4096,\n });\n\n var withDisk = new Gcp.Compute.RegionPerInstanceConfig(\"with_disk\", new()\n {\n Region = igm.Region,\n RegionInstanceGroupManager = rigm.Name,\n Name = \"instance-1\",\n PreservedState = new Gcp.Compute.Inputs.RegionPerInstanceConfigPreservedStateArgs\n {\n Metadata = \n {\n { \"foo\", \"bar\" },\n { \"instance_template\", igm_basic.SelfLink },\n },\n Disks = new[]\n {\n new Gcp.Compute.Inputs.RegionPerInstanceConfigPreservedStateDiskArgs\n {\n DeviceName = \"my-stateful-disk\",\n Source = @default.Id,\n Mode = \"READ_ONLY\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tigm_basic, err := compute.NewInstanceTemplate(ctx, \"igm-basic\", \u0026compute.InstanceTemplateArgs{\n\t\t\tName: pulumi.String(\"my-template\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(false),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDisks: compute.InstanceTemplateDiskArray{\n\t\t\t\t\u0026compute.InstanceTemplateDiskArgs{\n\t\t\t\t\tSourceImage: pulumi.String(myImage.SelfLink),\n\t\t\t\t\tAutoDelete: pulumi.Bool(true),\n\t\t\t\t\tBoot: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceTemplateNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceTemplateNetworkInterfaceArgs{\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tServiceAccount: \u0026compute.InstanceTemplateServiceAccountArgs{\n\t\t\t\tScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"userinfo-email\"),\n\t\t\t\t\tpulumi.String(\"compute-ro\"),\n\t\t\t\t\tpulumi.String(\"storage-ro\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trigm, err := compute.NewRegionInstanceGroupManager(ctx, \"rigm\", \u0026compute.RegionInstanceGroupManagerArgs{\n\t\t\tDescription: pulumi.String(\"Demo test instance group manager\"),\n\t\t\tName: pulumi.String(\"my-rigm\"),\n\t\t\tVersions: compute.RegionInstanceGroupManagerVersionArray{\n\t\t\t\t\u0026compute.RegionInstanceGroupManagerVersionArgs{\n\t\t\t\t\tName: pulumi.String(\"prod\"),\n\t\t\t\t\tInstanceTemplate: igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t},\n\t\t\tUpdatePolicy: \u0026compute.RegionInstanceGroupManagerUpdatePolicyArgs{\n\t\t\t\tType: pulumi.String(\"OPPORTUNISTIC\"),\n\t\t\t\tInstanceRedistributionType: pulumi.String(\"NONE\"),\n\t\t\t\tMinimalAction: pulumi.String(\"RESTART\"),\n\t\t\t},\n\t\t\tBaseInstanceName: pulumi.String(\"rigm\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tTargetSize: pulumi.Int(2),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewDisk(ctx, \"default\", \u0026compute.DiskArgs{\n\t\t\tName: pulumi.String(\"my-disk-name\"),\n\t\t\tType: pulumi.String(\"pd-ssd\"),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tImage: pulumi.String(\"debian-11-bullseye-v20220719\"),\n\t\t\tPhysicalBlockSizeBytes: pulumi.Int(4096),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionPerInstanceConfig(ctx, \"with_disk\", \u0026compute.RegionPerInstanceConfigArgs{\n\t\t\tRegion: pulumi.Any(igm.Region),\n\t\t\tRegionInstanceGroupManager: rigm.Name,\n\t\t\tName: pulumi.String(\"instance-1\"),\n\t\t\tPreservedState: \u0026compute.RegionPerInstanceConfigPreservedStateArgs{\n\t\t\t\tMetadata: pulumi.StringMap{\n\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t\t\"instance_template\": igm_basic.SelfLink,\n\t\t\t\t},\n\t\t\t\tDisks: compute.RegionPerInstanceConfigPreservedStateDiskArray{\n\t\t\t\t\t\u0026compute.RegionPerInstanceConfigPreservedStateDiskArgs{\n\t\t\t\t\t\tDeviceName: pulumi.String(\"my-stateful-disk\"),\n\t\t\t\t\t\tSource: _default.ID(),\n\t\t\t\t\t\tMode: pulumi.String(\"READ_ONLY\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetImageArgs;\nimport com.pulumi.gcp.compute.InstanceTemplate;\nimport com.pulumi.gcp.compute.InstanceTemplateArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceTemplateServiceAccountArgs;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManager;\nimport com.pulumi.gcp.compute.RegionInstanceGroupManagerArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerVersionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionInstanceGroupManagerUpdatePolicyArgs;\nimport com.pulumi.gcp.compute.Disk;\nimport com.pulumi.gcp.compute.DiskArgs;\nimport com.pulumi.gcp.compute.RegionPerInstanceConfig;\nimport com.pulumi.gcp.compute.RegionPerInstanceConfigArgs;\nimport com.pulumi.gcp.compute.inputs.RegionPerInstanceConfigPreservedStateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var myImage = ComputeFunctions.getImage(GetImageArgs.builder()\n .family(\"debian-11\")\n .project(\"debian-cloud\")\n .build());\n\n var igm_basic = new InstanceTemplate(\"igm-basic\", InstanceTemplateArgs.builder()\n .name(\"my-template\")\n .machineType(\"e2-medium\")\n .canIpForward(false)\n .tags( \n \"foo\",\n \"bar\")\n .disks(InstanceTemplateDiskArgs.builder()\n .sourceImage(myImage.applyValue(getImageResult -\u003e getImageResult.selfLink()))\n .autoDelete(true)\n .boot(true)\n .build())\n .networkInterfaces(InstanceTemplateNetworkInterfaceArgs.builder()\n .network(\"default\")\n .build())\n .serviceAccount(InstanceTemplateServiceAccountArgs.builder()\n .scopes( \n \"userinfo-email\",\n \"compute-ro\",\n \"storage-ro\")\n .build())\n .build());\n\n var rigm = new RegionInstanceGroupManager(\"rigm\", RegionInstanceGroupManagerArgs.builder()\n .description(\"Demo test instance group manager\")\n .name(\"my-rigm\")\n .versions(RegionInstanceGroupManagerVersionArgs.builder()\n .name(\"prod\")\n .instanceTemplate(igm_basic.selfLink())\n .build())\n .updatePolicy(RegionInstanceGroupManagerUpdatePolicyArgs.builder()\n .type(\"OPPORTUNISTIC\")\n .instanceRedistributionType(\"NONE\")\n .minimalAction(\"RESTART\")\n .build())\n .baseInstanceName(\"rigm\")\n .region(\"us-central1\")\n .targetSize(2)\n .build());\n\n var default_ = new Disk(\"default\", DiskArgs.builder()\n .name(\"my-disk-name\")\n .type(\"pd-ssd\")\n .zone(\"us-central1-a\")\n .image(\"debian-11-bullseye-v20220719\")\n .physicalBlockSizeBytes(4096)\n .build());\n\n var withDisk = new RegionPerInstanceConfig(\"withDisk\", RegionPerInstanceConfigArgs.builder()\n .region(igm.region())\n .regionInstanceGroupManager(rigm.name())\n .name(\"instance-1\")\n .preservedState(RegionPerInstanceConfigPreservedStateArgs.builder()\n .metadata(Map.ofEntries(\n Map.entry(\"foo\", \"bar\"),\n Map.entry(\"instance_template\", igm_basic.selfLink())\n ))\n .disks(RegionPerInstanceConfigPreservedStateDiskArgs.builder()\n .deviceName(\"my-stateful-disk\")\n .source(default_.id())\n .mode(\"READ_ONLY\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n igm-basic:\n type: gcp:compute:InstanceTemplate\n properties:\n name: my-template\n machineType: e2-medium\n canIpForward: false\n tags:\n - foo\n - bar\n disks:\n - sourceImage: ${myImage.selfLink}\n autoDelete: true\n boot: true\n networkInterfaces:\n - network: default\n serviceAccount:\n scopes:\n - userinfo-email\n - compute-ro\n - storage-ro\n rigm:\n type: gcp:compute:RegionInstanceGroupManager\n properties:\n description: Demo test instance group manager\n name: my-rigm\n versions:\n - name: prod\n instanceTemplate: ${[\"igm-basic\"].selfLink}\n updatePolicy:\n type: OPPORTUNISTIC\n instanceRedistributionType: NONE\n minimalAction: RESTART\n baseInstanceName: rigm\n region: us-central1\n targetSize: 2\n default:\n type: gcp:compute:Disk\n properties:\n name: my-disk-name\n type: pd-ssd\n zone: us-central1-a\n image: debian-11-bullseye-v20220719\n physicalBlockSizeBytes: 4096\n withDisk:\n type: gcp:compute:RegionPerInstanceConfig\n name: with_disk\n properties:\n region: ${igm.region}\n regionInstanceGroupManager: ${rigm.name}\n name: instance-1\n preservedState:\n metadata:\n foo: bar\n instance_template: ${[\"igm-basic\"].selfLink}\n disks:\n - deviceName: my-stateful-disk\n source: ${default.id}\n mode: READ_ONLY\nvariables:\n myImage:\n fn::invoke:\n function: gcp:compute:getImage\n arguments:\n family: debian-11\n project: debian-cloud\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionPerInstanceConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/instanceGroupManagers/{{region_instance_group_manager}}/{{name}}`\n\n* `{{project}}/{{region}}/{{region_instance_group_manager}}/{{name}}`\n\n* `{{region}}/{{region_instance_group_manager}}/{{name}}`\n\n* `{{region_instance_group_manager}}/{{name}}`\n\nWhen using the `pulumi import` command, RegionPerInstanceConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default projects/{{project}}/regions/{{region}}/instanceGroupManagers/{{region_instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default {{project}}/{{region}}/{{region_instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default {{region}}/{{region_instance_group_manager}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionPerInstanceConfig:RegionPerInstanceConfig default {{region_instance_group_manager}}/{{name}}\n```\n\n", "properties": { "minimalAction": { "type": "string", @@ -186491,7 +186491,7 @@ } }, "gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule": { - "description": "## Example Usage\n\n### Region Security Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionSecurityPolicy(\"default\", {\n region: \"us-west2\",\n name: \"policyruletest\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRule = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"us-west2\",\n name=\"policyruletest\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule = gcp.compute.RegionSecurityPolicyRule(\"policy_rule\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionSecurityPolicy(\"default\", new()\n {\n Region = \"us-west2\",\n Name = \"policyruletest\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRule = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionSecurityPolicy(ctx, \"default\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionSecurityPolicy(\"default\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policyruletest\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRule = new RegionSecurityPolicyRule(\"policyRule\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policyruletest\n description: basic region security policy\n type: CLOUD_ARMOR\n policyRule:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule Multiple Rules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionSecurityPolicy(\"default\", {\n region: \"us-west2\",\n name: \"policywithmultiplerules\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRuleOne = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule_one\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule one\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n});\nconst policyRuleTwo = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule_two\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule two\",\n priority: 101,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n },\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"us-west2\",\n name=\"policywithmultiplerules\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule_one = gcp.compute.RegionSecurityPolicyRule(\"policy_rule_one\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule one\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\npolicy_rule_two = gcp.compute.RegionSecurityPolicyRule(\"policy_rule_two\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule two\",\n priority=101,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n },\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionSecurityPolicy(\"default\", new()\n {\n Region = \"us-west2\",\n Name = \"policywithmultiplerules\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRuleOne = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule_one\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule one\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n var policyRuleTwo = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule_two\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule two\",\n Priority = 101,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionSecurityPolicy(ctx, \"default\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policywithmultiplerules\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule_one\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule one\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule_two\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule two\"),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionSecurityPolicy(\"default\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policywithmultiplerules\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRuleOne = new RegionSecurityPolicyRule(\"policyRuleOne\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule one\")\n .priority(100)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n var policyRuleTwo = new RegionSecurityPolicyRule(\"policyRuleTwo\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule two\")\n .priority(101)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges( \n \"192.168.0.0/16\",\n \"10.0.0.0/8\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policywithmultiplerules\n description: basic region security policy\n type: CLOUD_ARMOR\n policyRuleOne:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule_one\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule one\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n policyRuleTwo:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule_two\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule two\n priority: 101\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 192.168.0.0/16\n - 10.0.0.0/8\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule Default Rule\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionSecurityPolicy(\"default\", {\n region: \"us-west2\",\n name: \"policywithdefaultrule\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst defaultRule = new gcp.compute.RegionSecurityPolicyRule(\"default_rule\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule\",\n action: \"deny\",\n priority: 2147483647,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"*\"],\n },\n },\n});\nconst policyRule = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"us-west2\",\n name=\"policywithdefaultrule\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\ndefault_rule = gcp.compute.RegionSecurityPolicyRule(\"default_rule\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule\",\n action=\"deny\",\n priority=2147483647,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"*\"],\n },\n })\npolicy_rule = gcp.compute.RegionSecurityPolicyRule(\"policy_rule\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionSecurityPolicy(\"default\", new()\n {\n Region = \"us-west2\",\n Name = \"policywithdefaultrule\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var defaultRule = new Gcp.Compute.RegionSecurityPolicyRule(\"default_rule\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Action = \"deny\",\n Priority = 2147483647,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var policyRule = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionSecurityPolicy(ctx, \"default\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policywithdefaultrule\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"default_rule\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\tPriority: pulumi.Int(2147483647),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\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.NewRegionSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionSecurityPolicy(\"default\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policywithdefaultrule\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var defaultRule = new RegionSecurityPolicyRule(\"defaultRule\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .action(\"deny\")\n .priority(\"2147483647\")\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"*\")\n .build())\n .build())\n .build());\n\n var policyRule = new RegionSecurityPolicyRule(\"policyRule\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policywithdefaultrule\n description: basic region security policy\n type: CLOUD_ARMOR\n defaultRule:\n type: gcp:compute:RegionSecurityPolicyRule\n name: default_rule\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule\n action: deny\n priority: '2147483647'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - '*'\n policyRule:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule With Preconfigured Waf Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionSecurityPolicy(\"default\", {\n region: \"asia-southeast1\",\n name: \"policyruletest\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRule = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule\", {\n region: \"asia-southeast1\",\n securityPolicy: _default.name,\n description: \"new rule\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n preconfiguredWafConfig: {\n exclusions: [\n {\n requestUris: [{\n operator: \"STARTS_WITH\",\n value: \"/admin\",\n }],\n targetRuleSet: \"rce-stable\",\n },\n {\n requestQueryParams: [\n {\n operator: \"CONTAINS\",\n value: \"password\",\n },\n {\n operator: \"STARTS_WITH\",\n value: \"freeform\",\n },\n {\n operator: \"EQUALS\",\n value: \"description\",\n },\n ],\n targetRuleSet: \"xss-stable\",\n targetRuleIds: [\n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\",\n ],\n },\n ],\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"asia-southeast1\",\n name=\"policyruletest\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule = gcp.compute.RegionSecurityPolicyRule(\"policy_rule\",\n region=\"asia-southeast1\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n preconfigured_waf_config={\n \"exclusions\": [\n {\n \"request_uris\": [{\n \"operator\": \"STARTS_WITH\",\n \"value\": \"/admin\",\n }],\n \"target_rule_set\": \"rce-stable\",\n },\n {\n \"request_query_params\": [\n {\n \"operator\": \"CONTAINS\",\n \"value\": \"password\",\n },\n {\n \"operator\": \"STARTS_WITH\",\n \"value\": \"freeform\",\n },\n {\n \"operator\": \"EQUALS\",\n \"value\": \"description\",\n },\n ],\n \"target_rule_set\": \"xss-stable\",\n \"target_rule_ids\": [\n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\",\n ],\n },\n ],\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionSecurityPolicy(\"default\", new()\n {\n Region = \"asia-southeast1\",\n Name = \"policyruletest\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRule = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule\", new()\n {\n Region = \"asia-southeast1\",\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n PreconfiguredWafConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigArgs\n {\n Exclusions = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs\n {\n RequestUris = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs\n {\n Operator = \"STARTS_WITH\",\n Value = \"/admin\",\n },\n },\n TargetRuleSet = \"rce-stable\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs\n {\n RequestQueryParams = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs\n {\n Operator = \"CONTAINS\",\n Value = \"password\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs\n {\n Operator = \"STARTS_WITH\",\n Value = \"freeform\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs\n {\n Operator = \"EQUALS\",\n Value = \"description\",\n },\n },\n TargetRuleSet = \"xss-stable\",\n TargetRuleIds = new[]\n {\n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\",\n },\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionSecurityPolicy(ctx, \"default\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"asia-southeast1\"),\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"asia-southeast1\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPreconfiguredWafConfig: \u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigArgs{\n\t\t\t\tExclusions: compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArray{\n\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs{\n\t\t\t\t\t\tRequestUris: compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArray{\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"STARTS_WITH\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"/admin\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetRuleSet: pulumi.String(\"rce-stable\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs{\n\t\t\t\t\t\tRequestQueryParams: compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArray{\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"CONTAINS\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"password\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"STARTS_WITH\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"freeform\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"EQUALS\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"description\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetRuleSet: pulumi.String(\"xss-stable\"),\n\t\t\t\t\t\tTargetRuleIds: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"owasp-crs-v030001-id941330-xss\"),\n\t\t\t\t\t\t\tpulumi.String(\"owasp-crs-v030001-id941340-xss\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRulePreconfiguredWafConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionSecurityPolicy(\"default\", RegionSecurityPolicyArgs.builder()\n .region(\"asia-southeast1\")\n .name(\"policyruletest\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRule = new RegionSecurityPolicyRule(\"policyRule\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"asia-southeast1\")\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .preconfiguredWafConfig(RegionSecurityPolicyRulePreconfiguredWafConfigArgs.builder()\n .exclusions( \n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs.builder()\n .requestUris(RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs.builder()\n .operator(\"STARTS_WITH\")\n .value(\"/admin\")\n .build())\n .targetRuleSet(\"rce-stable\")\n .build(),\n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs.builder()\n .requestQueryParams( \n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs.builder()\n .operator(\"CONTAINS\")\n .value(\"password\")\n .build(),\n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs.builder()\n .operator(\"STARTS_WITH\")\n .value(\"freeform\")\n .build(),\n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs.builder()\n .operator(\"EQUALS\")\n .value(\"description\")\n .build())\n .targetRuleSet(\"xss-stable\")\n .targetRuleIds( \n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: asia-southeast1\n name: policyruletest\n description: basic region security policy\n type: CLOUD_ARMOR\n policyRule:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule\n properties:\n region: asia-southeast1\n securityPolicy: ${default.name}\n description: new rule\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n preconfiguredWafConfig:\n exclusions:\n - requestUris:\n - operator: STARTS_WITH\n value: /admin\n targetRuleSet: rce-stable\n - requestQueryParams:\n - operator: CONTAINS\n value: password\n - operator: STARTS_WITH\n value: freeform\n - operator: EQUALS\n value: description\n targetRuleSet: xss-stable\n targetRuleIds:\n - owasp-crs-v030001-id941330-xss\n - owasp-crs-v030001-id941340-xss\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule With Network Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// First activate advanced network DDoS protection for the desired region\nconst policyddosprotection = new gcp.compute.RegionSecurityPolicy(\"policyddosprotection\", {\n region: \"us-west2\",\n name: \"policyddosprotection\",\n description: \"policy for activating network DDoS protection for the desired region\",\n type: \"CLOUD_ARMOR_NETWORK\",\n ddosProtectionConfig: {\n ddosProtection: \"ADVANCED_PREVIEW\",\n },\n});\nconst edgeSecService = new gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\", {\n region: \"us-west2\",\n name: \"edgesecservice\",\n description: \"linking policy to edge security service\",\n securityPolicy: policyddosprotection.selfLink,\n});\n// Add the desired policy and custom rule.\nconst policynetworkmatch = new gcp.compute.RegionSecurityPolicy(\"policynetworkmatch\", {\n region: \"us-west2\",\n name: \"policyfornetworkmatch\",\n description: \"region security policy for network match\",\n type: \"CLOUD_ARMOR_NETWORK\",\n userDefinedFields: [{\n name: \"SIG1_AT_0\",\n base: \"TCP\",\n offset: 8,\n size: 2,\n mask: \"0x8F00\",\n }],\n}, {\n dependsOn: [edgeSecService],\n});\nconst policyRuleNetworkMatch = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule_network_match\", {\n region: \"us-west2\",\n securityPolicy: policynetworkmatch.name,\n description: \"custom rule for network match\",\n priority: 100,\n networkMatch: {\n srcIpRanges: [\"10.10.0.0/16\"],\n userDefinedFields: [{\n name: \"SIG1_AT_0\",\n values: [\"0x8F00\"],\n }],\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# First activate advanced network DDoS protection for the desired region\npolicyddosprotection = gcp.compute.RegionSecurityPolicy(\"policyddosprotection\",\n region=\"us-west2\",\n name=\"policyddosprotection\",\n description=\"policy for activating network DDoS protection for the desired region\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config={\n \"ddos_protection\": \"ADVANCED_PREVIEW\",\n })\nedge_sec_service = gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\",\n region=\"us-west2\",\n name=\"edgesecservice\",\n description=\"linking policy to edge security service\",\n security_policy=policyddosprotection.self_link)\n# Add the desired policy and custom rule.\npolicynetworkmatch = gcp.compute.RegionSecurityPolicy(\"policynetworkmatch\",\n region=\"us-west2\",\n name=\"policyfornetworkmatch\",\n description=\"region security policy for network match\",\n type=\"CLOUD_ARMOR_NETWORK\",\n user_defined_fields=[{\n \"name\": \"SIG1_AT_0\",\n \"base\": \"TCP\",\n \"offset\": 8,\n \"size\": 2,\n \"mask\": \"0x8F00\",\n }],\n opts = pulumi.ResourceOptions(depends_on=[edge_sec_service]))\npolicy_rule_network_match = gcp.compute.RegionSecurityPolicyRule(\"policy_rule_network_match\",\n region=\"us-west2\",\n security_policy=policynetworkmatch.name,\n description=\"custom rule for network match\",\n priority=100,\n network_match={\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n \"user_defined_fields\": [{\n \"name\": \"SIG1_AT_0\",\n \"values\": [\"0x8F00\"],\n }],\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // First activate advanced network DDoS protection for the desired region\n var policyddosprotection = new Gcp.Compute.RegionSecurityPolicy(\"policyddosprotection\", new()\n {\n Region = \"us-west2\",\n Name = \"policyddosprotection\",\n Description = \"policy for activating network DDoS protection for the desired region\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n DdosProtectionConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyDdosProtectionConfigArgs\n {\n DdosProtection = \"ADVANCED_PREVIEW\",\n },\n });\n\n var edgeSecService = new Gcp.Compute.NetworkEdgeSecurityService(\"edge_sec_service\", new()\n {\n Region = \"us-west2\",\n Name = \"edgesecservice\",\n Description = \"linking policy to edge security service\",\n SecurityPolicy = policyddosprotection.SelfLink,\n });\n\n // Add the desired policy and custom rule.\n var policynetworkmatch = new Gcp.Compute.RegionSecurityPolicy(\"policynetworkmatch\", new()\n {\n Region = \"us-west2\",\n Name = \"policyfornetworkmatch\",\n Description = \"region security policy for network match\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n UserDefinedFields = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyUserDefinedFieldArgs\n {\n Name = \"SIG1_AT_0\",\n Base = \"TCP\",\n Offset = 8,\n Size = 2,\n Mask = \"0x8F00\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n edgeSecService,\n },\n });\n\n var policyRuleNetworkMatch = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule_network_match\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = policynetworkmatch.Name,\n Description = \"custom rule for network match\",\n Priority = 100,\n NetworkMatch = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleNetworkMatchArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n UserDefinedFields = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs\n {\n Name = \"SIG1_AT_0\",\n Values = new[]\n {\n \"0x8F00\",\n },\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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// First activate advanced network DDoS protection for the desired region\n\t\tpolicyddosprotection, err := compute.NewRegionSecurityPolicy(ctx, \"policyddosprotection\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policyddosprotection\"),\n\t\t\tDescription: pulumi.String(\"policy for activating network DDoS protection for the desired region\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t\tDdosProtectionConfig: \u0026compute.RegionSecurityPolicyDdosProtectionConfigArgs{\n\t\t\t\tDdosProtection: pulumi.String(\"ADVANCED_PREVIEW\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tedgeSecService, err := compute.NewNetworkEdgeSecurityService(ctx, \"edge_sec_service\", \u0026compute.NetworkEdgeSecurityServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"edgesecservice\"),\n\t\t\tDescription: pulumi.String(\"linking policy to edge security service\"),\n\t\t\tSecurityPolicy: policyddosprotection.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Add the desired policy and custom rule.\n\t\tpolicynetworkmatch, err := compute.NewRegionSecurityPolicy(ctx, \"policynetworkmatch\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policyfornetworkmatch\"),\n\t\t\tDescription: pulumi.String(\"region security policy for network match\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t\tUserDefinedFields: compute.RegionSecurityPolicyUserDefinedFieldArray{\n\t\t\t\t\u0026compute.RegionSecurityPolicyUserDefinedFieldArgs{\n\t\t\t\t\tName: pulumi.String(\"SIG1_AT_0\"),\n\t\t\t\t\tBase: pulumi.String(\"TCP\"),\n\t\t\t\t\tOffset: pulumi.Int(8),\n\t\t\t\t\tSize: pulumi.Int(2),\n\t\t\t\t\tMask: pulumi.String(\"0x8F00\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tedgeSecService,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule_network_match\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: policynetworkmatch.Name,\n\t\t\tDescription: pulumi.String(\"custom rule for network match\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tNetworkMatch: \u0026compute.RegionSecurityPolicyRuleNetworkMatchArgs{\n\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tUserDefinedFields: compute.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArray{\n\t\t\t\t\t\u0026compute.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs{\n\t\t\t\t\t\tName: pulumi.String(\"SIG1_AT_0\"),\n\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"0x8F00\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyDdosProtectionConfigArgs;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityService;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyUserDefinedFieldArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleNetworkMatchArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // First activate advanced network DDoS protection for the desired region\n var policyddosprotection = new RegionSecurityPolicy(\"policyddosprotection\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policyddosprotection\")\n .description(\"policy for activating network DDoS protection for the desired region\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .ddosProtectionConfig(RegionSecurityPolicyDdosProtectionConfigArgs.builder()\n .ddosProtection(\"ADVANCED_PREVIEW\")\n .build())\n .build());\n\n var edgeSecService = new NetworkEdgeSecurityService(\"edgeSecService\", NetworkEdgeSecurityServiceArgs.builder()\n .region(\"us-west2\")\n .name(\"edgesecservice\")\n .description(\"linking policy to edge security service\")\n .securityPolicy(policyddosprotection.selfLink())\n .build());\n\n // Add the desired policy and custom rule.\n var policynetworkmatch = new RegionSecurityPolicy(\"policynetworkmatch\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policyfornetworkmatch\")\n .description(\"region security policy for network match\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .userDefinedFields(RegionSecurityPolicyUserDefinedFieldArgs.builder()\n .name(\"SIG1_AT_0\")\n .base(\"TCP\")\n .offset(8)\n .size(2)\n .mask(\"0x8F00\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(edgeSecService)\n .build());\n\n var policyRuleNetworkMatch = new RegionSecurityPolicyRule(\"policyRuleNetworkMatch\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"us-west2\")\n .securityPolicy(policynetworkmatch.name())\n .description(\"custom rule for network match\")\n .priority(100)\n .networkMatch(RegionSecurityPolicyRuleNetworkMatchArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .userDefinedFields(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs.builder()\n .name(\"SIG1_AT_0\")\n .values(\"0x8F00\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # First activate advanced network DDoS protection for the desired region\n policyddosprotection:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policyddosprotection\n description: policy for activating network DDoS protection for the desired region\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n edgeSecService:\n type: gcp:compute:NetworkEdgeSecurityService\n name: edge_sec_service\n properties:\n region: us-west2\n name: edgesecservice\n description: linking policy to edge security service\n securityPolicy: ${policyddosprotection.selfLink}\n # Add the desired policy and custom rule.\n policynetworkmatch:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policyfornetworkmatch\n description: region security policy for network match\n type: CLOUD_ARMOR_NETWORK\n userDefinedFields:\n - name: SIG1_AT_0\n base: TCP\n offset: 8\n size: 2\n mask: 0x8F00\n options:\n dependsOn:\n - ${edgeSecService}\n policyRuleNetworkMatch:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule_network_match\n properties:\n region: us-west2\n securityPolicy: ${policynetworkmatch.name}\n description: custom rule for network match\n priority: 100\n networkMatch:\n srcIpRanges:\n - 10.10.0.0/16\n userDefinedFields:\n - name: SIG1_AT_0\n values:\n - 0x8F00\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionSecurityPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}}`\n\n* `{{project}}/{{region}}/{{security_policy}}/{{priority}}`\n\n* `{{region}}/{{security_policy}}/{{priority}}`\n\n* `{{security_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, RegionSecurityPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{project}}/{{region}}/{{security_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{region}}/{{security_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{security_policy}}/{{priority}}\n```\n\n", + "description": "## Example Usage\n\n### Region Security Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionSecurityPolicy(\"default\", {\n region: \"us-west2\",\n name: \"policyruletest\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRule = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"us-west2\",\n name=\"policyruletest\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule = gcp.compute.RegionSecurityPolicyRule(\"policy_rule\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionSecurityPolicy(\"default\", new()\n {\n Region = \"us-west2\",\n Name = \"policyruletest\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRule = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionSecurityPolicy(ctx, \"default\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionSecurityPolicy(\"default\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policyruletest\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRule = new RegionSecurityPolicyRule(\"policyRule\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policyruletest\n description: basic region security policy\n type: CLOUD_ARMOR\n policyRule:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule Multiple Rules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionSecurityPolicy(\"default\", {\n region: \"us-west2\",\n name: \"policywithmultiplerules\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRuleOne = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule_one\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule one\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n});\nconst policyRuleTwo = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule_two\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule two\",\n priority: 101,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n },\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"us-west2\",\n name=\"policywithmultiplerules\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule_one = gcp.compute.RegionSecurityPolicyRule(\"policy_rule_one\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule one\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\npolicy_rule_two = gcp.compute.RegionSecurityPolicyRule(\"policy_rule_two\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule two\",\n priority=101,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n },\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionSecurityPolicy(\"default\", new()\n {\n Region = \"us-west2\",\n Name = \"policywithmultiplerules\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRuleOne = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule_one\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule one\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n var policyRuleTwo = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule_two\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule two\",\n Priority = 101,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionSecurityPolicy(ctx, \"default\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policywithmultiplerules\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule_one\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule one\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule_two\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule two\"),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionSecurityPolicy(\"default\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policywithmultiplerules\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRuleOne = new RegionSecurityPolicyRule(\"policyRuleOne\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule one\")\n .priority(100)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n var policyRuleTwo = new RegionSecurityPolicyRule(\"policyRuleTwo\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule two\")\n .priority(101)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges( \n \"192.168.0.0/16\",\n \"10.0.0.0/8\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policywithmultiplerules\n description: basic region security policy\n type: CLOUD_ARMOR\n policyRuleOne:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule_one\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule one\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n policyRuleTwo:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule_two\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule two\n priority: 101\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 192.168.0.0/16\n - 10.0.0.0/8\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule Default Rule\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionSecurityPolicy(\"default\", {\n region: \"us-west2\",\n name: \"policywithdefaultrule\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst defaultRule = new gcp.compute.RegionSecurityPolicyRule(\"default_rule\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule\",\n action: \"deny\",\n priority: 2147483647,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"*\"],\n },\n },\n});\nconst policyRule = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule\", {\n region: \"us-west2\",\n securityPolicy: _default.name,\n description: \"new rule\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"us-west2\",\n name=\"policywithdefaultrule\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\ndefault_rule = gcp.compute.RegionSecurityPolicyRule(\"default_rule\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule\",\n action=\"deny\",\n priority=2147483647,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"*\"],\n },\n })\npolicy_rule = gcp.compute.RegionSecurityPolicyRule(\"policy_rule\",\n region=\"us-west2\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionSecurityPolicy(\"default\", new()\n {\n Region = \"us-west2\",\n Name = \"policywithdefaultrule\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var defaultRule = new Gcp.Compute.RegionSecurityPolicyRule(\"default_rule\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Action = \"deny\",\n Priority = 2147483647,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var policyRule = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionSecurityPolicy(ctx, \"default\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policywithdefaultrule\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"default_rule\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\tPriority: pulumi.Int(2147483647),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\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.NewRegionSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionSecurityPolicy(\"default\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policywithdefaultrule\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var defaultRule = new RegionSecurityPolicyRule(\"defaultRule\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .action(\"deny\")\n .priority(\"2147483647\")\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"*\")\n .build())\n .build())\n .build());\n\n var policyRule = new RegionSecurityPolicyRule(\"policyRule\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"us-west2\")\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policywithdefaultrule\n description: basic region security policy\n type: CLOUD_ARMOR\n defaultRule:\n type: gcp:compute:RegionSecurityPolicyRule\n name: default_rule\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule\n action: deny\n priority: '2147483647'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - '*'\n policyRule:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule\n properties:\n region: us-west2\n securityPolicy: ${default.name}\n description: new rule\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule With Preconfigured Waf Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionSecurityPolicy(\"default\", {\n region: \"asia-southeast1\",\n name: \"policyruletest\",\n description: \"basic region security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRule = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule\", {\n region: \"asia-southeast1\",\n securityPolicy: _default.name,\n description: \"new rule\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n preconfiguredWafConfig: {\n exclusions: [\n {\n requestUris: [{\n operator: \"STARTS_WITH\",\n value: \"/admin\",\n }],\n targetRuleSet: \"rce-stable\",\n },\n {\n requestQueryParams: [\n {\n operator: \"CONTAINS\",\n value: \"password\",\n },\n {\n operator: \"STARTS_WITH\",\n value: \"freeform\",\n },\n {\n operator: \"EQUALS\",\n value: \"description\",\n },\n ],\n targetRuleSet: \"xss-stable\",\n targetRuleIds: [\n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\",\n ],\n },\n ],\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionSecurityPolicy(\"default\",\n region=\"asia-southeast1\",\n name=\"policyruletest\",\n description=\"basic region security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule = gcp.compute.RegionSecurityPolicyRule(\"policy_rule\",\n region=\"asia-southeast1\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n preconfigured_waf_config={\n \"exclusions\": [\n {\n \"request_uris\": [{\n \"operator\": \"STARTS_WITH\",\n \"value\": \"/admin\",\n }],\n \"target_rule_set\": \"rce-stable\",\n },\n {\n \"request_query_params\": [\n {\n \"operator\": \"CONTAINS\",\n \"value\": \"password\",\n },\n {\n \"operator\": \"STARTS_WITH\",\n \"value\": \"freeform\",\n },\n {\n \"operator\": \"EQUALS\",\n \"value\": \"description\",\n },\n ],\n \"target_rule_set\": \"xss-stable\",\n \"target_rule_ids\": [\n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\",\n ],\n },\n ],\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionSecurityPolicy(\"default\", new()\n {\n Region = \"asia-southeast1\",\n Name = \"policyruletest\",\n Description = \"basic region security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRule = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule\", new()\n {\n Region = \"asia-southeast1\",\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n PreconfiguredWafConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigArgs\n {\n Exclusions = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs\n {\n RequestUris = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs\n {\n Operator = \"STARTS_WITH\",\n Value = \"/admin\",\n },\n },\n TargetRuleSet = \"rce-stable\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs\n {\n RequestQueryParams = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs\n {\n Operator = \"CONTAINS\",\n Value = \"password\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs\n {\n Operator = \"STARTS_WITH\",\n Value = \"freeform\",\n },\n new Gcp.Compute.Inputs.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs\n {\n Operator = \"EQUALS\",\n Value = \"description\",\n },\n },\n TargetRuleSet = \"xss-stable\",\n TargetRuleIds = new[]\n {\n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\",\n },\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionSecurityPolicy(ctx, \"default\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"asia-southeast1\"),\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic region security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"asia-southeast1\"),\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.RegionSecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.RegionSecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tPreconfiguredWafConfig: \u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigArgs{\n\t\t\t\tExclusions: compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArray{\n\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs{\n\t\t\t\t\t\tRequestUris: compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArray{\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"STARTS_WITH\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"/admin\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetRuleSet: pulumi.String(\"rce-stable\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs{\n\t\t\t\t\t\tRequestQueryParams: compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArray{\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"CONTAINS\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"password\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"STARTS_WITH\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"freeform\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs{\n\t\t\t\t\t\t\t\tOperator: pulumi.String(\"EQUALS\"),\n\t\t\t\t\t\t\t\tValue: pulumi.String(\"description\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tTargetRuleSet: pulumi.String(\"xss-stable\"),\n\t\t\t\t\t\tTargetRuleIds: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"owasp-crs-v030001-id941330-xss\"),\n\t\t\t\t\t\t\tpulumi.String(\"owasp-crs-v030001-id941340-xss\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleMatchConfigArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRulePreconfiguredWafConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionSecurityPolicy(\"default\", RegionSecurityPolicyArgs.builder()\n .region(\"asia-southeast1\")\n .name(\"policyruletest\")\n .description(\"basic region security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRule = new RegionSecurityPolicyRule(\"policyRule\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"asia-southeast1\")\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(RegionSecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(RegionSecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .preconfiguredWafConfig(RegionSecurityPolicyRulePreconfiguredWafConfigArgs.builder()\n .exclusions( \n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs.builder()\n .requestUris(RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs.builder()\n .operator(\"STARTS_WITH\")\n .value(\"/admin\")\n .build())\n .targetRuleSet(\"rce-stable\")\n .build(),\n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionArgs.builder()\n .requestQueryParams( \n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs.builder()\n .operator(\"CONTAINS\")\n .value(\"password\")\n .build(),\n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs.builder()\n .operator(\"STARTS_WITH\")\n .value(\"freeform\")\n .build(),\n RegionSecurityPolicyRulePreconfiguredWafConfigExclusionRequestQueryParamArgs.builder()\n .operator(\"EQUALS\")\n .value(\"description\")\n .build())\n .targetRuleSet(\"xss-stable\")\n .targetRuleIds( \n \"owasp-crs-v030001-id941330-xss\",\n \"owasp-crs-v030001-id941340-xss\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: asia-southeast1\n name: policyruletest\n description: basic region security policy\n type: CLOUD_ARMOR\n policyRule:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule\n properties:\n region: asia-southeast1\n securityPolicy: ${default.name}\n description: new rule\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n preconfiguredWafConfig:\n exclusions:\n - requestUris:\n - operator: STARTS_WITH\n value: /admin\n targetRuleSet: rce-stable\n - requestQueryParams:\n - operator: CONTAINS\n value: password\n - operator: STARTS_WITH\n value: freeform\n - operator: EQUALS\n value: description\n targetRuleSet: xss-stable\n targetRuleIds:\n - owasp-crs-v030001-id941330-xss\n - owasp-crs-v030001-id941340-xss\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Security Policy Rule With Network Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// First activate advanced network DDoS protection for the desired region\nconst policyddosprotection = new gcp.compute.RegionSecurityPolicy(\"policyddosprotection\", {\n region: \"us-west2\",\n name: \"policyddosprotection\",\n description: \"policy for activating network DDoS protection for the desired region\",\n type: \"CLOUD_ARMOR_NETWORK\",\n ddosProtectionConfig: {\n ddosProtection: \"ADVANCED_PREVIEW\",\n },\n});\nconst edgeSecService = new gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\", {\n region: \"us-west2\",\n name: \"edgesecservice\",\n description: \"linking policy to edge security service\",\n securityPolicy: policyddosprotection.selfLink,\n});\n// Add the desired policy and custom rule.\nconst policynetworkmatch = new gcp.compute.RegionSecurityPolicy(\"policynetworkmatch\", {\n region: \"us-west2\",\n name: \"policyfornetworkmatch\",\n description: \"region security policy for network match\",\n type: \"CLOUD_ARMOR_NETWORK\",\n userDefinedFields: [{\n name: \"SIG1_AT_0\",\n base: \"TCP\",\n offset: 8,\n size: 2,\n mask: \"0x8F00\",\n }],\n}, {\n dependsOn: [edgeSecService],\n});\nconst policyRuleNetworkMatch = new gcp.compute.RegionSecurityPolicyRule(\"policy_rule_network_match\", {\n region: \"us-west2\",\n securityPolicy: policynetworkmatch.name,\n description: \"custom rule for network match\",\n priority: 100,\n networkMatch: {\n srcIpRanges: [\"10.10.0.0/16\"],\n userDefinedFields: [{\n name: \"SIG1_AT_0\",\n values: [\"0x8F00\"],\n }],\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# First activate advanced network DDoS protection for the desired region\npolicyddosprotection = gcp.compute.RegionSecurityPolicy(\"policyddosprotection\",\n region=\"us-west2\",\n name=\"policyddosprotection\",\n description=\"policy for activating network DDoS protection for the desired region\",\n type=\"CLOUD_ARMOR_NETWORK\",\n ddos_protection_config={\n \"ddos_protection\": \"ADVANCED_PREVIEW\",\n })\nedge_sec_service = gcp.compute.NetworkEdgeSecurityService(\"edge_sec_service\",\n region=\"us-west2\",\n name=\"edgesecservice\",\n description=\"linking policy to edge security service\",\n security_policy=policyddosprotection.self_link)\n# Add the desired policy and custom rule.\npolicynetworkmatch = gcp.compute.RegionSecurityPolicy(\"policynetworkmatch\",\n region=\"us-west2\",\n name=\"policyfornetworkmatch\",\n description=\"region security policy for network match\",\n type=\"CLOUD_ARMOR_NETWORK\",\n user_defined_fields=[{\n \"name\": \"SIG1_AT_0\",\n \"base\": \"TCP\",\n \"offset\": 8,\n \"size\": 2,\n \"mask\": \"0x8F00\",\n }],\n opts = pulumi.ResourceOptions(depends_on=[edge_sec_service]))\npolicy_rule_network_match = gcp.compute.RegionSecurityPolicyRule(\"policy_rule_network_match\",\n region=\"us-west2\",\n security_policy=policynetworkmatch.name,\n description=\"custom rule for network match\",\n priority=100,\n network_match={\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n \"user_defined_fields\": [{\n \"name\": \"SIG1_AT_0\",\n \"values\": [\"0x8F00\"],\n }],\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // First activate advanced network DDoS protection for the desired region\n var policyddosprotection = new Gcp.Compute.RegionSecurityPolicy(\"policyddosprotection\", new()\n {\n Region = \"us-west2\",\n Name = \"policyddosprotection\",\n Description = \"policy for activating network DDoS protection for the desired region\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n DdosProtectionConfig = new Gcp.Compute.Inputs.RegionSecurityPolicyDdosProtectionConfigArgs\n {\n DdosProtection = \"ADVANCED_PREVIEW\",\n },\n });\n\n var edgeSecService = new Gcp.Compute.NetworkEdgeSecurityService(\"edge_sec_service\", new()\n {\n Region = \"us-west2\",\n Name = \"edgesecservice\",\n Description = \"linking policy to edge security service\",\n SecurityPolicy = policyddosprotection.SelfLink,\n });\n\n // Add the desired policy and custom rule.\n var policynetworkmatch = new Gcp.Compute.RegionSecurityPolicy(\"policynetworkmatch\", new()\n {\n Region = \"us-west2\",\n Name = \"policyfornetworkmatch\",\n Description = \"region security policy for network match\",\n Type = \"CLOUD_ARMOR_NETWORK\",\n UserDefinedFields = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyUserDefinedFieldArgs\n {\n Name = \"SIG1_AT_0\",\n Base = \"TCP\",\n Offset = 8,\n Size = 2,\n Mask = \"0x8F00\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n edgeSecService,\n },\n });\n\n var policyRuleNetworkMatch = new Gcp.Compute.RegionSecurityPolicyRule(\"policy_rule_network_match\", new()\n {\n Region = \"us-west2\",\n SecurityPolicy = policynetworkmatch.Name,\n Description = \"custom rule for network match\",\n Priority = 100,\n NetworkMatch = new Gcp.Compute.Inputs.RegionSecurityPolicyRuleNetworkMatchArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n UserDefinedFields = new[]\n {\n new Gcp.Compute.Inputs.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs\n {\n Name = \"SIG1_AT_0\",\n Values = new[]\n {\n \"0x8F00\",\n },\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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// First activate advanced network DDoS protection for the desired region\n\t\tpolicyddosprotection, err := compute.NewRegionSecurityPolicy(ctx, \"policyddosprotection\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policyddosprotection\"),\n\t\t\tDescription: pulumi.String(\"policy for activating network DDoS protection for the desired region\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t\tDdosProtectionConfig: \u0026compute.RegionSecurityPolicyDdosProtectionConfigArgs{\n\t\t\t\tDdosProtection: pulumi.String(\"ADVANCED_PREVIEW\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tedgeSecService, err := compute.NewNetworkEdgeSecurityService(ctx, \"edge_sec_service\", \u0026compute.NetworkEdgeSecurityServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"edgesecservice\"),\n\t\t\tDescription: pulumi.String(\"linking policy to edge security service\"),\n\t\t\tSecurityPolicy: policyddosprotection.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Add the desired policy and custom rule.\n\t\tpolicynetworkmatch, err := compute.NewRegionSecurityPolicy(ctx, \"policynetworkmatch\", \u0026compute.RegionSecurityPolicyArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"policyfornetworkmatch\"),\n\t\t\tDescription: pulumi.String(\"region security policy for network match\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR_NETWORK\"),\n\t\t\tUserDefinedFields: compute.RegionSecurityPolicyUserDefinedFieldArray{\n\t\t\t\t\u0026compute.RegionSecurityPolicyUserDefinedFieldArgs{\n\t\t\t\t\tName: pulumi.String(\"SIG1_AT_0\"),\n\t\t\t\t\tBase: pulumi.String(\"TCP\"),\n\t\t\t\t\tOffset: pulumi.Int(8),\n\t\t\t\t\tSize: pulumi.Int(2),\n\t\t\t\t\tMask: pulumi.String(\"0x8F00\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tedgeSecService,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionSecurityPolicyRule(ctx, \"policy_rule_network_match\", \u0026compute.RegionSecurityPolicyRuleArgs{\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tSecurityPolicy: policynetworkmatch.Name,\n\t\t\tDescription: pulumi.String(\"custom rule for network match\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tNetworkMatch: \u0026compute.RegionSecurityPolicyRuleNetworkMatchArgs{\n\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tUserDefinedFields: compute.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArray{\n\t\t\t\t\t\u0026compute.RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs{\n\t\t\t\t\t\tName: pulumi.String(\"SIG1_AT_0\"),\n\t\t\t\t\t\tValues: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"0x8F00\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionSecurityPolicy;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyDdosProtectionConfigArgs;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityService;\nimport com.pulumi.gcp.compute.NetworkEdgeSecurityServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyUserDefinedFieldArgs;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRule;\nimport com.pulumi.gcp.compute.RegionSecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionSecurityPolicyRuleNetworkMatchArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // First activate advanced network DDoS protection for the desired region\n var policyddosprotection = new RegionSecurityPolicy(\"policyddosprotection\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policyddosprotection\")\n .description(\"policy for activating network DDoS protection for the desired region\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .ddosProtectionConfig(RegionSecurityPolicyDdosProtectionConfigArgs.builder()\n .ddosProtection(\"ADVANCED_PREVIEW\")\n .build())\n .build());\n\n var edgeSecService = new NetworkEdgeSecurityService(\"edgeSecService\", NetworkEdgeSecurityServiceArgs.builder()\n .region(\"us-west2\")\n .name(\"edgesecservice\")\n .description(\"linking policy to edge security service\")\n .securityPolicy(policyddosprotection.selfLink())\n .build());\n\n // Add the desired policy and custom rule.\n var policynetworkmatch = new RegionSecurityPolicy(\"policynetworkmatch\", RegionSecurityPolicyArgs.builder()\n .region(\"us-west2\")\n .name(\"policyfornetworkmatch\")\n .description(\"region security policy for network match\")\n .type(\"CLOUD_ARMOR_NETWORK\")\n .userDefinedFields(RegionSecurityPolicyUserDefinedFieldArgs.builder()\n .name(\"SIG1_AT_0\")\n .base(\"TCP\")\n .offset(8)\n .size(2)\n .mask(\"0x8F00\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(edgeSecService)\n .build());\n\n var policyRuleNetworkMatch = new RegionSecurityPolicyRule(\"policyRuleNetworkMatch\", RegionSecurityPolicyRuleArgs.builder()\n .region(\"us-west2\")\n .securityPolicy(policynetworkmatch.name())\n .description(\"custom rule for network match\")\n .priority(100)\n .networkMatch(RegionSecurityPolicyRuleNetworkMatchArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .userDefinedFields(RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs.builder()\n .name(\"SIG1_AT_0\")\n .values(\"0x8F00\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # First activate advanced network DDoS protection for the desired region\n policyddosprotection:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policyddosprotection\n description: policy for activating network DDoS protection for the desired region\n type: CLOUD_ARMOR_NETWORK\n ddosProtectionConfig:\n ddosProtection: ADVANCED_PREVIEW\n edgeSecService:\n type: gcp:compute:NetworkEdgeSecurityService\n name: edge_sec_service\n properties:\n region: us-west2\n name: edgesecservice\n description: linking policy to edge security service\n securityPolicy: ${policyddosprotection.selfLink}\n # Add the desired policy and custom rule.\n policynetworkmatch:\n type: gcp:compute:RegionSecurityPolicy\n properties:\n region: us-west2\n name: policyfornetworkmatch\n description: region security policy for network match\n type: CLOUD_ARMOR_NETWORK\n userDefinedFields:\n - name: SIG1_AT_0\n base: TCP\n offset: 8\n size: 2\n mask: 0x8F00\n options:\n dependsOn:\n - ${edgeSecService}\n policyRuleNetworkMatch:\n type: gcp:compute:RegionSecurityPolicyRule\n name: policy_rule_network_match\n properties:\n region: us-west2\n securityPolicy: ${policynetworkmatch.name}\n description: custom rule for network match\n priority: 100\n networkMatch:\n srcIpRanges:\n - 10.10.0.0/16\n userDefinedFields:\n - name: SIG1_AT_0\n values:\n - 0x8F00\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionSecurityPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}}`\n\n* `{{project}}/{{region}}/{{security_policy}}/{{priority}}`\n\n* `{{region}}/{{security_policy}}/{{priority}}`\n\n* `{{security_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, RegionSecurityPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default projects/{{project}}/regions/{{region}}/securityPolicies/{{security_policy}}/priority/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{project}}/{{region}}/{{security_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{region}}/{{security_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionSecurityPolicyRule:RegionSecurityPolicyRule default {{security_policy}}/{{priority}}\n```\n\n", "properties": { "action": { "type": "string", @@ -187459,7 +187459,7 @@ } }, "gcp:compute/regionUrlMap:RegionUrlMap": { - "description": "UrlMaps are used to route requests to a backend service based on rules\nthat you define for the host and path of an incoming URL.\n\n\n\n## Example Usage\n\n### Region Url Map Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n requestPath: \"/\",\n },\n});\nconst login = new gcp.compute.RegionBackendService(\"login\", {\n region: \"us-central1\",\n name: \"login\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n region: \"us-central1\",\n name: \"home\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n region: \"us-central1\",\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [\n {\n paths: [\"/home\"],\n service: home.id,\n },\n {\n paths: [\"/login\"],\n service: login.id,\n },\n ],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n \"request_path\": \"/\",\n })\nlogin = gcp.compute.RegionBackendService(\"login\",\n region=\"us-central1\",\n name=\"login\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nhome = gcp.compute.RegionBackendService(\"home\",\n region=\"us-central1\",\n name=\"home\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n region=\"us-central1\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [\n {\n \"paths\": [\"/home\"],\n \"service\": home.id,\n },\n {\n \"paths\": [\"/login\"],\n \"service\": login.id,\n },\n ],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n RequestPath = \"/\",\n },\n });\n\n var login = new Gcp.Compute.RegionBackendService(\"login\", new()\n {\n Region = \"us-central1\",\n Name = \"login\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Region = \"us-central1\",\n Name = \"home\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Region = \"us-central1\",\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n Service = home.Id,\n },\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/login\",\n },\n Service = login.Id,\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogin, err := compute.NewRegionBackendService(ctx, \"login\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: home.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/login\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: login.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .requestPath(\"/\")\n .build())\n .build());\n\n var login = new RegionBackendService(\"login\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"login\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"home\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules( \n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .service(home.id())\n .build(),\n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/login\")\n .service(login.id())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n service: ${home.id}\n - paths:\n - /login\n service: ${login.id}\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n login:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: login\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n home:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: home\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\n requestPath: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map Default Route Action\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n requestPath: \"/\",\n },\n});\nconst login = new gcp.compute.RegionBackendService(\"login\", {\n region: \"us-central1\",\n name: \"login\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n region: \"us-central1\",\n name: \"home\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n region: \"us-central1\",\n name: \"regionurlmap\",\n description: \"a description\",\n defaultRouteAction: {\n retryPolicy: {\n retryConditions: [\n \"5xx\",\n \"gateway-error\",\n ],\n numRetries: 3,\n perTryTimeout: {\n seconds: \"0\",\n nanos: 500,\n },\n },\n requestMirrorPolicy: {\n backendService: home.id,\n },\n weightedBackendServices: [\n {\n backendService: login.id,\n weight: 200,\n headerAction: {\n requestHeadersToAdds: [{\n headerName: \"foo-request-1\",\n headerValue: \"bar\",\n replace: true,\n }],\n requestHeadersToRemoves: [\"fizz\"],\n responseHeadersToAdds: [{\n headerName: \"foo-response-1\",\n headerValue: \"bar\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"buzz\"],\n },\n },\n {\n backendService: home.id,\n weight: 100,\n headerAction: {\n requestHeadersToAdds: [\n {\n headerName: \"foo-request-1\",\n headerValue: \"bar\",\n replace: true,\n },\n {\n headerName: \"foo-request-2\",\n headerValue: \"bar\",\n replace: true,\n },\n ],\n requestHeadersToRemoves: [\"fizz\"],\n responseHeadersToAdds: [\n {\n headerName: \"foo-response-2\",\n headerValue: \"bar\",\n replace: true,\n },\n {\n headerName: \"foo-response-1\",\n headerValue: \"bar\",\n replace: true,\n },\n ],\n responseHeadersToRemoves: [\"buzz\"],\n },\n },\n ],\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n corsPolicy: {\n disabled: false,\n allowCredentials: true,\n allowHeaders: [\"foobar\"],\n allowMethods: [\n \"GET\",\n \"POST\",\n ],\n allowOrigins: [\"example.com\"],\n exposeHeaders: [\"foobar\"],\n maxAge: 60,\n },\n faultInjectionPolicy: {\n delay: {\n fixedDelay: {\n seconds: \"0\",\n nanos: 500,\n },\n percentage: 0.5,\n },\n abort: {\n httpStatus: 500,\n percentage: 0.5,\n },\n },\n timeout: {\n seconds: \"0\",\n nanos: 500,\n },\n },\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [\n {\n paths: [\"/home\"],\n service: home.id,\n },\n {\n paths: [\"/login\"],\n service: login.id,\n },\n ],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n \"request_path\": \"/\",\n })\nlogin = gcp.compute.RegionBackendService(\"login\",\n region=\"us-central1\",\n name=\"login\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nhome = gcp.compute.RegionBackendService(\"home\",\n region=\"us-central1\",\n name=\"home\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n region=\"us-central1\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_route_action={\n \"retry_policy\": {\n \"retry_conditions\": [\n \"5xx\",\n \"gateway-error\",\n ],\n \"num_retries\": 3,\n \"per_try_timeout\": {\n \"seconds\": \"0\",\n \"nanos\": 500,\n },\n },\n \"request_mirror_policy\": {\n \"backend_service\": home.id,\n },\n \"weighted_backend_services\": [\n {\n \"backend_service\": login.id,\n \"weight\": 200,\n \"header_action\": {\n \"request_headers_to_adds\": [{\n \"header_name\": \"foo-request-1\",\n \"header_value\": \"bar\",\n \"replace\": True,\n }],\n \"request_headers_to_removes\": [\"fizz\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"foo-response-1\",\n \"header_value\": \"bar\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"buzz\"],\n },\n },\n {\n \"backend_service\": home.id,\n \"weight\": 100,\n \"header_action\": {\n \"request_headers_to_adds\": [\n {\n \"header_name\": \"foo-request-1\",\n \"header_value\": \"bar\",\n \"replace\": True,\n },\n {\n \"header_name\": \"foo-request-2\",\n \"header_value\": \"bar\",\n \"replace\": True,\n },\n ],\n \"request_headers_to_removes\": [\"fizz\"],\n \"response_headers_to_adds\": [\n {\n \"header_name\": \"foo-response-2\",\n \"header_value\": \"bar\",\n \"replace\": True,\n },\n {\n \"header_name\": \"foo-response-1\",\n \"header_value\": \"bar\",\n \"replace\": True,\n },\n ],\n \"response_headers_to_removes\": [\"buzz\"],\n },\n },\n ],\n \"url_rewrite\": {\n \"host_rewrite\": \"dev.example.com\",\n \"path_prefix_rewrite\": \"/v1/api/\",\n },\n \"cors_policy\": {\n \"disabled\": False,\n \"allow_credentials\": True,\n \"allow_headers\": [\"foobar\"],\n \"allow_methods\": [\n \"GET\",\n \"POST\",\n ],\n \"allow_origins\": [\"example.com\"],\n \"expose_headers\": [\"foobar\"],\n \"max_age\": 60,\n },\n \"fault_injection_policy\": {\n \"delay\": {\n \"fixed_delay\": {\n \"seconds\": \"0\",\n \"nanos\": 500,\n },\n \"percentage\": 0.5,\n },\n \"abort\": {\n \"http_status\": 500,\n \"percentage\": 0.5,\n },\n },\n \"timeout\": {\n \"seconds\": \"0\",\n \"nanos\": 500,\n },\n },\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [\n {\n \"paths\": [\"/home\"],\n \"service\": home.id,\n },\n {\n \"paths\": [\"/login\"],\n \"service\": login.id,\n },\n ],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n RequestPath = \"/\",\n },\n });\n\n var login = new Gcp.Compute.RegionBackendService(\"login\", new()\n {\n Region = \"us-central1\",\n Name = \"login\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Region = \"us-central1\",\n Name = \"home\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Region = \"us-central1\",\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultRouteAction = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionArgs\n {\n RetryPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"5xx\",\n \"gateway-error\",\n },\n NumRetries = 3,\n PerTryTimeout = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"0\",\n Nanos = 500,\n },\n },\n RequestMirrorPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs\n {\n BackendService = home.Id,\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs\n {\n BackendService = login.Id,\n Weight = 200,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"foo-request-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n RequestHeadersToRemoves = new[]\n {\n \"fizz\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"foo-response-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"buzz\",\n },\n },\n },\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 100,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"foo-request-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"foo-request-2\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n RequestHeadersToRemoves = new[]\n {\n \"fizz\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"foo-response-2\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"foo-response-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"buzz\",\n },\n },\n },\n },\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n CorsPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionCorsPolicyArgs\n {\n Disabled = false,\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"foobar\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"POST\",\n },\n AllowOrigins = new[]\n {\n \"example.com\",\n },\n ExposeHeaders = new[]\n {\n \"foobar\",\n },\n MaxAge = 60,\n },\n FaultInjectionPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs\n {\n Seconds = \"0\",\n Nanos = 500,\n },\n Percentage = 0.5,\n },\n Abort = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 0.5,\n },\n },\n Timeout = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionTimeoutArgs\n {\n Seconds = \"0\",\n Nanos = 500,\n },\n },\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n Service = home.Id,\n },\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/login\",\n },\n Service = login.Id,\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogin, err := compute.NewRegionBackendService(ctx, \"login\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultRouteAction: \u0026compute.RegionUrlMapDefaultRouteActionArgs{\n\t\t\t\tRetryPolicy: \u0026compute.RegionUrlMapDefaultRouteActionRetryPolicyArgs{\n\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\tpulumi.String(\"gateway-error\"),\n\t\t\t\t\t},\n\t\t\t\t\tNumRetries: pulumi.Int(3),\n\t\t\t\t\tPerTryTimeout: \u0026compute.RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\tNanos: pulumi.Int(500),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRequestMirrorPolicy: \u0026compute.RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs{\n\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t},\n\t\t\t\tWeightedBackendServices: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\tBackendService: login.ID(),\n\t\t\t\t\t\tWeight: pulumi.Int(200),\n\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-request-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fizz\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-response-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"buzz\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\tWeight: pulumi.Int(100),\n\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-request-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-request-2\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fizz\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-response-2\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-response-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"buzz\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapDefaultRouteActionUrlRewriteArgs{\n\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t},\n\t\t\t\tCorsPolicy: \u0026compute.RegionUrlMapDefaultRouteActionCorsPolicyArgs{\n\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foobar\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\tpulumi.String(\"POST\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foobar\"),\n\t\t\t\t\t},\n\t\t\t\t\tMaxAge: pulumi.Int(60),\n\t\t\t\t},\n\t\t\t\tFaultInjectionPolicy: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs{\n\t\t\t\t\tDelay: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\tFixedDelay: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs{\n\t\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\t\tNanos: pulumi.Int(500),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPercentage: pulumi.Float64(0.5),\n\t\t\t\t\t},\n\t\t\t\t\tAbort: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\tPercentage: pulumi.Float64(0.5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTimeout: \u0026compute.RegionUrlMapDefaultRouteActionTimeoutArgs{\n\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\tNanos: pulumi.Int(500),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: home.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/login\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: login.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionRetryPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionUrlRewriteArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionCorsPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionTimeoutArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .requestPath(\"/\")\n .build())\n .build());\n\n var login = new RegionBackendService(\"login\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"login\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"home\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultRouteAction(RegionUrlMapDefaultRouteActionArgs.builder()\n .retryPolicy(RegionUrlMapDefaultRouteActionRetryPolicyArgs.builder()\n .retryConditions( \n \"5xx\",\n \"gateway-error\")\n .numRetries(3)\n .perTryTimeout(RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(0)\n .nanos(500)\n .build())\n .build())\n .requestMirrorPolicy(RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs.builder()\n .backendService(home.id())\n .build())\n .weightedBackendServices( \n RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs.builder()\n .backendService(login.id())\n .weight(200)\n .headerAction(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToAdds(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"foo-request-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .requestHeadersToRemoves(\"fizz\")\n .responseHeadersToAdds(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"foo-response-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"buzz\")\n .build())\n .build(),\n RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(100)\n .headerAction(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToAdds( \n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"foo-request-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build(),\n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"foo-request-2\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .requestHeadersToRemoves(\"fizz\")\n .responseHeadersToAdds( \n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"foo-response-2\")\n .headerValue(\"bar\")\n .replace(true)\n .build(),\n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"foo-response-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"buzz\")\n .build())\n .build())\n .urlRewrite(RegionUrlMapDefaultRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .corsPolicy(RegionUrlMapDefaultRouteActionCorsPolicyArgs.builder()\n .disabled(false)\n .allowCredentials(true)\n .allowHeaders(\"foobar\")\n .allowMethods( \n \"GET\",\n \"POST\")\n .allowOrigins(\"example.com\")\n .exposeHeaders(\"foobar\")\n .maxAge(60)\n .build())\n .faultInjectionPolicy(RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs.builder()\n .delay(RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs.builder()\n .seconds(0)\n .nanos(500)\n .build())\n .percentage(0.5)\n .build())\n .abort(RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(0.5)\n .build())\n .build())\n .timeout(RegionUrlMapDefaultRouteActionTimeoutArgs.builder()\n .seconds(0)\n .nanos(500)\n .build())\n .build())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules( \n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .service(home.id())\n .build(),\n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/login\")\n .service(login.id())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n name: regionurlmap\n description: a description\n defaultRouteAction:\n retryPolicy:\n retryConditions:\n - 5xx\n - gateway-error\n numRetries: 3\n perTryTimeout:\n seconds: 0\n nanos: 500\n requestMirrorPolicy:\n backendService: ${home.id}\n weightedBackendServices:\n - backendService: ${login.id}\n weight: 200\n headerAction:\n requestHeadersToAdds:\n - headerName: foo-request-1\n headerValue: bar\n replace: true\n requestHeadersToRemoves:\n - fizz\n responseHeadersToAdds:\n - headerName: foo-response-1\n headerValue: bar\n replace: true\n responseHeadersToRemoves:\n - buzz\n - backendService: ${home.id}\n weight: 100\n headerAction:\n requestHeadersToAdds:\n - headerName: foo-request-1\n headerValue: bar\n replace: true\n - headerName: foo-request-2\n headerValue: bar\n replace: true\n requestHeadersToRemoves:\n - fizz\n responseHeadersToAdds:\n - headerName: foo-response-2\n headerValue: bar\n replace: true\n - headerName: foo-response-1\n headerValue: bar\n replace: true\n responseHeadersToRemoves:\n - buzz\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n corsPolicy:\n disabled: false\n allowCredentials: true\n allowHeaders:\n - foobar\n allowMethods:\n - GET\n - POST\n allowOrigins:\n - example.com\n exposeHeaders:\n - foobar\n maxAge: 60\n faultInjectionPolicy:\n delay:\n fixedDelay:\n seconds: 0\n nanos: 500\n percentage: 0.5\n abort:\n httpStatus: 500\n percentage: 0.5\n timeout:\n seconds: 0\n nanos: 500\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n service: ${home.id}\n - paths:\n - /login\n service: ${login.id}\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n login:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: login\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n home:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: home\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\n requestPath: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Path\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n corsPolicy: {\n allowCredentials: true,\n allowHeaders: [\"Allowed content\"],\n allowMethods: [\"GET\"],\n allowOrigins: [\"Allowed origin\"],\n exposeHeaders: [\"Exposed header\"],\n maxAge: 30,\n disabled: false,\n },\n faultInjectionPolicy: {\n abort: {\n httpStatus: 234,\n percentage: 5.6,\n },\n delay: {\n fixedDelay: {\n seconds: \"0\",\n nanos: 50000,\n },\n percentage: 7.8,\n },\n },\n requestMirrorPolicy: {\n backendService: home.id,\n },\n retryPolicy: {\n numRetries: 4,\n perTryTimeout: {\n seconds: \"30\",\n },\n retryConditions: [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n timeout: {\n seconds: \"20\",\n nanos: 750000000,\n },\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe\"],\n requestHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [{\n \"paths\": [\"/home\"],\n \"route_action\": {\n \"cors_policy\": {\n \"allow_credentials\": True,\n \"allow_headers\": [\"Allowed content\"],\n \"allow_methods\": [\"GET\"],\n \"allow_origins\": [\"Allowed origin\"],\n \"expose_headers\": [\"Exposed header\"],\n \"max_age\": 30,\n \"disabled\": False,\n },\n \"fault_injection_policy\": {\n \"abort\": {\n \"http_status\": 234,\n \"percentage\": 5.6,\n },\n \"delay\": {\n \"fixed_delay\": {\n \"seconds\": \"0\",\n \"nanos\": 50000,\n },\n \"percentage\": 7.8,\n },\n },\n \"request_mirror_policy\": {\n \"backend_service\": home.id,\n },\n \"retry_policy\": {\n \"num_retries\": 4,\n \"per_try_timeout\": {\n \"seconds\": \"30\",\n },\n \"retry_conditions\": [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n \"timeout\": {\n \"seconds\": \"20\",\n \"nanos\": 750000000,\n },\n \"url_rewrite\": {\n \"host_rewrite\": \"dev.example.com\",\n \"path_prefix_rewrite\": \"/v1/api/\",\n },\n \"weighted_backend_services\": [{\n \"backend_service\": home.id,\n \"weight\": 400,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionArgs\n {\n CorsPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicyArgs\n {\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"Allowed content\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowOrigins = new[]\n {\n \"Allowed origin\",\n },\n ExposeHeaders = new[]\n {\n \"Exposed header\",\n },\n MaxAge = 30,\n Disabled = false,\n },\n FaultInjectionPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs\n {\n Abort = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 234,\n Percentage = 5.6,\n },\n Delay = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs\n {\n Seconds = \"0\",\n Nanos = 50000,\n },\n Percentage = 7.8,\n },\n },\n RequestMirrorPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs\n {\n BackendService = home.Id,\n },\n RetryPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs\n {\n NumRetries = 4,\n PerTryTimeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"30\",\n },\n RetryConditions = new[]\n {\n \"5xx\",\n \"deadline-exceeded\",\n },\n },\n Timeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs\n {\n Seconds = \"20\",\n Nanos = 750000000,\n },\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tCorsPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed content\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed origin\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Exposed header\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMaxAge: pulumi.Int(30),\n\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tFaultInjectionPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\t\t\tAbort: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(234),\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(5.6),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tDelay: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\t\t\tFixedDelay: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs{\n\t\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(50000),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(7.8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestMirrorPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRetryPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs{\n\t\t\t\t\t\t\t\t\tNumRetries: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tPerTryTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"30\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"deadline-exceeded\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs{\n\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"20\"),\n\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(750000000),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(RegionUrlMapPathMatcherPathRuleRouteActionArgs.builder()\n .corsPolicy(RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicyArgs.builder()\n .allowCredentials(true)\n .allowHeaders(\"Allowed content\")\n .allowMethods(\"GET\")\n .allowOrigins(\"Allowed origin\")\n .exposeHeaders(\"Exposed header\")\n .maxAge(30)\n .disabled(false)\n .build())\n .faultInjectionPolicy(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs.builder()\n .abort(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(234)\n .percentage(5.6)\n .build())\n .delay(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs.builder()\n .seconds(0)\n .nanos(50000)\n .build())\n .percentage(7.8)\n .build())\n .build())\n .requestMirrorPolicy(RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs.builder()\n .backendService(home.id())\n .build())\n .retryPolicy(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs.builder()\n .numRetries(4)\n .perTryTimeout(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(30)\n .build())\n .retryConditions( \n \"5xx\",\n \"deadline-exceeded\")\n .build())\n .timeout(RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs.builder()\n .seconds(20)\n .nanos(750000000)\n .build())\n .urlRewrite(RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .weightedBackendServices(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe\")\n .requestHeadersToAdds(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe\")\n .responseHeadersToAdds(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n corsPolicy:\n allowCredentials: true\n allowHeaders:\n - Allowed content\n allowMethods:\n - GET\n allowOrigins:\n - Allowed origin\n exposeHeaders:\n - Exposed header\n maxAge: 30\n disabled: false\n faultInjectionPolicy:\n abort:\n httpStatus: 234\n percentage: 5.6\n delay:\n fixedDelay:\n seconds: 0\n nanos: 50000\n percentage: 7.8\n requestMirrorPolicy:\n backendService: ${home.id}\n retryPolicy:\n numRetries: 4\n perTryTimeout:\n seconds: 30\n retryConditions:\n - 5xx\n - deadline-exceeded\n timeout:\n seconds: 20\n nanos: 7.5e+08\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe\n requestHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Path Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n retryPolicy: {\n numRetries: 4,\n perTryTimeout: {\n seconds: \"30\",\n },\n retryConditions: [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n timeout: {\n seconds: \"20\",\n nanos: 750000000,\n },\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [{\n \"paths\": [\"/home\"],\n \"route_action\": {\n \"retry_policy\": {\n \"num_retries\": 4,\n \"per_try_timeout\": {\n \"seconds\": \"30\",\n },\n \"retry_conditions\": [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n \"timeout\": {\n \"seconds\": \"20\",\n \"nanos\": 750000000,\n },\n \"url_rewrite\": {\n \"host_rewrite\": \"dev.example.com\",\n \"path_prefix_rewrite\": \"/v1/api/\",\n },\n \"weighted_backend_services\": [{\n \"backend_service\": home.id,\n \"weight\": 400,\n \"header_action\": {\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionArgs\n {\n RetryPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs\n {\n NumRetries = 4,\n PerTryTimeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"30\",\n },\n RetryConditions = new[]\n {\n \"5xx\",\n \"deadline-exceeded\",\n },\n },\n Timeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs\n {\n Seconds = \"20\",\n Nanos = 750000000,\n },\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tRetryPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs{\n\t\t\t\t\t\t\t\t\tNumRetries: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tPerTryTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"30\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"deadline-exceeded\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs{\n\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"20\"),\n\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(750000000),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(RegionUrlMapPathMatcherPathRuleRouteActionArgs.builder()\n .retryPolicy(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs.builder()\n .numRetries(4)\n .perTryTimeout(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(30)\n .build())\n .retryConditions( \n \"5xx\",\n \"deadline-exceeded\")\n .build())\n .timeout(RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs.builder()\n .seconds(20)\n .nanos(750000000)\n .build())\n .urlRewrite(RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .weightedBackendServices(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .responseHeadersToAdds(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n retryPolicy:\n numRetries: 4\n perTryTimeout:\n seconds: 30\n retryConditions:\n - 5xx\n - deadline-exceeded\n timeout:\n seconds: 20\n nanos: 7.5e+08\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Route\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n requestHeadersToAdds: [{\n headerName: \"AddSomethingElse\",\n headerValue: \"MyOtherValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe3\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n ignoreCase: true,\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n urlRedirect: {\n hostRedirect: \"A host\",\n httpsRedirect: false,\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n stripQuery: true,\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe2\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddSomethingElse\",\n \"header_value\": \"MyOtherValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe3\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n \"match_rules\": [{\n \"full_path_match\": \"a full path\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n \"ignore_case\": True,\n \"metadata_filters\": [{\n \"filter_match_criteria\": \"MATCH_ANY\",\n \"filter_labels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\n }],\n }],\n \"query_parameter_matches\": [{\n \"name\": \"a query parameter\",\n \"present_match\": True,\n }],\n }],\n \"url_redirect\": {\n \"host_redirect\": \"A host\",\n \"https_redirect\": False,\n \"path_redirect\": \"some/path\",\n \"redirect_response_code\": \"TEMPORARY_REDIRECT\",\n \"strip_query\": True,\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddSomethingElse\",\n HeaderValue = \"MyOtherValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe3\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n IgnoreCase = true,\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleUrlRedirectArgs\n {\n HostRedirect = \"A host\",\n HttpsRedirect = false,\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n StripQuery = true,\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.RegionUrlMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddSomethingElse\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyOtherValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tMetadataFilters: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{\n\t\t\t\t\t\t\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\t\t\t\t\t\t\tFilterLabels: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.RegionUrlMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"A host\"),\n\t\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(false),\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .headerAction(RegionUrlMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .requestHeadersToAdds(RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddSomethingElse\")\n .headerValue(\"MyOtherValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe3\")\n .responseHeadersToAdds(RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .ignoreCase(true)\n .metadataFilters(RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .queryParameterMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .urlRedirect(RegionUrlMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .hostRedirect(\"A host\")\n .httpsRedirect(false)\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .stripQuery(true)\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n requestHeadersToAdds:\n - headerName: AddSomethingElse\n headerValue: MyOtherValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe3\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n ignoreCase: true\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n urlRedirect:\n hostRedirect: A host\n httpsRedirect: false\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n stripQuery: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Route Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n service: home.id,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"service\": home.id,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe2\"],\n },\n \"match_rules\": [{\n \"full_path_match\": \"a full path\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n \"query_parameter_matches\": [{\n \"name\": \"a query parameter\",\n \"present_match\": True,\n }],\n }],\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n Service = home.Id,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.RegionUrlMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tService: home.ID(),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .service(home.id())\n .headerAction(RegionUrlMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .build())\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .queryParameterMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n service: ${home.id}\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map Path Template Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n requestPath: \"/\",\n },\n});\nconst home_backend = new gcp.compute.RegionBackendService(\"home-backend\", {\n region: \"us-central1\",\n name: \"home-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst cart_backend = new gcp.compute.RegionBackendService(\"cart-backend\", {\n region: \"us-central1\",\n name: \"cart-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst user_backend = new gcp.compute.RegionBackendService(\"user-backend\", {\n region: \"us-central1\",\n name: \"user-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst urlmap = new gcp.compute.RegionUrlMap(\"urlmap\", {\n region: \"us-central1\",\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home_backend.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n }],\n pathMatchers: [{\n name: \"mysite\",\n defaultService: home_backend.id,\n routeRules: [\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n service: cart_backend.id,\n priority: 1,\n routeAction: {\n urlRewrite: {\n pathTemplateRewrite: \"/{username}-{cartid}/\",\n },\n },\n },\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n service: user_backend.id,\n priority: 2,\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n \"request_path\": \"/\",\n })\nhome_backend = gcp.compute.RegionBackendService(\"home-backend\",\n region=\"us-central1\",\n name=\"home-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\ncart_backend = gcp.compute.RegionBackendService(\"cart-backend\",\n region=\"us-central1\",\n name=\"cart-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nuser_backend = gcp.compute.RegionBackendService(\"user-backend\",\n region=\"us-central1\",\n name=\"user-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nurlmap = gcp.compute.RegionUrlMap(\"urlmap\",\n region=\"us-central1\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home_backend.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"mysite\",\n }],\n path_matchers=[{\n \"name\": \"mysite\",\n \"default_service\": home_backend.id,\n \"route_rules\": [\n {\n \"match_rules\": [{\n \"path_template_match\": \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n \"service\": cart_backend.id,\n \"priority\": 1,\n \"route_action\": {\n \"url_rewrite\": {\n \"path_template_rewrite\": \"/{username}-{cartid}/\",\n },\n },\n },\n {\n \"match_rules\": [{\n \"path_template_match\": \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n \"service\": user_backend.id,\n \"priority\": 2,\n },\n ],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n RequestPath = \"/\",\n },\n });\n\n var home_backend = new Gcp.Compute.RegionBackendService(\"home-backend\", new()\n {\n Region = \"us-central1\",\n Name = \"home-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var cart_backend = new Gcp.Compute.RegionBackendService(\"cart-backend\", new()\n {\n Region = \"us-central1\",\n Name = \"cart-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var user_backend = new Gcp.Compute.RegionBackendService(\"user-backend\", new()\n {\n Region = \"us-central1\",\n Name = \"user-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var urlmap = new Gcp.Compute.RegionUrlMap(\"urlmap\", new()\n {\n Region = \"us-central1\",\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home_backend.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = home_backend.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n },\n },\n Service = cart_backend.Id,\n Priority = 1,\n RouteAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleRouteActionArgs\n {\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathTemplateRewrite = \"/{username}-{cartid}/\",\n },\n },\n },\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n },\n },\n Service = user_backend.Id,\n Priority = 2,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionBackendService(ctx, \"home-backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"home-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionBackendService(ctx, \"cart-backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"cart-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionBackendService(ctx, \"user-backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"user-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"urlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home_backend.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: home_backend.ID(),\n\t\t\t\t\tRouteRules: compute.RegionUrlMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: cart_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tRouteAction: \u0026compute.RegionUrlMapPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateRewrite: pulumi.String(\"/{username}-{cartid}/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: user_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .requestPath(\"/\")\n .build())\n .build());\n\n var home_backend = new RegionBackendService(\"home-backend\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"home-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var cart_backend = new RegionBackendService(\"cart-backend\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"cart-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var user_backend = new RegionBackendService(\"user-backend\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"user-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var urlmap = new RegionUrlMap(\"urlmap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home_backend.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(home_backend.id())\n .routeRules( \n RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\")\n .build())\n .service(cart_backend.id())\n .priority(1)\n .routeAction(RegionUrlMapPathMatcherRouteRuleRouteActionArgs.builder()\n .urlRewrite(RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathTemplateRewrite(\"/{username}-{cartid}/\")\n .build())\n .build())\n .build(),\n RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\")\n .build())\n .service(user_backend.id())\n .priority(2)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n name: urlmap\n description: a description\n defaultService: ${[\"home-backend\"].id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n pathMatchers:\n - name: mysite\n defaultService: ${[\"home-backend\"].id}\n routeRules:\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\n service: ${[\"cart-backend\"].id}\n priority: 1\n routeAction:\n urlRewrite:\n pathTemplateRewrite: /{username}-{cartid}/\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/*/accountinfo/*\n service: ${[\"user-backend\"].id}\n priority: 2\n home-backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: home-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n cart-backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: cart-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n user-backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: user-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\n requestPath: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionUrlMap can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/urlMaps/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionUrlMap can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default projects/{{project}}/regions/{{region}}/urlMaps/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default {{name}}\n```\n\n", + "description": "UrlMaps are used to route requests to a backend service based on rules\nthat you define for the host and path of an incoming URL.\n\n\n\n## Example Usage\n\n### Region Url Map Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n requestPath: \"/\",\n },\n});\nconst login = new gcp.compute.RegionBackendService(\"login\", {\n region: \"us-central1\",\n name: \"login\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n region: \"us-central1\",\n name: \"home\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n region: \"us-central1\",\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [\n {\n paths: [\"/home\"],\n service: home.id,\n },\n {\n paths: [\"/login\"],\n service: login.id,\n },\n ],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n \"request_path\": \"/\",\n })\nlogin = gcp.compute.RegionBackendService(\"login\",\n region=\"us-central1\",\n name=\"login\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nhome = gcp.compute.RegionBackendService(\"home\",\n region=\"us-central1\",\n name=\"home\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n region=\"us-central1\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [\n {\n \"paths\": [\"/home\"],\n \"service\": home.id,\n },\n {\n \"paths\": [\"/login\"],\n \"service\": login.id,\n },\n ],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n RequestPath = \"/\",\n },\n });\n\n var login = new Gcp.Compute.RegionBackendService(\"login\", new()\n {\n Region = \"us-central1\",\n Name = \"login\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Region = \"us-central1\",\n Name = \"home\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Region = \"us-central1\",\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n Service = home.Id,\n },\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/login\",\n },\n Service = login.Id,\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogin, err := compute.NewRegionBackendService(ctx, \"login\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: home.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/login\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: login.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .requestPath(\"/\")\n .build())\n .build());\n\n var login = new RegionBackendService(\"login\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"login\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"home\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules( \n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .service(home.id())\n .build(),\n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/login\")\n .service(login.id())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n service: ${home.id}\n - paths:\n - /login\n service: ${login.id}\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n login:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: login\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n home:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: home\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\n requestPath: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map Default Route Action\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n requestPath: \"/\",\n },\n});\nconst login = new gcp.compute.RegionBackendService(\"login\", {\n region: \"us-central1\",\n name: \"login\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n region: \"us-central1\",\n name: \"home\",\n protocol: \"HTTP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n region: \"us-central1\",\n name: \"regionurlmap\",\n description: \"a description\",\n defaultRouteAction: {\n retryPolicy: {\n retryConditions: [\n \"5xx\",\n \"gateway-error\",\n ],\n numRetries: 3,\n perTryTimeout: {\n seconds: \"0\",\n nanos: 500,\n },\n },\n requestMirrorPolicy: {\n backendService: home.id,\n },\n weightedBackendServices: [\n {\n backendService: login.id,\n weight: 200,\n headerAction: {\n requestHeadersToAdds: [{\n headerName: \"foo-request-1\",\n headerValue: \"bar\",\n replace: true,\n }],\n requestHeadersToRemoves: [\"fizz\"],\n responseHeadersToAdds: [{\n headerName: \"foo-response-1\",\n headerValue: \"bar\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"buzz\"],\n },\n },\n {\n backendService: home.id,\n weight: 100,\n headerAction: {\n requestHeadersToAdds: [\n {\n headerName: \"foo-request-1\",\n headerValue: \"bar\",\n replace: true,\n },\n {\n headerName: \"foo-request-2\",\n headerValue: \"bar\",\n replace: true,\n },\n ],\n requestHeadersToRemoves: [\"fizz\"],\n responseHeadersToAdds: [\n {\n headerName: \"foo-response-2\",\n headerValue: \"bar\",\n replace: true,\n },\n {\n headerName: \"foo-response-1\",\n headerValue: \"bar\",\n replace: true,\n },\n ],\n responseHeadersToRemoves: [\"buzz\"],\n },\n },\n ],\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n corsPolicy: {\n disabled: false,\n allowCredentials: true,\n allowHeaders: [\"foobar\"],\n allowMethods: [\n \"GET\",\n \"POST\",\n ],\n allowOrigins: [\"example.com\"],\n exposeHeaders: [\"foobar\"],\n maxAge: 60,\n },\n faultInjectionPolicy: {\n delay: {\n fixedDelay: {\n seconds: \"0\",\n nanos: 500,\n },\n percentage: 0.5,\n },\n abort: {\n httpStatus: 500,\n percentage: 0.5,\n },\n },\n timeout: {\n seconds: \"0\",\n nanos: 500,\n },\n },\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [\n {\n paths: [\"/home\"],\n service: home.id,\n },\n {\n paths: [\"/login\"],\n service: login.id,\n },\n ],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n \"request_path\": \"/\",\n })\nlogin = gcp.compute.RegionBackendService(\"login\",\n region=\"us-central1\",\n name=\"login\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nhome = gcp.compute.RegionBackendService(\"home\",\n region=\"us-central1\",\n name=\"home\",\n protocol=\"HTTP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n timeout_sec=10,\n health_checks=default.id)\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n region=\"us-central1\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_route_action={\n \"retry_policy\": {\n \"retry_conditions\": [\n \"5xx\",\n \"gateway-error\",\n ],\n \"num_retries\": 3,\n \"per_try_timeout\": {\n \"seconds\": \"0\",\n \"nanos\": 500,\n },\n },\n \"request_mirror_policy\": {\n \"backend_service\": home.id,\n },\n \"weighted_backend_services\": [\n {\n \"backend_service\": login.id,\n \"weight\": 200,\n \"header_action\": {\n \"request_headers_to_adds\": [{\n \"header_name\": \"foo-request-1\",\n \"header_value\": \"bar\",\n \"replace\": True,\n }],\n \"request_headers_to_removes\": [\"fizz\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"foo-response-1\",\n \"header_value\": \"bar\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"buzz\"],\n },\n },\n {\n \"backend_service\": home.id,\n \"weight\": 100,\n \"header_action\": {\n \"request_headers_to_adds\": [\n {\n \"header_name\": \"foo-request-1\",\n \"header_value\": \"bar\",\n \"replace\": True,\n },\n {\n \"header_name\": \"foo-request-2\",\n \"header_value\": \"bar\",\n \"replace\": True,\n },\n ],\n \"request_headers_to_removes\": [\"fizz\"],\n \"response_headers_to_adds\": [\n {\n \"header_name\": \"foo-response-2\",\n \"header_value\": \"bar\",\n \"replace\": True,\n },\n {\n \"header_name\": \"foo-response-1\",\n \"header_value\": \"bar\",\n \"replace\": True,\n },\n ],\n \"response_headers_to_removes\": [\"buzz\"],\n },\n },\n ],\n \"url_rewrite\": {\n \"host_rewrite\": \"dev.example.com\",\n \"path_prefix_rewrite\": \"/v1/api/\",\n },\n \"cors_policy\": {\n \"disabled\": False,\n \"allow_credentials\": True,\n \"allow_headers\": [\"foobar\"],\n \"allow_methods\": [\n \"GET\",\n \"POST\",\n ],\n \"allow_origins\": [\"example.com\"],\n \"expose_headers\": [\"foobar\"],\n \"max_age\": 60,\n },\n \"fault_injection_policy\": {\n \"delay\": {\n \"fixed_delay\": {\n \"seconds\": \"0\",\n \"nanos\": 500,\n },\n \"percentage\": 0.5,\n },\n \"abort\": {\n \"http_status\": 500,\n \"percentage\": 0.5,\n },\n },\n \"timeout\": {\n \"seconds\": \"0\",\n \"nanos\": 500,\n },\n },\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [\n {\n \"paths\": [\"/home\"],\n \"service\": home.id,\n },\n {\n \"paths\": [\"/login\"],\n \"service\": login.id,\n },\n ],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n RequestPath = \"/\",\n },\n });\n\n var login = new Gcp.Compute.RegionBackendService(\"login\", new()\n {\n Region = \"us-central1\",\n Name = \"login\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Region = \"us-central1\",\n Name = \"home\",\n Protocol = \"HTTP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Region = \"us-central1\",\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultRouteAction = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionArgs\n {\n RetryPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionRetryPolicyArgs\n {\n RetryConditions = new[]\n {\n \"5xx\",\n \"gateway-error\",\n },\n NumRetries = 3,\n PerTryTimeout = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"0\",\n Nanos = 500,\n },\n },\n RequestMirrorPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs\n {\n BackendService = home.Id,\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs\n {\n BackendService = login.Id,\n Weight = 200,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"foo-request-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n RequestHeadersToRemoves = new[]\n {\n \"fizz\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"foo-response-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"buzz\",\n },\n },\n },\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 100,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"foo-request-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"foo-request-2\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n RequestHeadersToRemoves = new[]\n {\n \"fizz\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"foo-response-2\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"foo-response-1\",\n HeaderValue = \"bar\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"buzz\",\n },\n },\n },\n },\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n CorsPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionCorsPolicyArgs\n {\n Disabled = false,\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"foobar\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n \"POST\",\n },\n AllowOrigins = new[]\n {\n \"example.com\",\n },\n ExposeHeaders = new[]\n {\n \"foobar\",\n },\n MaxAge = 60,\n },\n FaultInjectionPolicy = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs\n {\n Delay = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs\n {\n Seconds = \"0\",\n Nanos = 500,\n },\n Percentage = 0.5,\n },\n Abort = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 500,\n Percentage = 0.5,\n },\n },\n Timeout = new Gcp.Compute.Inputs.RegionUrlMapDefaultRouteActionTimeoutArgs\n {\n Seconds = \"0\",\n Nanos = 500,\n },\n },\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n Service = home.Id,\n },\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/login\",\n },\n Service = login.Id,\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogin, err := compute.NewRegionBackendService(ctx, \"login\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultRouteAction: \u0026compute.RegionUrlMapDefaultRouteActionArgs{\n\t\t\t\tRetryPolicy: \u0026compute.RegionUrlMapDefaultRouteActionRetryPolicyArgs{\n\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\tpulumi.String(\"gateway-error\"),\n\t\t\t\t\t},\n\t\t\t\t\tNumRetries: pulumi.Int(3),\n\t\t\t\t\tPerTryTimeout: \u0026compute.RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\tNanos: pulumi.Int(500),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tRequestMirrorPolicy: \u0026compute.RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs{\n\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t},\n\t\t\t\tWeightedBackendServices: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\tBackendService: login.ID(),\n\t\t\t\t\t\tWeight: pulumi.Int(200),\n\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-request-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fizz\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-response-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"buzz\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\tWeight: pulumi.Int(100),\n\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-request-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-request-2\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fizz\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-response-2\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"foo-response-1\"),\n\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"bar\"),\n\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"buzz\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapDefaultRouteActionUrlRewriteArgs{\n\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t},\n\t\t\t\tCorsPolicy: \u0026compute.RegionUrlMapDefaultRouteActionCorsPolicyArgs{\n\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foobar\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\tpulumi.String(\"POST\"),\n\t\t\t\t\t},\n\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"foobar\"),\n\t\t\t\t\t},\n\t\t\t\t\tMaxAge: pulumi.Int(60),\n\t\t\t\t},\n\t\t\t\tFaultInjectionPolicy: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs{\n\t\t\t\t\tDelay: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\tFixedDelay: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs{\n\t\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\t\tNanos: pulumi.Int(500),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPercentage: pulumi.Float64(0.5),\n\t\t\t\t\t},\n\t\t\t\t\tAbort: \u0026compute.RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\tHttpStatus: pulumi.Int(500),\n\t\t\t\t\t\tPercentage: pulumi.Float64(0.5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTimeout: \u0026compute.RegionUrlMapDefaultRouteActionTimeoutArgs{\n\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\tNanos: pulumi.Int(500),\n\t\t\t\t},\n\t\t\t},\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: home.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/login\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: login.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionRetryPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionUrlRewriteArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionCorsPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapDefaultRouteActionTimeoutArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .requestPath(\"/\")\n .build())\n .build());\n\n var login = new RegionBackendService(\"login\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"login\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"home\")\n .protocol(\"HTTP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultRouteAction(RegionUrlMapDefaultRouteActionArgs.builder()\n .retryPolicy(RegionUrlMapDefaultRouteActionRetryPolicyArgs.builder()\n .retryConditions( \n \"5xx\",\n \"gateway-error\")\n .numRetries(3)\n .perTryTimeout(RegionUrlMapDefaultRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(0)\n .nanos(500)\n .build())\n .build())\n .requestMirrorPolicy(RegionUrlMapDefaultRouteActionRequestMirrorPolicyArgs.builder()\n .backendService(home.id())\n .build())\n .weightedBackendServices( \n RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs.builder()\n .backendService(login.id())\n .weight(200)\n .headerAction(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToAdds(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"foo-request-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .requestHeadersToRemoves(\"fizz\")\n .responseHeadersToAdds(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"foo-response-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"buzz\")\n .build())\n .build(),\n RegionUrlMapDefaultRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(100)\n .headerAction(RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToAdds( \n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"foo-request-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build(),\n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"foo-request-2\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .requestHeadersToRemoves(\"fizz\")\n .responseHeadersToAdds( \n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"foo-response-2\")\n .headerValue(\"bar\")\n .replace(true)\n .build(),\n RegionUrlMapDefaultRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"foo-response-1\")\n .headerValue(\"bar\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"buzz\")\n .build())\n .build())\n .urlRewrite(RegionUrlMapDefaultRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .corsPolicy(RegionUrlMapDefaultRouteActionCorsPolicyArgs.builder()\n .disabled(false)\n .allowCredentials(true)\n .allowHeaders(\"foobar\")\n .allowMethods( \n \"GET\",\n \"POST\")\n .allowOrigins(\"example.com\")\n .exposeHeaders(\"foobar\")\n .maxAge(60)\n .build())\n .faultInjectionPolicy(RegionUrlMapDefaultRouteActionFaultInjectionPolicyArgs.builder()\n .delay(RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(RegionUrlMapDefaultRouteActionFaultInjectionPolicyDelayFixedDelayArgs.builder()\n .seconds(0)\n .nanos(500)\n .build())\n .percentage(0.5)\n .build())\n .abort(RegionUrlMapDefaultRouteActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(500)\n .percentage(0.5)\n .build())\n .build())\n .timeout(RegionUrlMapDefaultRouteActionTimeoutArgs.builder()\n .seconds(0)\n .nanos(500)\n .build())\n .build())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules( \n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .service(home.id())\n .build(),\n RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/login\")\n .service(login.id())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n name: regionurlmap\n description: a description\n defaultRouteAction:\n retryPolicy:\n retryConditions:\n - 5xx\n - gateway-error\n numRetries: 3\n perTryTimeout:\n seconds: 0\n nanos: 500\n requestMirrorPolicy:\n backendService: ${home.id}\n weightedBackendServices:\n - backendService: ${login.id}\n weight: 200\n headerAction:\n requestHeadersToAdds:\n - headerName: foo-request-1\n headerValue: bar\n replace: true\n requestHeadersToRemoves:\n - fizz\n responseHeadersToAdds:\n - headerName: foo-response-1\n headerValue: bar\n replace: true\n responseHeadersToRemoves:\n - buzz\n - backendService: ${home.id}\n weight: 100\n headerAction:\n requestHeadersToAdds:\n - headerName: foo-request-1\n headerValue: bar\n replace: true\n - headerName: foo-request-2\n headerValue: bar\n replace: true\n requestHeadersToRemoves:\n - fizz\n responseHeadersToAdds:\n - headerName: foo-response-2\n headerValue: bar\n replace: true\n - headerName: foo-response-1\n headerValue: bar\n replace: true\n responseHeadersToRemoves:\n - buzz\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n corsPolicy:\n disabled: false\n allowCredentials: true\n allowHeaders:\n - foobar\n allowMethods:\n - GET\n - POST\n allowOrigins:\n - example.com\n exposeHeaders:\n - foobar\n maxAge: 60\n faultInjectionPolicy:\n delay:\n fixedDelay:\n seconds: 0\n nanos: 500\n percentage: 0.5\n abort:\n httpStatus: 500\n percentage: 0.5\n timeout:\n seconds: 0\n nanos: 500\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n service: ${home.id}\n - paths:\n - /login\n service: ${login.id}\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n login:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: login\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n home:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: home\n protocol: HTTP\n loadBalancingScheme: INTERNAL_MANAGED\n timeoutSec: 10\n healthChecks: ${default.id}\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\n requestPath: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Path\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n corsPolicy: {\n allowCredentials: true,\n allowHeaders: [\"Allowed content\"],\n allowMethods: [\"GET\"],\n allowOrigins: [\"Allowed origin\"],\n exposeHeaders: [\"Exposed header\"],\n maxAge: 30,\n disabled: false,\n },\n faultInjectionPolicy: {\n abort: {\n httpStatus: 234,\n percentage: 5.6,\n },\n delay: {\n fixedDelay: {\n seconds: \"0\",\n nanos: 50000,\n },\n percentage: 7.8,\n },\n },\n requestMirrorPolicy: {\n backendService: home.id,\n },\n retryPolicy: {\n numRetries: 4,\n perTryTimeout: {\n seconds: \"30\",\n },\n retryConditions: [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n timeout: {\n seconds: \"20\",\n nanos: 750000000,\n },\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe\"],\n requestHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [{\n \"paths\": [\"/home\"],\n \"route_action\": {\n \"cors_policy\": {\n \"allow_credentials\": True,\n \"allow_headers\": [\"Allowed content\"],\n \"allow_methods\": [\"GET\"],\n \"allow_origins\": [\"Allowed origin\"],\n \"expose_headers\": [\"Exposed header\"],\n \"max_age\": 30,\n \"disabled\": False,\n },\n \"fault_injection_policy\": {\n \"abort\": {\n \"http_status\": 234,\n \"percentage\": 5.6,\n },\n \"delay\": {\n \"fixed_delay\": {\n \"seconds\": \"0\",\n \"nanos\": 50000,\n },\n \"percentage\": 7.8,\n },\n },\n \"request_mirror_policy\": {\n \"backend_service\": home.id,\n },\n \"retry_policy\": {\n \"num_retries\": 4,\n \"per_try_timeout\": {\n \"seconds\": \"30\",\n },\n \"retry_conditions\": [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n \"timeout\": {\n \"seconds\": \"20\",\n \"nanos\": 750000000,\n },\n \"url_rewrite\": {\n \"host_rewrite\": \"dev.example.com\",\n \"path_prefix_rewrite\": \"/v1/api/\",\n },\n \"weighted_backend_services\": [{\n \"backend_service\": home.id,\n \"weight\": 400,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionArgs\n {\n CorsPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicyArgs\n {\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"Allowed content\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowOrigins = new[]\n {\n \"Allowed origin\",\n },\n ExposeHeaders = new[]\n {\n \"Exposed header\",\n },\n MaxAge = 30,\n Disabled = false,\n },\n FaultInjectionPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs\n {\n Abort = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 234,\n Percentage = 5.6,\n },\n Delay = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs\n {\n Seconds = \"0\",\n Nanos = 50000,\n },\n Percentage = 7.8,\n },\n },\n RequestMirrorPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs\n {\n BackendService = home.Id,\n },\n RetryPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs\n {\n NumRetries = 4,\n PerTryTimeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"30\",\n },\n RetryConditions = new[]\n {\n \"5xx\",\n \"deadline-exceeded\",\n },\n },\n Timeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs\n {\n Seconds = \"20\",\n Nanos = 750000000,\n },\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tCorsPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed content\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed origin\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Exposed header\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMaxAge: pulumi.Int(30),\n\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tFaultInjectionPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\t\t\tAbort: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(234),\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(5.6),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tDelay: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\t\t\tFixedDelay: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs{\n\t\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(50000),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(7.8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestMirrorPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRetryPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs{\n\t\t\t\t\t\t\t\t\tNumRetries: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tPerTryTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"30\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"deadline-exceeded\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs{\n\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"20\"),\n\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(750000000),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(RegionUrlMapPathMatcherPathRuleRouteActionArgs.builder()\n .corsPolicy(RegionUrlMapPathMatcherPathRuleRouteActionCorsPolicyArgs.builder()\n .allowCredentials(true)\n .allowHeaders(\"Allowed content\")\n .allowMethods(\"GET\")\n .allowOrigins(\"Allowed origin\")\n .exposeHeaders(\"Exposed header\")\n .maxAge(30)\n .disabled(false)\n .build())\n .faultInjectionPolicy(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs.builder()\n .abort(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(234)\n .percentage(5.6)\n .build())\n .delay(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(RegionUrlMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs.builder()\n .seconds(0)\n .nanos(50000)\n .build())\n .percentage(7.8)\n .build())\n .build())\n .requestMirrorPolicy(RegionUrlMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs.builder()\n .backendService(home.id())\n .build())\n .retryPolicy(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs.builder()\n .numRetries(4)\n .perTryTimeout(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(30)\n .build())\n .retryConditions( \n \"5xx\",\n \"deadline-exceeded\")\n .build())\n .timeout(RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs.builder()\n .seconds(20)\n .nanos(750000000)\n .build())\n .urlRewrite(RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .weightedBackendServices(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe\")\n .requestHeadersToAdds(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe\")\n .responseHeadersToAdds(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n corsPolicy:\n allowCredentials: true\n allowHeaders:\n - Allowed content\n allowMethods:\n - GET\n allowOrigins:\n - Allowed origin\n exposeHeaders:\n - Exposed header\n maxAge: 30\n disabled: false\n faultInjectionPolicy:\n abort:\n httpStatus: 234\n percentage: 5.6\n delay:\n fixedDelay:\n seconds: 0\n nanos: 50000\n percentage: 7.8\n requestMirrorPolicy:\n backendService: ${home.id}\n retryPolicy:\n numRetries: 4\n perTryTimeout:\n seconds: 30\n retryConditions:\n - 5xx\n - deadline-exceeded\n timeout:\n seconds: 20\n nanos: 7.5e+08\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe\n requestHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Path Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n retryPolicy: {\n numRetries: 4,\n perTryTimeout: {\n seconds: \"30\",\n },\n retryConditions: [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n timeout: {\n seconds: \"20\",\n nanos: 750000000,\n },\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [{\n \"paths\": [\"/home\"],\n \"route_action\": {\n \"retry_policy\": {\n \"num_retries\": 4,\n \"per_try_timeout\": {\n \"seconds\": \"30\",\n },\n \"retry_conditions\": [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n \"timeout\": {\n \"seconds\": \"20\",\n \"nanos\": 750000000,\n },\n \"url_rewrite\": {\n \"host_rewrite\": \"dev.example.com\",\n \"path_prefix_rewrite\": \"/v1/api/\",\n },\n \"weighted_backend_services\": [{\n \"backend_service\": home.id,\n \"weight\": 400,\n \"header_action\": {\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionArgs\n {\n RetryPolicy = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs\n {\n NumRetries = 4,\n PerTryTimeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"30\",\n },\n RetryConditions = new[]\n {\n \"5xx\",\n \"deadline-exceeded\",\n },\n },\n Timeout = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs\n {\n Seconds = \"20\",\n Nanos = 750000000,\n },\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.RegionUrlMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tRetryPolicy: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs{\n\t\t\t\t\t\t\t\t\tNumRetries: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tPerTryTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"30\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"deadline-exceeded\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tTimeout: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs{\n\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"20\"),\n\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(750000000),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(RegionUrlMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(RegionUrlMapPathMatcherPathRuleRouteActionArgs.builder()\n .retryPolicy(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyArgs.builder()\n .numRetries(4)\n .perTryTimeout(RegionUrlMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(30)\n .build())\n .retryConditions( \n \"5xx\",\n \"deadline-exceeded\")\n .build())\n .timeout(RegionUrlMapPathMatcherPathRuleRouteActionTimeoutArgs.builder()\n .seconds(20)\n .nanos(750000000)\n .build())\n .urlRewrite(RegionUrlMapPathMatcherPathRuleRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .weightedBackendServices(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .responseHeadersToAdds(RegionUrlMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n retryPolicy:\n numRetries: 4\n perTryTimeout:\n seconds: 30\n retryConditions:\n - 5xx\n - deadline-exceeded\n timeout:\n seconds: 20\n nanos: 7.5e+08\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Route\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n requestHeadersToAdds: [{\n headerName: \"AddSomethingElse\",\n headerValue: \"MyOtherValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe3\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n ignoreCase: true,\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n urlRedirect: {\n hostRedirect: \"A host\",\n httpsRedirect: false,\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n stripQuery: true,\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe2\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddSomethingElse\",\n \"header_value\": \"MyOtherValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe3\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n \"match_rules\": [{\n \"full_path_match\": \"a full path\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n \"ignore_case\": True,\n \"metadata_filters\": [{\n \"filter_match_criteria\": \"MATCH_ANY\",\n \"filter_labels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\n }],\n }],\n \"query_parameter_matches\": [{\n \"name\": \"a query parameter\",\n \"present_match\": True,\n }],\n }],\n \"url_redirect\": {\n \"host_redirect\": \"A host\",\n \"https_redirect\": False,\n \"path_redirect\": \"some/path\",\n \"redirect_response_code\": \"TEMPORARY_REDIRECT\",\n \"strip_query\": True,\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddSomethingElse\",\n HeaderValue = \"MyOtherValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe3\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n IgnoreCase = true,\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleUrlRedirectArgs\n {\n HostRedirect = \"A host\",\n HttpsRedirect = false,\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n StripQuery = true,\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.RegionUrlMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddSomethingElse\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyOtherValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tMetadataFilters: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{\n\t\t\t\t\t\t\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\t\t\t\t\t\t\tFilterLabels: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.RegionUrlMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"A host\"),\n\t\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(false),\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .headerAction(RegionUrlMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .requestHeadersToAdds(RegionUrlMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddSomethingElse\")\n .headerValue(\"MyOtherValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe3\")\n .responseHeadersToAdds(RegionUrlMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .ignoreCase(true)\n .metadataFilters(RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(RegionUrlMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .queryParameterMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .urlRedirect(RegionUrlMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .hostRedirect(\"A host\")\n .httpsRedirect(false)\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .stripQuery(true)\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n requestHeadersToAdds:\n - headerName: AddSomethingElse\n headerValue: MyOtherValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe3\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n ignoreCase: true\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n urlRedirect:\n hostRedirect: A host\n httpsRedirect: false\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n stripQuery: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map L7 Ilb Route Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.RegionBackendService(\"home\", {\n name: \"home\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n});\nconst regionurlmap = new gcp.compute.RegionUrlMap(\"regionurlmap\", {\n name: \"regionurlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n service: home.id,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.RegionBackendService(\"home\",\n name=\"home\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_MANAGED\")\nregionurlmap = gcp.compute.RegionUrlMap(\"regionurlmap\",\n name=\"regionurlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"service\": home.id,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe2\"],\n },\n \"match_rules\": [{\n \"full_path_match\": \"a full path\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n \"query_parameter_matches\": [{\n \"name\": \"a query parameter\",\n \"present_match\": True,\n }],\n }],\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.RegionBackendService(\"home\", new()\n {\n Name = \"home\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n });\n\n var regionurlmap = new Gcp.Compute.RegionUrlMap(\"regionurlmap\", new()\n {\n Name = \"regionurlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n Service = home.Id,\n HeaderAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewRegionBackendService(ctx, \"home\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"regionurlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tName: pulumi.String(\"regionurlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.RegionUrlMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tService: home.ID(),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.RegionUrlMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.RegionUrlMapTestArray{\n\t\t\t\t\u0026compute.RegionUrlMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new RegionBackendService(\"home\", RegionBackendServiceArgs.builder()\n .name(\"home\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .build());\n\n var regionurlmap = new RegionUrlMap(\"regionurlmap\", RegionUrlMapArgs.builder()\n .name(\"regionurlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .service(home.id())\n .headerAction(RegionUrlMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .build())\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .queryParameterMatches(RegionUrlMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .build())\n .build())\n .tests(RegionUrlMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regionurlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n name: regionurlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n service: ${home.id}\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:RegionBackendService\n properties:\n name: home\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_MANAGED\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Region Url Map Path Template Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.RegionHealthCheck(\"default\", {\n region: \"us-central1\",\n name: \"health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n httpHealthCheck: {\n port: 80,\n requestPath: \"/\",\n },\n});\nconst home_backend = new gcp.compute.RegionBackendService(\"home-backend\", {\n region: \"us-central1\",\n name: \"home-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst cart_backend = new gcp.compute.RegionBackendService(\"cart-backend\", {\n region: \"us-central1\",\n name: \"cart-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst user_backend = new gcp.compute.RegionBackendService(\"user-backend\", {\n region: \"us-central1\",\n name: \"user-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst urlmap = new gcp.compute.RegionUrlMap(\"urlmap\", {\n region: \"us-central1\",\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home_backend.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n }],\n pathMatchers: [{\n name: \"mysite\",\n defaultService: home_backend.id,\n routeRules: [\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n service: cart_backend.id,\n priority: 1,\n routeAction: {\n urlRewrite: {\n pathTemplateRewrite: \"/{username}-{cartid}/\",\n },\n },\n },\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n service: user_backend.id,\n priority: 2,\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionHealthCheck(\"default\",\n region=\"us-central1\",\n name=\"health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n http_health_check={\n \"port\": 80,\n \"request_path\": \"/\",\n })\nhome_backend = gcp.compute.RegionBackendService(\"home-backend\",\n region=\"us-central1\",\n name=\"home-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\ncart_backend = gcp.compute.RegionBackendService(\"cart-backend\",\n region=\"us-central1\",\n name=\"cart-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nuser_backend = gcp.compute.RegionBackendService(\"user-backend\",\n region=\"us-central1\",\n name=\"user-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nurlmap = gcp.compute.RegionUrlMap(\"urlmap\",\n region=\"us-central1\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home_backend.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"mysite\",\n }],\n path_matchers=[{\n \"name\": \"mysite\",\n \"default_service\": home_backend.id,\n \"route_rules\": [\n {\n \"match_rules\": [{\n \"path_template_match\": \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n \"service\": cart_backend.id,\n \"priority\": 1,\n \"route_action\": {\n \"url_rewrite\": {\n \"path_template_rewrite\": \"/{username}-{cartid}/\",\n },\n },\n },\n {\n \"match_rules\": [{\n \"path_template_match\": \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n \"service\": user_backend.id,\n \"priority\": 2,\n },\n ],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionHealthCheck(\"default\", new()\n {\n Region = \"us-central1\",\n Name = \"health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n HttpHealthCheck = new Gcp.Compute.Inputs.RegionHealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n RequestPath = \"/\",\n },\n });\n\n var home_backend = new Gcp.Compute.RegionBackendService(\"home-backend\", new()\n {\n Region = \"us-central1\",\n Name = \"home-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var cart_backend = new Gcp.Compute.RegionBackendService(\"cart-backend\", new()\n {\n Region = \"us-central1\",\n Name = \"cart-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var user_backend = new Gcp.Compute.RegionBackendService(\"user-backend\", new()\n {\n Region = \"us-central1\",\n Name = \"user-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var urlmap = new Gcp.Compute.RegionUrlMap(\"urlmap\", new()\n {\n Region = \"us-central1\",\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home_backend.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = home_backend.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n },\n },\n Service = cart_backend.Id,\n Priority = 1,\n RouteAction = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleRouteActionArgs\n {\n UrlRewrite = new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathTemplateRewrite = \"/{username}-{cartid}/\",\n },\n },\n },\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n },\n },\n Service = user_backend.Id,\n Priority = 2,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRegionHealthCheck(ctx, \"default\", \u0026compute.RegionHealthCheckArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tHttpHealthCheck: \u0026compute.RegionHealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome_backend, err := compute.NewRegionBackendService(ctx, \"home-backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"home-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcart_backend, err := compute.NewRegionBackendService(ctx, \"cart-backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"cart-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser_backend, err := compute.NewRegionBackendService(ctx, \"user-backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"user-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionUrlMap(ctx, \"urlmap\", \u0026compute.RegionUrlMapArgs{\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home_backend.ID(),\n\t\t\tHostRules: compute.RegionUrlMapHostRuleArray{\n\t\t\t\t\u0026compute.RegionUrlMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.RegionUrlMapPathMatcherArray{\n\t\t\t\t\u0026compute.RegionUrlMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: home_backend.ID(),\n\t\t\t\t\tRouteRules: compute.RegionUrlMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: cart_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tRouteAction: \u0026compute.RegionUrlMapPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateRewrite: pulumi.String(\"/{username}-{cartid}/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.RegionUrlMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: user_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionHealthCheck;\nimport com.pulumi.gcp.compute.RegionHealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.RegionHealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.RegionUrlMap;\nimport com.pulumi.gcp.compute.RegionUrlMapArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.RegionUrlMapPathMatcherArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionHealthCheck(\"default\", RegionHealthCheckArgs.builder()\n .region(\"us-central1\")\n .name(\"health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .httpHealthCheck(RegionHealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .requestPath(\"/\")\n .build())\n .build());\n\n var home_backend = new RegionBackendService(\"home-backend\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"home-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var cart_backend = new RegionBackendService(\"cart-backend\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"cart-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var user_backend = new RegionBackendService(\"user-backend\", RegionBackendServiceArgs.builder()\n .region(\"us-central1\")\n .name(\"user-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var urlmap = new RegionUrlMap(\"urlmap\", RegionUrlMapArgs.builder()\n .region(\"us-central1\")\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home_backend.id())\n .hostRules(RegionUrlMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build())\n .pathMatchers(RegionUrlMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(home_backend.id())\n .routeRules( \n RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\")\n .build())\n .service(cart_backend.id())\n .priority(1)\n .routeAction(RegionUrlMapPathMatcherRouteRuleRouteActionArgs.builder()\n .urlRewrite(RegionUrlMapPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathTemplateRewrite(\"/{username}-{cartid}/\")\n .build())\n .build())\n .build(),\n RegionUrlMapPathMatcherRouteRuleArgs.builder()\n .matchRules(RegionUrlMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\")\n .build())\n .service(user_backend.id())\n .priority(2)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:RegionUrlMap\n properties:\n region: us-central1\n name: urlmap\n description: a description\n defaultService: ${[\"home-backend\"].id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n pathMatchers:\n - name: mysite\n defaultService: ${[\"home-backend\"].id}\n routeRules:\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\n service: ${[\"cart-backend\"].id}\n priority: 1\n routeAction:\n urlRewrite:\n pathTemplateRewrite: /{username}-{cartid}/\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/*/accountinfo/*\n service: ${[\"user-backend\"].id}\n priority: 2\n home-backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: home-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n cart-backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: cart-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n user-backend:\n type: gcp:compute:RegionBackendService\n properties:\n region: us-central1\n name: user-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n default:\n type: gcp:compute:RegionHealthCheck\n properties:\n region: us-central1\n name: health-check\n checkIntervalSec: 1\n timeoutSec: 1\n httpHealthCheck:\n port: 80\n requestPath: /\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionUrlMap can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/urlMaps/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, RegionUrlMap can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default projects/{{project}}/regions/{{region}}/urlMaps/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/regionUrlMap:RegionUrlMap default {{name}}\n```\n\n", "properties": { "creationTimestamp": { "type": "string", @@ -188098,7 +188098,7 @@ } }, "gcp:compute/route:Route": { - "description": "Represents a Route resource.\n\nA route is a rule that specifies how certain packets should be handled by\nthe virtual network. Routes are associated with virtual machines by tag,\nand the set of routes for a particular virtual machine is called its\nrouting table. For each packet leaving a virtual machine, the system\nsearches that virtual machine's routing table for a single best matching\nroute.\n\nRoutes match packets by destination IP address, preferring smaller or more\nspecific ranges over larger ones. If there is a tie, the system selects\nthe route with the smallest priority value. If there is still a tie, it\nuses the layer three and four packet headers to select just one of the\nremaining matching routes. The packet is then forwarded as specified by\nthe next_hop field of the winning route -- either to another virtual\nmachine destination, a virtual machine gateway or a Compute\nEngine-operated gateway. Packets that do not match any route in the\nsending virtual machine's routing table will be dropped.\n\nA Route resource must have exactly one specification of either\nnextHopGateway, nextHopInstance, nextHopIp, nextHopVpnTunnel, or\nnextHopIlb.\n\n\nTo get more information about Route, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/routes)\n* How-to Guides\n * [Using Routes](https://cloud.google.com/vpc/docs/using-routes)\n\n## Example Usage\n\n### 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 defaultNetwork = new gcp.compute.Network(\"default\", {name: \"compute-network\"});\nconst _default = new gcp.compute.Route(\"default\", {\n name: \"network-route\",\n destRange: \"15.0.0.0/24\",\n network: defaultNetwork.name,\n nextHopIp: \"10.132.1.5\",\n priority: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\", name=\"compute-network\")\ndefault = gcp.compute.Route(\"default\",\n name=\"network-route\",\n dest_range=\"15.0.0.0/24\",\n network=default_network.name,\n next_hop_ip=\"10.132.1.5\",\n priority=100)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"compute-network\",\n });\n\n var @default = new Gcp.Compute.Route(\"default\", new()\n {\n Name = \"network-route\",\n DestRange = \"15.0.0.0/24\",\n Network = defaultNetwork.Name,\n NextHopIp = \"10.132.1.5\",\n Priority = 100,\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\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"compute-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRoute(ctx, \"default\", \u0026compute.RouteArgs{\n\t\t\tName: pulumi.String(\"network-route\"),\n\t\t\tDestRange: pulumi.String(\"15.0.0.0/24\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t\tNextHopIp: pulumi.String(\"10.132.1.5\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Route;\nimport com.pulumi.gcp.compute.RouteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"compute-network\")\n .build());\n\n var default_ = new Route(\"default\", RouteArgs.builder()\n .name(\"network-route\")\n .destRange(\"15.0.0.0/24\")\n .network(defaultNetwork.name())\n .nextHopIp(\"10.132.1.5\")\n .priority(100)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Route\n properties:\n name: network-route\n destRange: 15.0.0.0/24\n network: ${defaultNetwork.name}\n nextHopIp: 10.132.1.5\n priority: 100\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: compute-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Route Ilb\n\n\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: \"compute-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"compute-subnet\",\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst hc = new gcp.compute.HealthCheck(\"hc\", {\n name: \"proxy-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"compute-backend\",\n region: \"us-central1\",\n healthChecks: hc.id,\n});\nconst defaultForwardingRule = new gcp.compute.ForwardingRule(\"default\", {\n name: \"compute-forwarding-rule\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: backend.id,\n allPorts: true,\n network: _default.name,\n subnetwork: defaultSubnetwork.name,\n});\nconst route_ilb = new gcp.compute.Route(\"route-ilb\", {\n name: \"route-ilb\",\n destRange: \"0.0.0.0/0\",\n network: _default.name,\n nextHopIlb: defaultForwardingRule.id,\n priority: 2000,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"compute-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"compute-subnet\",\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=default.id)\nhc = gcp.compute.HealthCheck(\"hc\",\n name=\"proxy-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"compute-backend\",\n region=\"us-central1\",\n health_checks=hc.id)\ndefault_forwarding_rule = gcp.compute.ForwardingRule(\"default\",\n name=\"compute-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=backend.id,\n all_ports=True,\n network=default.name,\n subnetwork=default_subnetwork.name)\nroute_ilb = gcp.compute.Route(\"route-ilb\",\n name=\"route-ilb\",\n dest_range=\"0.0.0.0/0\",\n network=default.name,\n next_hop_ilb=default_forwarding_rule.id,\n priority=2000)\n```\n```csharp\nusing 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 = \"compute-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"compute-subnet\",\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var hc = new Gcp.Compute.HealthCheck(\"hc\", new()\n {\n Name = \"proxy-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"compute-backend\",\n Region = \"us-central1\",\n HealthChecks = hc.Id,\n });\n\n var defaultForwardingRule = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"compute-forwarding-rule\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = backend.Id,\n AllPorts = true,\n Network = @default.Name,\n Subnetwork = defaultSubnetwork.Name,\n });\n\n var route_ilb = new Gcp.Compute.Route(\"route-ilb\", new()\n {\n Name = \"route-ilb\",\n DestRange = \"0.0.0.0/0\",\n Network = @default.Name,\n NextHopIlb = defaultForwardingRule.Id,\n Priority = 2000,\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(\"compute-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(\"compute-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\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\thc, err := compute.NewHealthCheck(ctx, \"hc\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"proxy-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"compute-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: hc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultForwardingRule, err := compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"compute-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: backend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: _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\t_, err = compute.NewRoute(ctx, \"route-ilb\", \u0026compute.RouteArgs{\n\t\t\tName: pulumi.String(\"route-ilb\"),\n\t\t\tDestRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\tNetwork: _default.Name,\n\t\t\tNextHopIlb: defaultForwardingRule.ID(),\n\t\t\tPriority: pulumi.Int(2000),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.Route;\nimport com.pulumi.gcp.compute.RouteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"compute-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"compute-subnet\")\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var hc = new HealthCheck(\"hc\", HealthCheckArgs.builder()\n .name(\"proxy-health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"compute-backend\")\n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"compute-forwarding-rule\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(backend.id())\n .allPorts(true)\n .network(default_.name())\n .subnetwork(defaultSubnetwork.name())\n .build());\n\n var route_ilb = new Route(\"route-ilb\", RouteArgs.builder()\n .name(\"route-ilb\")\n .destRange(\"0.0.0.0/0\")\n .network(default_.name())\n .nextHopIlb(defaultForwardingRule.id())\n .priority(2000)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: compute-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: compute-subnet\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${default.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n name: proxy-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: compute-backend\n region: us-central1\n healthChecks: ${hc.id}\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n name: default\n properties:\n name: compute-forwarding-rule\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${backend.id}\n allPorts: true\n network: ${default.name}\n subnetwork: ${defaultSubnetwork.name}\n route-ilb:\n type: gcp:compute:Route\n properties:\n name: route-ilb\n destRange: 0.0.0.0/0\n network: ${default.name}\n nextHopIlb: ${defaultForwardingRule.id}\n priority: 2000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Route Ilb Vip\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producer = new gcp.compute.Network(\"producer\", {\n name: \"producer-vpc\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnetwork = new gcp.compute.Subnetwork(\"producer\", {\n name: \"producer-subnet\",\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: producer.id,\n});\nconst consumer = new gcp.compute.Network(\"consumer\", {\n name: \"consumer-vpc\",\n autoCreateSubnetworks: false,\n});\nconst consumerSubnetwork = new gcp.compute.Subnetwork(\"consumer\", {\n name: \"consumer-subnet\",\n ipCidrRange: \"10.0.2.0/24\",\n region: \"us-central1\",\n network: consumer.id,\n});\nconst peering1 = new gcp.compute.NetworkPeering(\"peering1\", {\n name: \"peering-producer-to-consumer\",\n network: consumer.id,\n peerNetwork: producer.id,\n});\nconst peering2 = new gcp.compute.NetworkPeering(\"peering2\", {\n name: \"peering-consumer-to-producer\",\n network: producer.id,\n peerNetwork: consumer.id,\n});\nconst hc = new gcp.compute.HealthCheck(\"hc\", {\n name: \"proxy-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"compute-backend\",\n region: \"us-central1\",\n healthChecks: hc.id,\n});\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"compute-forwarding-rule\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: backend.id,\n allPorts: true,\n network: producer.name,\n subnetwork: producerSubnetwork.name,\n});\nconst route_ilb = new gcp.compute.Route(\"route-ilb\", {\n name: \"route-ilb\",\n destRange: \"0.0.0.0/0\",\n network: consumer.name,\n nextHopIlb: _default.ipAddress,\n priority: 2000,\n tags: [\n \"tag1\",\n \"tag2\",\n ],\n}, {\n dependsOn: [\n peering1,\n peering2,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer = gcp.compute.Network(\"producer\",\n name=\"producer-vpc\",\n auto_create_subnetworks=False)\nproducer_subnetwork = gcp.compute.Subnetwork(\"producer\",\n name=\"producer-subnet\",\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=producer.id)\nconsumer = gcp.compute.Network(\"consumer\",\n name=\"consumer-vpc\",\n auto_create_subnetworks=False)\nconsumer_subnetwork = gcp.compute.Subnetwork(\"consumer\",\n name=\"consumer-subnet\",\n ip_cidr_range=\"10.0.2.0/24\",\n region=\"us-central1\",\n network=consumer.id)\npeering1 = gcp.compute.NetworkPeering(\"peering1\",\n name=\"peering-producer-to-consumer\",\n network=consumer.id,\n peer_network=producer.id)\npeering2 = gcp.compute.NetworkPeering(\"peering2\",\n name=\"peering-consumer-to-producer\",\n network=producer.id,\n peer_network=consumer.id)\nhc = gcp.compute.HealthCheck(\"hc\",\n name=\"proxy-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"compute-backend\",\n region=\"us-central1\",\n health_checks=hc.id)\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"compute-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=backend.id,\n all_ports=True,\n network=producer.name,\n subnetwork=producer_subnetwork.name)\nroute_ilb = gcp.compute.Route(\"route-ilb\",\n name=\"route-ilb\",\n dest_range=\"0.0.0.0/0\",\n network=consumer.name,\n next_hop_ilb=default.ip_address,\n priority=2000,\n tags=[\n \"tag1\",\n \"tag2\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n peering1,\n peering2,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var producer = new Gcp.Compute.Network(\"producer\", new()\n {\n Name = \"producer-vpc\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnetwork = new Gcp.Compute.Subnetwork(\"producer\", new()\n {\n Name = \"producer-subnet\",\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = producer.Id,\n });\n\n var consumer = new Gcp.Compute.Network(\"consumer\", new()\n {\n Name = \"consumer-vpc\",\n AutoCreateSubnetworks = false,\n });\n\n var consumerSubnetwork = new Gcp.Compute.Subnetwork(\"consumer\", new()\n {\n Name = \"consumer-subnet\",\n IpCidrRange = \"10.0.2.0/24\",\n Region = \"us-central1\",\n Network = consumer.Id,\n });\n\n var peering1 = new Gcp.Compute.NetworkPeering(\"peering1\", new()\n {\n Name = \"peering-producer-to-consumer\",\n Network = consumer.Id,\n PeerNetwork = producer.Id,\n });\n\n var peering2 = new Gcp.Compute.NetworkPeering(\"peering2\", new()\n {\n Name = \"peering-consumer-to-producer\",\n Network = producer.Id,\n PeerNetwork = consumer.Id,\n });\n\n var hc = new Gcp.Compute.HealthCheck(\"hc\", new()\n {\n Name = \"proxy-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"compute-backend\",\n Region = \"us-central1\",\n HealthChecks = hc.Id,\n });\n\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"compute-forwarding-rule\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = backend.Id,\n AllPorts = true,\n Network = producer.Name,\n Subnetwork = producerSubnetwork.Name,\n });\n\n var route_ilb = new Gcp.Compute.Route(\"route-ilb\", new()\n {\n Name = \"route-ilb\",\n DestRange = \"0.0.0.0/0\",\n Network = consumer.Name,\n NextHopIlb = @default.IpAddress,\n Priority = 2000,\n Tags = new[]\n {\n \"tag1\",\n \"tag2\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n peering1,\n peering2,\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\tproducer, err := compute.NewNetwork(ctx, \"producer\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"producer-vpc\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerSubnetwork, err := compute.NewSubnetwork(ctx, \"producer\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"producer-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: producer.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconsumer, err := compute.NewNetwork(ctx, \"consumer\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"consumer-vpc\"),\n\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, \"consumer\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"consumer-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.2.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: consumer.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpeering1, err := compute.NewNetworkPeering(ctx, \"peering1\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peering-producer-to-consumer\"),\n\t\t\tNetwork: consumer.ID(),\n\t\t\tPeerNetwork: producer.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpeering2, err := compute.NewNetworkPeering(ctx, \"peering2\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peering-consumer-to-producer\"),\n\t\t\tNetwork: producer.ID(),\n\t\t\tPeerNetwork: consumer.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thc, err := compute.NewHealthCheck(ctx, \"hc\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"proxy-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"compute-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: hc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"compute-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: backend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: producer.Name,\n\t\t\tSubnetwork: producerSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRoute(ctx, \"route-ilb\", \u0026compute.RouteArgs{\n\t\t\tName: pulumi.String(\"route-ilb\"),\n\t\t\tDestRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\tNetwork: consumer.Name,\n\t\t\tNextHopIlb: _default.IpAddress,\n\t\t\tPriority: pulumi.Int(2000),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpeering1,\n\t\t\tpeering2,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.NetworkPeering;\nimport com.pulumi.gcp.compute.NetworkPeeringArgs;\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.Route;\nimport com.pulumi.gcp.compute.RouteArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var producer = new Network(\"producer\", NetworkArgs.builder()\n .name(\"producer-vpc\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnetwork = new Subnetwork(\"producerSubnetwork\", SubnetworkArgs.builder()\n .name(\"producer-subnet\")\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(producer.id())\n .build());\n\n var consumer = new Network(\"consumer\", NetworkArgs.builder()\n .name(\"consumer-vpc\")\n .autoCreateSubnetworks(false)\n .build());\n\n var consumerSubnetwork = new Subnetwork(\"consumerSubnetwork\", SubnetworkArgs.builder()\n .name(\"consumer-subnet\")\n .ipCidrRange(\"10.0.2.0/24\")\n .region(\"us-central1\")\n .network(consumer.id())\n .build());\n\n var peering1 = new NetworkPeering(\"peering1\", NetworkPeeringArgs.builder()\n .name(\"peering-producer-to-consumer\")\n .network(consumer.id())\n .peerNetwork(producer.id())\n .build());\n\n var peering2 = new NetworkPeering(\"peering2\", NetworkPeeringArgs.builder()\n .name(\"peering-consumer-to-producer\")\n .network(producer.id())\n .peerNetwork(consumer.id())\n .build());\n\n var hc = new HealthCheck(\"hc\", HealthCheckArgs.builder()\n .name(\"proxy-health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"compute-backend\")\n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"compute-forwarding-rule\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(backend.id())\n .allPorts(true)\n .network(producer.name())\n .subnetwork(producerSubnetwork.name())\n .build());\n\n var route_ilb = new Route(\"route-ilb\", RouteArgs.builder()\n .name(\"route-ilb\")\n .destRange(\"0.0.0.0/0\")\n .network(consumer.name())\n .nextHopIlb(default_.ipAddress())\n .priority(2000)\n .tags( \n \"tag1\",\n \"tag2\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n peering1,\n peering2)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n producer:\n type: gcp:compute:Network\n properties:\n name: producer-vpc\n autoCreateSubnetworks: false\n producerSubnetwork:\n type: gcp:compute:Subnetwork\n name: producer\n properties:\n name: producer-subnet\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${producer.id}\n consumer:\n type: gcp:compute:Network\n properties:\n name: consumer-vpc\n autoCreateSubnetworks: false\n consumerSubnetwork:\n type: gcp:compute:Subnetwork\n name: consumer\n properties:\n name: consumer-subnet\n ipCidrRange: 10.0.2.0/24\n region: us-central1\n network: ${consumer.id}\n peering1:\n type: gcp:compute:NetworkPeering\n properties:\n name: peering-producer-to-consumer\n network: ${consumer.id}\n peerNetwork: ${producer.id}\n peering2:\n type: gcp:compute:NetworkPeering\n properties:\n name: peering-consumer-to-producer\n network: ${producer.id}\n peerNetwork: ${consumer.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n name: proxy-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: compute-backend\n region: us-central1\n healthChecks: ${hc.id}\n default:\n type: gcp:compute:ForwardingRule\n properties:\n name: compute-forwarding-rule\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${backend.id}\n allPorts: true\n network: ${producer.name}\n subnetwork: ${producerSubnetwork.name}\n route-ilb:\n type: gcp:compute:Route\n properties:\n name: route-ilb\n destRange: 0.0.0.0/0\n network: ${consumer.name}\n nextHopIlb: ${default.ipAddress}\n priority: 2000\n tags:\n - tag1\n - tag2\n options:\n dependsOn:\n - ${peering1}\n - ${peering2}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/routes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Route can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/route:Route default projects/{{project}}/global/routes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/route:Route default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/route:Route default {{name}}\n```\n\n", + "description": "Represents a Route resource.\n\nA route is a rule that specifies how certain packets should be handled by\nthe virtual network. Routes are associated with virtual machines by tag,\nand the set of routes for a particular virtual machine is called its\nrouting table. For each packet leaving a virtual machine, the system\nsearches that virtual machine's routing table for a single best matching\nroute.\n\nRoutes match packets by destination IP address, preferring smaller or more\nspecific ranges over larger ones. If there is a tie, the system selects\nthe route with the smallest priority value. If there is still a tie, it\nuses the layer three and four packet headers to select just one of the\nremaining matching routes. The packet is then forwarded as specified by\nthe next_hop field of the winning route -- either to another virtual\nmachine destination, a virtual machine gateway or a Compute\nEngine-operated gateway. Packets that do not match any route in the\nsending virtual machine's routing table will be dropped.\n\nA Route resource must have exactly one specification of either\nnextHopGateway, nextHopInstance, nextHopIp, nextHopVpnTunnel, or\nnextHopIlb.\n\n\nTo get more information about Route, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/routes)\n* How-to Guides\n * [Using Routes](https://cloud.google.com/vpc/docs/using-routes)\n\n## Example Usage\n\n### 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 defaultNetwork = new gcp.compute.Network(\"default\", {name: \"compute-network\"});\nconst _default = new gcp.compute.Route(\"default\", {\n name: \"network-route\",\n destRange: \"15.0.0.0/24\",\n network: defaultNetwork.name,\n nextHopIp: \"10.132.1.5\",\n priority: 100,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_network = gcp.compute.Network(\"default\", name=\"compute-network\")\ndefault = gcp.compute.Route(\"default\",\n name=\"network-route\",\n dest_range=\"15.0.0.0/24\",\n network=default_network.name,\n next_hop_ip=\"10.132.1.5\",\n priority=100)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"compute-network\",\n });\n\n var @default = new Gcp.Compute.Route(\"default\", new()\n {\n Name = \"network-route\",\n DestRange = \"15.0.0.0/24\",\n Network = defaultNetwork.Name,\n NextHopIp = \"10.132.1.5\",\n Priority = 100,\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\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"compute-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRoute(ctx, \"default\", \u0026compute.RouteArgs{\n\t\t\tName: pulumi.String(\"network-route\"),\n\t\t\tDestRange: pulumi.String(\"15.0.0.0/24\"),\n\t\t\tNetwork: defaultNetwork.Name,\n\t\t\tNextHopIp: pulumi.String(\"10.132.1.5\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Route;\nimport com.pulumi.gcp.compute.RouteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"compute-network\")\n .build());\n\n var default_ = new Route(\"default\", RouteArgs.builder()\n .name(\"network-route\")\n .destRange(\"15.0.0.0/24\")\n .network(defaultNetwork.name())\n .nextHopIp(\"10.132.1.5\")\n .priority(100)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Route\n properties:\n name: network-route\n destRange: 15.0.0.0/24\n network: ${defaultNetwork.name}\n nextHopIp: 10.132.1.5\n priority: 100\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: compute-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Route Ilb\n\n\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: \"compute-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"compute-subnet\",\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: _default.id,\n});\nconst hc = new gcp.compute.HealthCheck(\"hc\", {\n name: \"proxy-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"compute-backend\",\n region: \"us-central1\",\n healthChecks: hc.id,\n});\nconst defaultForwardingRule = new gcp.compute.ForwardingRule(\"default\", {\n name: \"compute-forwarding-rule\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: backend.id,\n allPorts: true,\n network: _default.name,\n subnetwork: defaultSubnetwork.name,\n});\nconst route_ilb = new gcp.compute.Route(\"route-ilb\", {\n name: \"route-ilb\",\n destRange: \"0.0.0.0/0\",\n network: _default.name,\n nextHopIlb: defaultForwardingRule.id,\n priority: 2000,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"compute-network\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"compute-subnet\",\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=default.id)\nhc = gcp.compute.HealthCheck(\"hc\",\n name=\"proxy-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"compute-backend\",\n region=\"us-central1\",\n health_checks=hc.id)\ndefault_forwarding_rule = gcp.compute.ForwardingRule(\"default\",\n name=\"compute-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=backend.id,\n all_ports=True,\n network=default.name,\n subnetwork=default_subnetwork.name)\nroute_ilb = gcp.compute.Route(\"route-ilb\",\n name=\"route-ilb\",\n dest_range=\"0.0.0.0/0\",\n network=default.name,\n next_hop_ilb=default_forwarding_rule.id,\n priority=2000)\n```\n```csharp\nusing 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 = \"compute-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"compute-subnet\",\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = @default.Id,\n });\n\n var hc = new Gcp.Compute.HealthCheck(\"hc\", new()\n {\n Name = \"proxy-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"compute-backend\",\n Region = \"us-central1\",\n HealthChecks = hc.Id,\n });\n\n var defaultForwardingRule = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"compute-forwarding-rule\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = backend.Id,\n AllPorts = true,\n Network = @default.Name,\n Subnetwork = defaultSubnetwork.Name,\n });\n\n var route_ilb = new Gcp.Compute.Route(\"route-ilb\", new()\n {\n Name = \"route-ilb\",\n DestRange = \"0.0.0.0/0\",\n Network = @default.Name,\n NextHopIlb = defaultForwardingRule.Id,\n Priority = 2000,\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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"compute-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(\"compute-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\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\thc, err := compute.NewHealthCheck(ctx, \"hc\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"proxy-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"compute-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: hc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultForwardingRule, err := compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"compute-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: backend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: _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\t_, err = compute.NewRoute(ctx, \"route-ilb\", \u0026compute.RouteArgs{\n\t\t\tName: pulumi.String(\"route-ilb\"),\n\t\t\tDestRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\tNetwork: _default.Name,\n\t\t\tNextHopIlb: defaultForwardingRule.ID(),\n\t\t\tPriority: pulumi.Int(2000),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.Route;\nimport com.pulumi.gcp.compute.RouteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"compute-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"compute-subnet\")\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(default_.id())\n .build());\n\n var hc = new HealthCheck(\"hc\", HealthCheckArgs.builder()\n .name(\"proxy-health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"compute-backend\")\n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var defaultForwardingRule = new ForwardingRule(\"defaultForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"compute-forwarding-rule\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(backend.id())\n .allPorts(true)\n .network(default_.name())\n .subnetwork(defaultSubnetwork.name())\n .build());\n\n var route_ilb = new Route(\"route-ilb\", RouteArgs.builder()\n .name(\"route-ilb\")\n .destRange(\"0.0.0.0/0\")\n .network(default_.name())\n .nextHopIlb(defaultForwardingRule.id())\n .priority(2000)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: compute-network\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: compute-subnet\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${default.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n name: proxy-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: compute-backend\n region: us-central1\n healthChecks: ${hc.id}\n defaultForwardingRule:\n type: gcp:compute:ForwardingRule\n name: default\n properties:\n name: compute-forwarding-rule\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${backend.id}\n allPorts: true\n network: ${default.name}\n subnetwork: ${defaultSubnetwork.name}\n route-ilb:\n type: gcp:compute:Route\n properties:\n name: route-ilb\n destRange: 0.0.0.0/0\n network: ${default.name}\n nextHopIlb: ${defaultForwardingRule.id}\n priority: 2000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Route Ilb Vip\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst producer = new gcp.compute.Network(\"producer\", {\n name: \"producer-vpc\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnetwork = new gcp.compute.Subnetwork(\"producer\", {\n name: \"producer-subnet\",\n ipCidrRange: \"10.0.1.0/24\",\n region: \"us-central1\",\n network: producer.id,\n});\nconst consumer = new gcp.compute.Network(\"consumer\", {\n name: \"consumer-vpc\",\n autoCreateSubnetworks: false,\n});\nconst consumerSubnetwork = new gcp.compute.Subnetwork(\"consumer\", {\n name: \"consumer-subnet\",\n ipCidrRange: \"10.0.2.0/24\",\n region: \"us-central1\",\n network: consumer.id,\n});\nconst peering1 = new gcp.compute.NetworkPeering(\"peering1\", {\n name: \"peering-producer-to-consumer\",\n network: consumer.id,\n peerNetwork: producer.id,\n});\nconst peering2 = new gcp.compute.NetworkPeering(\"peering2\", {\n name: \"peering-consumer-to-producer\",\n network: producer.id,\n peerNetwork: consumer.id,\n});\nconst hc = new gcp.compute.HealthCheck(\"hc\", {\n name: \"proxy-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst backend = new gcp.compute.RegionBackendService(\"backend\", {\n name: \"compute-backend\",\n region: \"us-central1\",\n healthChecks: hc.id,\n});\nconst _default = new gcp.compute.ForwardingRule(\"default\", {\n name: \"compute-forwarding-rule\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: backend.id,\n allPorts: true,\n network: producer.name,\n subnetwork: producerSubnetwork.name,\n});\nconst route_ilb = new gcp.compute.Route(\"route-ilb\", {\n name: \"route-ilb\",\n destRange: \"0.0.0.0/0\",\n network: consumer.name,\n nextHopIlb: _default.ipAddress,\n priority: 2000,\n tags: [\n \"tag1\",\n \"tag2\",\n ],\n}, {\n dependsOn: [\n peering1,\n peering2,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer = gcp.compute.Network(\"producer\",\n name=\"producer-vpc\",\n auto_create_subnetworks=False)\nproducer_subnetwork = gcp.compute.Subnetwork(\"producer\",\n name=\"producer-subnet\",\n ip_cidr_range=\"10.0.1.0/24\",\n region=\"us-central1\",\n network=producer.id)\nconsumer = gcp.compute.Network(\"consumer\",\n name=\"consumer-vpc\",\n auto_create_subnetworks=False)\nconsumer_subnetwork = gcp.compute.Subnetwork(\"consumer\",\n name=\"consumer-subnet\",\n ip_cidr_range=\"10.0.2.0/24\",\n region=\"us-central1\",\n network=consumer.id)\npeering1 = gcp.compute.NetworkPeering(\"peering1\",\n name=\"peering-producer-to-consumer\",\n network=consumer.id,\n peer_network=producer.id)\npeering2 = gcp.compute.NetworkPeering(\"peering2\",\n name=\"peering-consumer-to-producer\",\n network=producer.id,\n peer_network=consumer.id)\nhc = gcp.compute.HealthCheck(\"hc\",\n name=\"proxy-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\nbackend = gcp.compute.RegionBackendService(\"backend\",\n name=\"compute-backend\",\n region=\"us-central1\",\n health_checks=hc.id)\ndefault = gcp.compute.ForwardingRule(\"default\",\n name=\"compute-forwarding-rule\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=backend.id,\n all_ports=True,\n network=producer.name,\n subnetwork=producer_subnetwork.name)\nroute_ilb = gcp.compute.Route(\"route-ilb\",\n name=\"route-ilb\",\n dest_range=\"0.0.0.0/0\",\n network=consumer.name,\n next_hop_ilb=default.ip_address,\n priority=2000,\n tags=[\n \"tag1\",\n \"tag2\",\n ],\n opts = pulumi.ResourceOptions(depends_on=[\n peering1,\n peering2,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var producer = new Gcp.Compute.Network(\"producer\", new()\n {\n Name = \"producer-vpc\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnetwork = new Gcp.Compute.Subnetwork(\"producer\", new()\n {\n Name = \"producer-subnet\",\n IpCidrRange = \"10.0.1.0/24\",\n Region = \"us-central1\",\n Network = producer.Id,\n });\n\n var consumer = new Gcp.Compute.Network(\"consumer\", new()\n {\n Name = \"consumer-vpc\",\n AutoCreateSubnetworks = false,\n });\n\n var consumerSubnetwork = new Gcp.Compute.Subnetwork(\"consumer\", new()\n {\n Name = \"consumer-subnet\",\n IpCidrRange = \"10.0.2.0/24\",\n Region = \"us-central1\",\n Network = consumer.Id,\n });\n\n var peering1 = new Gcp.Compute.NetworkPeering(\"peering1\", new()\n {\n Name = \"peering-producer-to-consumer\",\n Network = consumer.Id,\n PeerNetwork = producer.Id,\n });\n\n var peering2 = new Gcp.Compute.NetworkPeering(\"peering2\", new()\n {\n Name = \"peering-consumer-to-producer\",\n Network = producer.Id,\n PeerNetwork = consumer.Id,\n });\n\n var hc = new Gcp.Compute.HealthCheck(\"hc\", new()\n {\n Name = \"proxy-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var backend = new Gcp.Compute.RegionBackendService(\"backend\", new()\n {\n Name = \"compute-backend\",\n Region = \"us-central1\",\n HealthChecks = hc.Id,\n });\n\n var @default = new Gcp.Compute.ForwardingRule(\"default\", new()\n {\n Name = \"compute-forwarding-rule\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = backend.Id,\n AllPorts = true,\n Network = producer.Name,\n Subnetwork = producerSubnetwork.Name,\n });\n\n var route_ilb = new Gcp.Compute.Route(\"route-ilb\", new()\n {\n Name = \"route-ilb\",\n DestRange = \"0.0.0.0/0\",\n Network = consumer.Name,\n NextHopIlb = @default.IpAddress,\n Priority = 2000,\n Tags = new[]\n {\n \"tag1\",\n \"tag2\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n peering1,\n peering2,\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\tproducer, err := compute.NewNetwork(ctx, \"producer\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"producer-vpc\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproducerSubnetwork, err := compute.NewSubnetwork(ctx, \"producer\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"producer-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: producer.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tconsumer, err := compute.NewNetwork(ctx, \"consumer\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"consumer-vpc\"),\n\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, \"consumer\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"consumer-subnet\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.2.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: consumer.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpeering1, err := compute.NewNetworkPeering(ctx, \"peering1\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peering-producer-to-consumer\"),\n\t\t\tNetwork: consumer.ID(),\n\t\t\tPeerNetwork: producer.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpeering2, err := compute.NewNetworkPeering(ctx, \"peering2\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peering-consumer-to-producer\"),\n\t\t\tNetwork: producer.ID(),\n\t\t\tPeerNetwork: consumer.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thc, err := compute.NewHealthCheck(ctx, \"hc\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"proxy-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackend, err := compute.NewRegionBackendService(ctx, \"backend\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"compute-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: hc.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewForwardingRule(ctx, \"default\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"compute-forwarding-rule\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: backend.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: producer.Name,\n\t\t\tSubnetwork: producerSubnetwork.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRoute(ctx, \"route-ilb\", \u0026compute.RouteArgs{\n\t\t\tName: pulumi.String(\"route-ilb\"),\n\t\t\tDestRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\tNetwork: consumer.Name,\n\t\t\tNextHopIlb: _default.IpAddress,\n\t\t\tPriority: pulumi.Int(2000),\n\t\t\tTags: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"tag1\"),\n\t\t\t\tpulumi.String(\"tag2\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpeering1,\n\t\t\tpeering2,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.NetworkPeering;\nimport com.pulumi.gcp.compute.NetworkPeeringArgs;\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.Route;\nimport com.pulumi.gcp.compute.RouteArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var producer = new Network(\"producer\", NetworkArgs.builder()\n .name(\"producer-vpc\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnetwork = new Subnetwork(\"producerSubnetwork\", SubnetworkArgs.builder()\n .name(\"producer-subnet\")\n .ipCidrRange(\"10.0.1.0/24\")\n .region(\"us-central1\")\n .network(producer.id())\n .build());\n\n var consumer = new Network(\"consumer\", NetworkArgs.builder()\n .name(\"consumer-vpc\")\n .autoCreateSubnetworks(false)\n .build());\n\n var consumerSubnetwork = new Subnetwork(\"consumerSubnetwork\", SubnetworkArgs.builder()\n .name(\"consumer-subnet\")\n .ipCidrRange(\"10.0.2.0/24\")\n .region(\"us-central1\")\n .network(consumer.id())\n .build());\n\n var peering1 = new NetworkPeering(\"peering1\", NetworkPeeringArgs.builder()\n .name(\"peering-producer-to-consumer\")\n .network(consumer.id())\n .peerNetwork(producer.id())\n .build());\n\n var peering2 = new NetworkPeering(\"peering2\", NetworkPeeringArgs.builder()\n .name(\"peering-consumer-to-producer\")\n .network(producer.id())\n .peerNetwork(consumer.id())\n .build());\n\n var hc = new HealthCheck(\"hc\", HealthCheckArgs.builder()\n .name(\"proxy-health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var backend = new RegionBackendService(\"backend\", RegionBackendServiceArgs.builder()\n .name(\"compute-backend\")\n .region(\"us-central1\")\n .healthChecks(hc.id())\n .build());\n\n var default_ = new ForwardingRule(\"default\", ForwardingRuleArgs.builder()\n .name(\"compute-forwarding-rule\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(backend.id())\n .allPorts(true)\n .network(producer.name())\n .subnetwork(producerSubnetwork.name())\n .build());\n\n var route_ilb = new Route(\"route-ilb\", RouteArgs.builder()\n .name(\"route-ilb\")\n .destRange(\"0.0.0.0/0\")\n .network(consumer.name())\n .nextHopIlb(default_.ipAddress())\n .priority(2000)\n .tags( \n \"tag1\",\n \"tag2\")\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n peering1,\n peering2)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n producer:\n type: gcp:compute:Network\n properties:\n name: producer-vpc\n autoCreateSubnetworks: false\n producerSubnetwork:\n type: gcp:compute:Subnetwork\n name: producer\n properties:\n name: producer-subnet\n ipCidrRange: 10.0.1.0/24\n region: us-central1\n network: ${producer.id}\n consumer:\n type: gcp:compute:Network\n properties:\n name: consumer-vpc\n autoCreateSubnetworks: false\n consumerSubnetwork:\n type: gcp:compute:Subnetwork\n name: consumer\n properties:\n name: consumer-subnet\n ipCidrRange: 10.0.2.0/24\n region: us-central1\n network: ${consumer.id}\n peering1:\n type: gcp:compute:NetworkPeering\n properties:\n name: peering-producer-to-consumer\n network: ${consumer.id}\n peerNetwork: ${producer.id}\n peering2:\n type: gcp:compute:NetworkPeering\n properties:\n name: peering-consumer-to-producer\n network: ${producer.id}\n peerNetwork: ${consumer.id}\n hc:\n type: gcp:compute:HealthCheck\n properties:\n name: proxy-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n backend:\n type: gcp:compute:RegionBackendService\n properties:\n name: compute-backend\n region: us-central1\n healthChecks: ${hc.id}\n default:\n type: gcp:compute:ForwardingRule\n properties:\n name: compute-forwarding-rule\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${backend.id}\n allPorts: true\n network: ${producer.name}\n subnetwork: ${producerSubnetwork.name}\n route-ilb:\n type: gcp:compute:Route\n properties:\n name: route-ilb\n destRange: 0.0.0.0/0\n network: ${consumer.name}\n nextHopIlb: ${default.ipAddress}\n priority: 2000\n tags:\n - tag1\n - tag2\n options:\n dependsOn:\n - ${peering1}\n - ${peering2}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/routes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Route can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/route:Route default projects/{{project}}/global/routes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/route:Route default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/route:Route default {{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -189182,7 +189182,7 @@ } }, "gcp:compute/routerPeer:RouterPeer": { - "description": "BGP information that must be configured into the routing stack to\nestablish BGP peering. This information must specify the peer ASN\nand either the interface name, IP address, or peer IP address.\nPlease refer to RFC4273.\n\n\nTo get more information about RouterBgpPeer, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/routers)\n* How-to Guides\n * [Google Cloud Router](https://cloud.google.com/router/docs/)\n\n## Example Usage\n\n### Router Peer Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n peerAsn: 65513,\n advertisedRoutePriority: 100,\n \"interface\": \"interface-1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n peer_asn=65513,\n advertised_route_priority=100,\n interface=\"interface-1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n PeerAsn = 65513,\n AdvertisedRoutePriority = 100,\n Interface = \"interface-1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .peerAsn(65513)\n .advertisedRoutePriority(100)\n .interface_(\"interface-1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n peerAsn: 65513\n advertisedRoutePriority: 100\n interface: interface-1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Peer Disabled\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 65513,\n advertisedRoutePriority: 100,\n \"interface\": \"interface-1\",\n enable: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=65513,\n advertised_route_priority=100,\n interface=\"interface-1\",\n enable=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 65513,\n AdvertisedRoutePriority = 100,\n Interface = \"interface-1\",\n Enable = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.1.2\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\n\t\t\tEnable: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(65513)\n .advertisedRoutePriority(100)\n .interface_(\"interface-1\")\n .enable(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 65513\n advertisedRoutePriority: 100\n interface: interface-1\n enable: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Peer Bfd\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 65513,\n advertisedRoutePriority: 100,\n \"interface\": \"interface-1\",\n bfd: {\n minReceiveInterval: 1000,\n minTransmitInterval: 1000,\n multiplier: 5,\n sessionInitializationMode: \"ACTIVE\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=65513,\n advertised_route_priority=100,\n interface=\"interface-1\",\n bfd={\n \"min_receive_interval\": 1000,\n \"min_transmit_interval\": 1000,\n \"multiplier\": 5,\n \"session_initialization_mode\": \"ACTIVE\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 65513,\n AdvertisedRoutePriority = 100,\n Interface = \"interface-1\",\n Bfd = new Gcp.Compute.Inputs.RouterPeerBfdArgs\n {\n MinReceiveInterval = 1000,\n MinTransmitInterval = 1000,\n Multiplier = 5,\n SessionInitializationMode = \"ACTIVE\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.1.2\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\n\t\t\tBfd: \u0026compute.RouterPeerBfdArgs{\n\t\t\t\tMinReceiveInterval: pulumi.Int(1000),\n\t\t\t\tMinTransmitInterval: pulumi.Int(1000),\n\t\t\t\tMultiplier: pulumi.Int(5),\n\t\t\t\tSessionInitializationMode: pulumi.String(\"ACTIVE\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport com.pulumi.gcp.compute.inputs.RouterPeerBfdArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(65513)\n .advertisedRoutePriority(100)\n .interface_(\"interface-1\")\n .bfd(RouterPeerBfdArgs.builder()\n .minReceiveInterval(1000)\n .minTransmitInterval(1000)\n .multiplier(5)\n .sessionInitializationMode(\"ACTIVE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 65513\n advertisedRoutePriority: 100\n interface: interface-1\n bfd:\n minReceiveInterval: 1000\n minTransmitInterval: 1000\n multiplier: 5\n sessionInitializationMode: ACTIVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Zero Custom Learend Route Priority\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n \"interface\": \"interface-1\",\n peerAsn: 65513,\n customLearnedRoutePriority: 0,\n zeroCustomLearnedRoutePriority: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n interface=\"interface-1\",\n peer_asn=65513,\n custom_learned_route_priority=0,\n zero_custom_learned_route_priority=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 peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n Interface = \"interface-1\",\n PeerAsn = 65513,\n CustomLearnedRoutePriority = 0,\n ZeroCustomLearnedRoutePriority = 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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tCustomLearnedRoutePriority: pulumi.Int(0),\n\t\t\tZeroCustomLearnedRoutePriority: 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.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .interface_(\"interface-1\")\n .peerAsn(65513)\n .customLearnedRoutePriority(0)\n .zeroCustomLearnedRoutePriority(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n interface: interface-1\n peerAsn: 65513\n customLearnedRoutePriority: 0\n zeroCustomLearnedRoutePriority: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Peer Router Appliance\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-router-net\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"my-router-sub\",\n network: network.selfLink,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n});\nconst addrIntf = new gcp.compute.Address(\"addr_intf\", {\n name: \"my-router-addr-intf\",\n region: subnetwork.region,\n subnetwork: subnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst addrIntfRedundant = new gcp.compute.Address(\"addr_intf_redundant\", {\n name: \"my-router-addr-intf-red\",\n region: subnetwork.region,\n subnetwork: subnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst addrPeer = new gcp.compute.Address(\"addr_peer\", {\n name: \"my-router-addr-peer\",\n region: subnetwork.region,\n subnetwork: subnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n name: \"router-appliance\",\n zone: \"us-central1-a\",\n machineType: \"e2-medium\",\n canIpForward: true,\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n networkIp: addrPeer.address,\n subnetwork: subnetwork.selfLink,\n }],\n});\nconst hub = new gcp.networkconnectivity.Hub(\"hub\", {name: \"my-router-hub\"});\nconst spoke = new gcp.networkconnectivity.Spoke(\"spoke\", {\n name: \"my-router-spoke\",\n location: subnetwork.region,\n hub: hub.id,\n linkedRouterApplianceInstances: {\n instances: [{\n virtualMachine: instance.selfLink,\n ipAddress: addrPeer.address,\n }],\n siteToSiteDataTransfer: false,\n },\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router-router\",\n region: subnetwork.region,\n network: network.selfLink,\n bgp: {\n asn: 64514,\n },\n});\nconst interfaceRedundant = new gcp.compute.RouterInterface(\"interface_redundant\", {\n name: \"my-router-intf-red\",\n region: router.region,\n router: router.name,\n subnetwork: subnetwork.selfLink,\n privateIpAddress: addrIntfRedundant.address,\n});\nconst _interface = new gcp.compute.RouterInterface(\"interface\", {\n name: \"my-router-intf\",\n region: router.region,\n router: router.name,\n subnetwork: subnetwork.selfLink,\n privateIpAddress: addrIntf.address,\n redundantInterface: interfaceRedundant.name,\n});\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: router.name,\n region: router.region,\n \"interface\": _interface.name,\n routerApplianceInstance: instance.selfLink,\n peerAsn: 65513,\n peerIpAddress: addrPeer.address,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-router-net\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"my-router-sub\",\n network=network.self_link,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\")\naddr_intf = gcp.compute.Address(\"addr_intf\",\n name=\"my-router-addr-intf\",\n region=subnetwork.region,\n subnetwork=subnetwork.id,\n address_type=\"INTERNAL\")\naddr_intf_redundant = gcp.compute.Address(\"addr_intf_redundant\",\n name=\"my-router-addr-intf-red\",\n region=subnetwork.region,\n subnetwork=subnetwork.id,\n address_type=\"INTERNAL\")\naddr_peer = gcp.compute.Address(\"addr_peer\",\n name=\"my-router-addr-peer\",\n region=subnetwork.region,\n subnetwork=subnetwork.id,\n address_type=\"INTERNAL\")\ninstance = gcp.compute.Instance(\"instance\",\n name=\"router-appliance\",\n zone=\"us-central1-a\",\n machine_type=\"e2-medium\",\n can_ip_forward=True,\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network_ip\": addr_peer.address,\n \"subnetwork\": subnetwork.self_link,\n }])\nhub = gcp.networkconnectivity.Hub(\"hub\", name=\"my-router-hub\")\nspoke = gcp.networkconnectivity.Spoke(\"spoke\",\n name=\"my-router-spoke\",\n location=subnetwork.region,\n hub=hub.id,\n linked_router_appliance_instances={\n \"instances\": [{\n \"virtual_machine\": instance.self_link,\n \"ip_address\": addr_peer.address,\n }],\n \"site_to_site_data_transfer\": False,\n })\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router-router\",\n region=subnetwork.region,\n network=network.self_link,\n bgp={\n \"asn\": 64514,\n })\ninterface_redundant = gcp.compute.RouterInterface(\"interface_redundant\",\n name=\"my-router-intf-red\",\n region=router.region,\n router=router.name,\n subnetwork=subnetwork.self_link,\n private_ip_address=addr_intf_redundant.address)\ninterface = gcp.compute.RouterInterface(\"interface\",\n name=\"my-router-intf\",\n region=router.region,\n router=router.name,\n subnetwork=subnetwork.self_link,\n private_ip_address=addr_intf.address,\n redundant_interface=interface_redundant.name)\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=router.name,\n region=router.region,\n interface=interface.name,\n router_appliance_instance=instance.self_link,\n peer_asn=65513,\n peer_ip_address=addr_peer.address)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-router-net\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"my-router-sub\",\n Network = network.SelfLink,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n });\n\n var addrIntf = new Gcp.Compute.Address(\"addr_intf\", new()\n {\n Name = \"my-router-addr-intf\",\n Region = subnetwork.Region,\n Subnetwork = subnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var addrIntfRedundant = new Gcp.Compute.Address(\"addr_intf_redundant\", new()\n {\n Name = \"my-router-addr-intf-red\",\n Region = subnetwork.Region,\n Subnetwork = subnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var addrPeer = new Gcp.Compute.Address(\"addr_peer\", new()\n {\n Name = \"my-router-addr-peer\",\n Region = subnetwork.Region,\n Subnetwork = subnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n Name = \"router-appliance\",\n Zone = \"us-central1-a\",\n MachineType = \"e2-medium\",\n CanIpForward = true,\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n NetworkIp = addrPeer.IPAddress,\n Subnetwork = subnetwork.SelfLink,\n },\n },\n });\n\n var hub = new Gcp.NetworkConnectivity.Hub(\"hub\", new()\n {\n Name = \"my-router-hub\",\n });\n\n var spoke = new Gcp.NetworkConnectivity.Spoke(\"spoke\", new()\n {\n Name = \"my-router-spoke\",\n Location = subnetwork.Region,\n Hub = hub.Id,\n LinkedRouterApplianceInstances = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesArgs\n {\n Instances = new[]\n {\n new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesInstanceArgs\n {\n VirtualMachine = instance.SelfLink,\n IpAddress = addrPeer.IPAddress,\n },\n },\n SiteToSiteDataTransfer = false,\n },\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router-router\",\n Region = subnetwork.Region,\n Network = network.SelfLink,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n var interfaceRedundant = new Gcp.Compute.RouterInterface(\"interface_redundant\", new()\n {\n Name = \"my-router-intf-red\",\n Region = router.Region,\n Router = router.Name,\n Subnetwork = subnetwork.SelfLink,\n PrivateIpAddress = addrIntfRedundant.IPAddress,\n });\n\n var @interface = new Gcp.Compute.RouterInterface(\"interface\", new()\n {\n Name = \"my-router-intf\",\n Region = router.Region,\n Router = router.Name,\n Subnetwork = subnetwork.SelfLink,\n PrivateIpAddress = addrIntf.IPAddress,\n RedundantInterface = interfaceRedundant.Name,\n });\n\n var peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = router.Name,\n Region = router.Region,\n Interface = @interface.Name,\n RouterApplianceInstance = instance.SelfLink,\n PeerAsn = 65513,\n PeerIpAddress = addrPeer.IPAddress,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\nName: pulumi.String(\"my-router-net\"),\nAutoCreateSubnetworks: pulumi.Bool(false),\n})\nif err != nil {\nreturn err\n}\nsubnetwork, err := compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\nName: pulumi.String(\"my-router-sub\"),\nNetwork: network.SelfLink,\nIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\nRegion: pulumi.String(\"us-central1\"),\n})\nif err != nil {\nreturn err\n}\naddrIntf, err := compute.NewAddress(ctx, \"addr_intf\", \u0026compute.AddressArgs{\nName: pulumi.String(\"my-router-addr-intf\"),\nRegion: subnetwork.Region,\nSubnetwork: subnetwork.ID(),\nAddressType: pulumi.String(\"INTERNAL\"),\n})\nif err != nil {\nreturn err\n}\naddrIntfRedundant, err := compute.NewAddress(ctx, \"addr_intf_redundant\", \u0026compute.AddressArgs{\nName: pulumi.String(\"my-router-addr-intf-red\"),\nRegion: subnetwork.Region,\nSubnetwork: subnetwork.ID(),\nAddressType: pulumi.String(\"INTERNAL\"),\n})\nif err != nil {\nreturn err\n}\naddrPeer, err := compute.NewAddress(ctx, \"addr_peer\", \u0026compute.AddressArgs{\nName: pulumi.String(\"my-router-addr-peer\"),\nRegion: subnetwork.Region,\nSubnetwork: subnetwork.ID(),\nAddressType: pulumi.String(\"INTERNAL\"),\n})\nif err != nil {\nreturn err\n}\ninstance, err := compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\nName: pulumi.String(\"router-appliance\"),\nZone: pulumi.String(\"us-central1-a\"),\nMachineType: pulumi.String(\"e2-medium\"),\nCanIpForward: pulumi.Bool(true),\nBootDisk: \u0026compute.InstanceBootDiskArgs{\nInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\nImage: pulumi.String(\"debian-cloud/debian-11\"),\n},\n},\nNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\u0026compute.InstanceNetworkInterfaceArgs{\nNetworkIp: addrPeer.Address,\nSubnetwork: subnetwork.SelfLink,\n},\n},\n})\nif err != nil {\nreturn err\n}\nhub, err := networkconnectivity.NewHub(ctx, \"hub\", \u0026networkconnectivity.HubArgs{\nName: pulumi.String(\"my-router-hub\"),\n})\nif err != nil {\nreturn err\n}\n_, err = networkconnectivity.NewSpoke(ctx, \"spoke\", \u0026networkconnectivity.SpokeArgs{\nName: pulumi.String(\"my-router-spoke\"),\nLocation: subnetwork.Region,\nHub: hub.ID(),\nLinkedRouterApplianceInstances: \u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesArgs{\nInstances: networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArray{\n\u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArgs{\nVirtualMachine: instance.SelfLink,\nIpAddress: addrPeer.Address,\n},\n},\nSiteToSiteDataTransfer: pulumi.Bool(false),\n},\n})\nif err != nil {\nreturn err\n}\nrouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\nName: pulumi.String(\"my-router-router\"),\nRegion: subnetwork.Region,\nNetwork: network.SelfLink,\nBgp: \u0026compute.RouterBgpArgs{\nAsn: pulumi.Int(64514),\n},\n})\nif err != nil {\nreturn err\n}\ninterfaceRedundant, err := compute.NewRouterInterface(ctx, \"interface_redundant\", \u0026compute.RouterInterfaceArgs{\nName: pulumi.String(\"my-router-intf-red\"),\nRegion: router.Region,\nRouter: router.Name,\nSubnetwork: subnetwork.SelfLink,\nPrivateIpAddress: addrIntfRedundant.Address,\n})\nif err != nil {\nreturn err\n}\ninterface, err := compute.NewRouterInterface(ctx, \"interface\", \u0026compute.RouterInterfaceArgs{\nName: pulumi.String(\"my-router-intf\"),\nRegion: router.Region,\nRouter: router.Name,\nSubnetwork: subnetwork.SelfLink,\nPrivateIpAddress: addrIntf.Address,\nRedundantInterface: interfaceRedundant.Name,\n})\nif err != nil {\nreturn err\n}\n_, err = compute.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\nName: pulumi.String(\"my-router-peer\"),\nRouter: router.Name,\nRegion: router.Region,\nInterface: interface.Name,\nRouterApplianceInstance: instance.SelfLink,\nPeerAsn: pulumi.Int(65513),\nPeerIpAddress: addrPeer.Address,\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedRouterApplianceInstancesArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.RouterInterface;\nimport com.pulumi.gcp.compute.RouterInterfaceArgs;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-router-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"my-router-sub\")\n .network(network.selfLink())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .build());\n\n var addrIntf = new Address(\"addrIntf\", AddressArgs.builder()\n .name(\"my-router-addr-intf\")\n .region(subnetwork.region())\n .subnetwork(subnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var addrIntfRedundant = new Address(\"addrIntfRedundant\", AddressArgs.builder()\n .name(\"my-router-addr-intf-red\")\n .region(subnetwork.region())\n .subnetwork(subnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var addrPeer = new Address(\"addrPeer\", AddressArgs.builder()\n .name(\"my-router-addr-peer\")\n .region(subnetwork.region())\n .subnetwork(subnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"router-appliance\")\n .zone(\"us-central1-a\")\n .machineType(\"e2-medium\")\n .canIpForward(true)\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .networkIp(addrPeer.address())\n .subnetwork(subnetwork.selfLink())\n .build())\n .build());\n\n var hub = new Hub(\"hub\", HubArgs.builder()\n .name(\"my-router-hub\")\n .build());\n\n var spoke = new Spoke(\"spoke\", SpokeArgs.builder()\n .name(\"my-router-spoke\")\n .location(subnetwork.region())\n .hub(hub.id())\n .linkedRouterApplianceInstances(SpokeLinkedRouterApplianceInstancesArgs.builder()\n .instances(SpokeLinkedRouterApplianceInstancesInstanceArgs.builder()\n .virtualMachine(instance.selfLink())\n .ipAddress(addrPeer.address())\n .build())\n .siteToSiteDataTransfer(false)\n .build())\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router-router\")\n .region(subnetwork.region())\n .network(network.selfLink())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n var interfaceRedundant = new RouterInterface(\"interfaceRedundant\", RouterInterfaceArgs.builder()\n .name(\"my-router-intf-red\")\n .region(router.region())\n .router(router.name())\n .subnetwork(subnetwork.selfLink())\n .privateIpAddress(addrIntfRedundant.address())\n .build());\n\n var interface_ = new RouterInterface(\"interface\", RouterInterfaceArgs.builder()\n .name(\"my-router-intf\")\n .region(router.region())\n .router(router.name())\n .subnetwork(subnetwork.selfLink())\n .privateIpAddress(addrIntf.address())\n .redundantInterface(interfaceRedundant.name())\n .build());\n\n var peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(router.name())\n .region(router.region())\n .interface_(interface_.name())\n .routerApplianceInstance(instance.selfLink())\n .peerAsn(65513)\n .peerIpAddress(addrPeer.address())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: my-router-net\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: my-router-sub\n network: ${network.selfLink}\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n addrIntf:\n type: gcp:compute:Address\n name: addr_intf\n properties:\n name: my-router-addr-intf\n region: ${subnetwork.region}\n subnetwork: ${subnetwork.id}\n addressType: INTERNAL\n addrIntfRedundant:\n type: gcp:compute:Address\n name: addr_intf_redundant\n properties:\n name: my-router-addr-intf-red\n region: ${subnetwork.region}\n subnetwork: ${subnetwork.id}\n addressType: INTERNAL\n addrPeer:\n type: gcp:compute:Address\n name: addr_peer\n properties:\n name: my-router-addr-peer\n region: ${subnetwork.region}\n subnetwork: ${subnetwork.id}\n addressType: INTERNAL\n instance:\n type: gcp:compute:Instance\n properties:\n name: router-appliance\n zone: us-central1-a\n machineType: e2-medium\n canIpForward: true\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - networkIp: ${addrPeer.address}\n subnetwork: ${subnetwork.selfLink}\n hub:\n type: gcp:networkconnectivity:Hub\n properties:\n name: my-router-hub\n spoke:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: my-router-spoke\n location: ${subnetwork.region}\n hub: ${hub.id}\n linkedRouterApplianceInstances:\n instances:\n - virtualMachine: ${instance.selfLink}\n ipAddress: ${addrPeer.address}\n siteToSiteDataTransfer: false\n router:\n type: gcp:compute:Router\n properties:\n name: my-router-router\n region: ${subnetwork.region}\n network: ${network.selfLink}\n bgp:\n asn: 64514\n interfaceRedundant:\n type: gcp:compute:RouterInterface\n name: interface_redundant\n properties:\n name: my-router-intf-red\n region: ${router.region}\n router: ${router.name}\n subnetwork: ${subnetwork.selfLink}\n privateIpAddress: ${addrIntfRedundant.address}\n interface:\n type: gcp:compute:RouterInterface\n properties:\n name: my-router-intf\n region: ${router.region}\n router: ${router.name}\n subnetwork: ${subnetwork.selfLink}\n privateIpAddress: ${addrIntf.address}\n redundantInterface: ${interfaceRedundant.name}\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: ${router.name}\n region: ${router.region}\n interface: ${interface.name}\n routerApplianceInstance: ${instance.selfLink}\n peerAsn: 65513\n peerIpAddress: ${addrPeer.address}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Router Peer Md5 Authentication Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foobar = new gcp.compute.RouterPeer(\"foobar\", {\n name: \"%s-peer\",\n router: foobarGoogleComputeRouter.name,\n region: foobarGoogleComputeRouter.region,\n peerAsn: 65515,\n advertisedRoutePriority: 100,\n \"interface\": foobarGoogleComputeRouterInterface.name,\n peerIpAddress: \"169.254.3.2\",\n md5AuthenticationKey: {\n name: \"%s-peer-key\",\n key: \"%s-peer-key-value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoobar = gcp.compute.RouterPeer(\"foobar\",\n name=\"%s-peer\",\n router=foobar_google_compute_router[\"name\"],\n region=foobar_google_compute_router[\"region\"],\n peer_asn=65515,\n advertised_route_priority=100,\n interface=foobar_google_compute_router_interface[\"name\"],\n peer_ip_address=\"169.254.3.2\",\n md5_authentication_key={\n \"name\": \"%s-peer-key\",\n \"key\": \"%s-peer-key-value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foobar = new Gcp.Compute.RouterPeer(\"foobar\", new()\n {\n Name = \"%s-peer\",\n Router = foobarGoogleComputeRouter.Name,\n Region = foobarGoogleComputeRouter.Region,\n PeerAsn = 65515,\n AdvertisedRoutePriority = 100,\n Interface = foobarGoogleComputeRouterInterface.Name,\n PeerIpAddress = \"169.254.3.2\",\n Md5AuthenticationKey = new Gcp.Compute.Inputs.RouterPeerMd5AuthenticationKeyArgs\n {\n Name = \"%s-peer-key\",\n Key = \"%s-peer-key-value\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRouterPeer(ctx, \"foobar\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"%s-peer\"),\n\t\t\tRouter: pulumi.Any(foobarGoogleComputeRouter.Name),\n\t\t\tRegion: pulumi.Any(foobarGoogleComputeRouter.Region),\n\t\t\tPeerAsn: pulumi.Int(65515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.Any(foobarGoogleComputeRouterInterface.Name),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.3.2\"),\n\t\t\tMd5AuthenticationKey: \u0026compute.RouterPeerMd5AuthenticationKeyArgs{\n\t\t\t\tName: pulumi.String(\"%s-peer-key\"),\n\t\t\t\tKey: pulumi.String(\"%s-peer-key-value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport com.pulumi.gcp.compute.inputs.RouterPeerMd5AuthenticationKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foobar = new RouterPeer(\"foobar\", RouterPeerArgs.builder()\n .name(\"%s-peer\")\n .router(foobarGoogleComputeRouter.name())\n .region(foobarGoogleComputeRouter.region())\n .peerAsn(65515)\n .advertisedRoutePriority(100)\n .interface_(foobarGoogleComputeRouterInterface.name())\n .peerIpAddress(\"169.254.3.2\")\n .md5AuthenticationKey(RouterPeerMd5AuthenticationKeyArgs.builder()\n .name(\"%s-peer-key\")\n .key(\"%s-peer-key-value\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:RouterPeer\n properties:\n name: '%s-peer'\n router: ${foobarGoogleComputeRouter.name}\n region: ${foobarGoogleComputeRouter.region}\n peerAsn: 65515\n advertisedRoutePriority: 100\n interface: ${foobarGoogleComputeRouterInterface.name}\n peerIpAddress: 169.254.3.2\n md5AuthenticationKey:\n name: '%s-peer-key'\n key: '%s-peer-key-value'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Router Peer Export And Import Policies\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-router-net\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"my-router-subnet\",\n network: network.selfLink,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n});\nconst address = new gcp.compute.Address(\"address\", {\n name: \"my-router\",\n region: subnetwork.region,\n});\nconst vpnGateway = new gcp.compute.HaVpnGateway(\"vpn_gateway\", {\n name: \"my-router-gateway\",\n network: network.selfLink,\n region: subnetwork.region,\n});\nconst externalGateway = new gcp.compute.ExternalVpnGateway(\"external_gateway\", {\n name: \"my-router-external-gateway\",\n redundancyType: \"SINGLE_IP_INTERNALLY_REDUNDANT\",\n description: \"An externally managed VPN gateway\",\n interfaces: [{\n id: 0,\n ipAddress: \"8.8.8.8\",\n }],\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router\",\n region: subnetwork.region,\n network: network.selfLink,\n bgp: {\n asn: 64514,\n },\n});\nconst vpnTunnel = new gcp.compute.VPNTunnel(\"vpn_tunnel\", {\n name: \"my-router\",\n region: subnetwork.region,\n vpnGateway: vpnGateway.id,\n peerExternalGateway: externalGateway.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"unguessable\",\n router: router.name,\n vpnGatewayInterface: 0,\n});\nconst routerInterface = new gcp.compute.RouterInterface(\"router_interface\", {\n name: \"my-router\",\n router: router.name,\n region: router.region,\n vpnTunnel: vpnTunnel.name,\n});\nconst rp_export = new gcp.compute.RouterRoutePolicy(\"rp-export\", {\n name: \"my-router-rp-export\",\n router: router.name,\n region: router.region,\n type: \"ROUTE_POLICY_TYPE_EXPORT\",\n terms: [{\n priority: 2,\n match: {\n expression: \"destination == '10.0.0.0/12'\",\n title: \"export_expression\",\n description: \"acceptance expression for export\",\n },\n actions: [{\n expression: \"accept()\",\n }],\n }],\n}, {\n dependsOn: [routerInterface],\n});\nconst rp_import = new gcp.compute.RouterRoutePolicy(\"rp-import\", {\n name: \"my-router-rp-import\",\n router: router.name,\n region: router.region,\n type: \"ROUTE_POLICY_TYPE_IMPORT\",\n terms: [{\n priority: 1,\n match: {\n expression: \"destination == '10.0.0.0/12'\",\n title: \"import_expression\",\n description: \"acceptance expression for import\",\n },\n actions: [{\n expression: \"accept()\",\n }],\n }],\n}, {\n dependsOn: [\n routerInterface,\n rp_export,\n ],\n});\nconst routerPeer = new gcp.compute.RouterPeer(\"router_peer\", {\n name: \"my-router-peer\",\n router: router.name,\n region: router.region,\n peerAsn: 65515,\n advertisedRoutePriority: 100,\n \"interface\": routerInterface.name,\n md5AuthenticationKey: {\n name: \"my-router-peer-key\",\n key: \"my-router-peer-key-value\",\n },\n importPolicies: [rp_import.name],\n exportPolicies: [rp_export.name],\n}, {\n dependsOn: [\n rp_export,\n rp_import,\n routerInterface,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-router-net\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"my-router-subnet\",\n network=network.self_link,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\")\naddress = gcp.compute.Address(\"address\",\n name=\"my-router\",\n region=subnetwork.region)\nvpn_gateway = gcp.compute.HaVpnGateway(\"vpn_gateway\",\n name=\"my-router-gateway\",\n network=network.self_link,\n region=subnetwork.region)\nexternal_gateway = gcp.compute.ExternalVpnGateway(\"external_gateway\",\n name=\"my-router-external-gateway\",\n redundancy_type=\"SINGLE_IP_INTERNALLY_REDUNDANT\",\n description=\"An externally managed VPN gateway\",\n interfaces=[{\n \"id\": 0,\n \"ip_address\": \"8.8.8.8\",\n }])\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router\",\n region=subnetwork.region,\n network=network.self_link,\n bgp={\n \"asn\": 64514,\n })\nvpn_tunnel = gcp.compute.VPNTunnel(\"vpn_tunnel\",\n name=\"my-router\",\n region=subnetwork.region,\n vpn_gateway=vpn_gateway.id,\n peer_external_gateway=external_gateway.id,\n peer_external_gateway_interface=0,\n shared_secret=\"unguessable\",\n router=router.name,\n vpn_gateway_interface=0)\nrouter_interface = gcp.compute.RouterInterface(\"router_interface\",\n name=\"my-router\",\n router=router.name,\n region=router.region,\n vpn_tunnel=vpn_tunnel.name)\nrp_export = gcp.compute.RouterRoutePolicy(\"rp-export\",\n name=\"my-router-rp-export\",\n router=router.name,\n region=router.region,\n type=\"ROUTE_POLICY_TYPE_EXPORT\",\n terms=[{\n \"priority\": 2,\n \"match\": {\n \"expression\": \"destination == '10.0.0.0/12'\",\n \"title\": \"export_expression\",\n \"description\": \"acceptance expression for export\",\n },\n \"actions\": [{\n \"expression\": \"accept()\",\n }],\n }],\n opts = pulumi.ResourceOptions(depends_on=[router_interface]))\nrp_import = gcp.compute.RouterRoutePolicy(\"rp-import\",\n name=\"my-router-rp-import\",\n router=router.name,\n region=router.region,\n type=\"ROUTE_POLICY_TYPE_IMPORT\",\n terms=[{\n \"priority\": 1,\n \"match\": {\n \"expression\": \"destination == '10.0.0.0/12'\",\n \"title\": \"import_expression\",\n \"description\": \"acceptance expression for import\",\n },\n \"actions\": [{\n \"expression\": \"accept()\",\n }],\n }],\n opts = pulumi.ResourceOptions(depends_on=[\n router_interface,\n rp_export,\n ]))\nrouter_peer = gcp.compute.RouterPeer(\"router_peer\",\n name=\"my-router-peer\",\n router=router.name,\n region=router.region,\n peer_asn=65515,\n advertised_route_priority=100,\n interface=router_interface.name,\n md5_authentication_key={\n \"name\": \"my-router-peer-key\",\n \"key\": \"my-router-peer-key-value\",\n },\n import_policies=[rp_import.name],\n export_policies=[rp_export.name],\n opts = pulumi.ResourceOptions(depends_on=[\n rp_export,\n rp_import,\n router_interface,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-router-net\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"my-router-subnet\",\n Network = network.SelfLink,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n });\n\n var address = new Gcp.Compute.Address(\"address\", new()\n {\n Name = \"my-router\",\n Region = subnetwork.Region,\n });\n\n var vpnGateway = new Gcp.Compute.HaVpnGateway(\"vpn_gateway\", new()\n {\n Name = \"my-router-gateway\",\n Network = network.SelfLink,\n Region = subnetwork.Region,\n });\n\n var externalGateway = new Gcp.Compute.ExternalVpnGateway(\"external_gateway\", new()\n {\n Name = \"my-router-external-gateway\",\n RedundancyType = \"SINGLE_IP_INTERNALLY_REDUNDANT\",\n Description = \"An externally managed VPN gateway\",\n Interfaces = new[]\n {\n new Gcp.Compute.Inputs.ExternalVpnGatewayInterfaceArgs\n {\n Id = 0,\n IpAddress = \"8.8.8.8\",\n },\n },\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router\",\n Region = subnetwork.Region,\n Network = network.SelfLink,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n var vpnTunnel = new Gcp.Compute.VPNTunnel(\"vpn_tunnel\", new()\n {\n Name = \"my-router\",\n Region = subnetwork.Region,\n VpnGateway = vpnGateway.Id,\n PeerExternalGateway = externalGateway.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"unguessable\",\n Router = router.Name,\n VpnGatewayInterface = 0,\n });\n\n var routerInterface = new Gcp.Compute.RouterInterface(\"router_interface\", new()\n {\n Name = \"my-router\",\n Router = router.Name,\n Region = router.Region,\n VpnTunnel = vpnTunnel.Name,\n });\n\n var rp_export = new Gcp.Compute.RouterRoutePolicy(\"rp-export\", new()\n {\n Name = \"my-router-rp-export\",\n Router = router.Name,\n Region = router.Region,\n Type = \"ROUTE_POLICY_TYPE_EXPORT\",\n Terms = new[]\n {\n new Gcp.Compute.Inputs.RouterRoutePolicyTermArgs\n {\n Priority = 2,\n Match = new Gcp.Compute.Inputs.RouterRoutePolicyTermMatchArgs\n {\n Expression = \"destination == '10.0.0.0/12'\",\n Title = \"export_expression\",\n Description = \"acceptance expression for export\",\n },\n Actions = new[]\n {\n new Gcp.Compute.Inputs.RouterRoutePolicyTermActionArgs\n {\n Expression = \"accept()\",\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n routerInterface,\n },\n });\n\n var rp_import = new Gcp.Compute.RouterRoutePolicy(\"rp-import\", new()\n {\n Name = \"my-router-rp-import\",\n Router = router.Name,\n Region = router.Region,\n Type = \"ROUTE_POLICY_TYPE_IMPORT\",\n Terms = new[]\n {\n new Gcp.Compute.Inputs.RouterRoutePolicyTermArgs\n {\n Priority = 1,\n Match = new Gcp.Compute.Inputs.RouterRoutePolicyTermMatchArgs\n {\n Expression = \"destination == '10.0.0.0/12'\",\n Title = \"import_expression\",\n Description = \"acceptance expression for import\",\n },\n Actions = new[]\n {\n new Gcp.Compute.Inputs.RouterRoutePolicyTermActionArgs\n {\n Expression = \"accept()\",\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n routerInterface,\n rp_export,\n },\n });\n\n var routerPeer = new Gcp.Compute.RouterPeer(\"router_peer\", new()\n {\n Name = \"my-router-peer\",\n Router = router.Name,\n Region = router.Region,\n PeerAsn = 65515,\n AdvertisedRoutePriority = 100,\n Interface = routerInterface.Name,\n Md5AuthenticationKey = new Gcp.Compute.Inputs.RouterPeerMd5AuthenticationKeyArgs\n {\n Name = \"my-router-peer-key\",\n Key = \"my-router-peer-key-value\",\n },\n ImportPolicies = new[]\n {\n rp_import.Name,\n },\n ExportPolicies = new[]\n {\n rp_export.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rp_export,\n rp_import,\n routerInterface,\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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-router-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\tsubnetwork, err := compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-router-subnet\"),\n\t\t\tNetwork: network.SelfLink,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnetwork.Region,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpnGateway, err := compute.NewHaVpnGateway(ctx, \"vpn_gateway\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"my-router-gateway\"),\n\t\t\tNetwork: network.SelfLink,\n\t\t\tRegion: subnetwork.Region,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternalGateway, err := compute.NewExternalVpnGateway(ctx, \"external_gateway\", \u0026compute.ExternalVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"my-router-external-gateway\"),\n\t\t\tRedundancyType: pulumi.String(\"SINGLE_IP_INTERNALLY_REDUNDANT\"),\n\t\t\tDescription: pulumi.String(\"An externally managed VPN gateway\"),\n\t\t\tInterfaces: compute.ExternalVpnGatewayInterfaceArray{\n\t\t\t\t\u0026compute.ExternalVpnGatewayInterfaceArgs{\n\t\t\t\t\tId: pulumi.Int(0),\n\t\t\t\t\tIpAddress: pulumi.String(\"8.8.8.8\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnetwork.Region,\n\t\t\tNetwork: network.SelfLink,\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(64514),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpnTunnel, err := compute.NewVPNTunnel(ctx, \"vpn_tunnel\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnetwork.Region,\n\t\t\tVpnGateway: vpnGateway.ID(),\n\t\t\tPeerExternalGateway: externalGateway.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"unguessable\"),\n\t\t\tRouter: router.Name,\n\t\t\tVpnGatewayInterface: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouterInterface, err := compute.NewRouterInterface(ctx, \"router_interface\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tVpnTunnel: vpnTunnel.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterRoutePolicy(ctx, \"rp-export\", \u0026compute.RouterRoutePolicyArgs{\n\t\t\tName: pulumi.String(\"my-router-rp-export\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tType: pulumi.String(\"ROUTE_POLICY_TYPE_EXPORT\"),\n\t\t\tTerms: compute.RouterRoutePolicyTermArray{\n\t\t\t\t\u0026compute.RouterRoutePolicyTermArgs{\n\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\tMatch: \u0026compute.RouterRoutePolicyTermMatchArgs{\n\t\t\t\t\t\tExpression: pulumi.String(\"destination == '10.0.0.0/12'\"),\n\t\t\t\t\t\tTitle: pulumi.String(\"export_expression\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"acceptance expression for export\"),\n\t\t\t\t\t},\n\t\t\t\t\tActions: compute.RouterRoutePolicyTermActionArray{\n\t\t\t\t\t\t\u0026compute.RouterRoutePolicyTermActionArgs{\n\t\t\t\t\t\t\tExpression: pulumi.String(\"accept()\"),\n\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\trouterInterface,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterRoutePolicy(ctx, \"rp-import\", \u0026compute.RouterRoutePolicyArgs{\n\t\t\tName: pulumi.String(\"my-router-rp-import\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tType: pulumi.String(\"ROUTE_POLICY_TYPE_IMPORT\"),\n\t\t\tTerms: compute.RouterRoutePolicyTermArray{\n\t\t\t\t\u0026compute.RouterRoutePolicyTermArgs{\n\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\tMatch: \u0026compute.RouterRoutePolicyTermMatchArgs{\n\t\t\t\t\t\tExpression: pulumi.String(\"destination == '10.0.0.0/12'\"),\n\t\t\t\t\t\tTitle: pulumi.String(\"import_expression\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"acceptance expression for import\"),\n\t\t\t\t\t},\n\t\t\t\t\tActions: compute.RouterRoutePolicyTermActionArray{\n\t\t\t\t\t\t\u0026compute.RouterRoutePolicyTermActionArgs{\n\t\t\t\t\t\t\tExpression: pulumi.String(\"accept()\"),\n\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\trouterInterface,\n\t\t\trp_export,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterPeer(ctx, \"router_peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tPeerAsn: pulumi.Int(65515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: routerInterface.Name,\n\t\t\tMd5AuthenticationKey: \u0026compute.RouterPeerMd5AuthenticationKeyArgs{\n\t\t\t\tName: pulumi.String(\"my-router-peer-key\"),\n\t\t\t\tKey: pulumi.String(\"my-router-peer-key-value\"),\n\t\t\t},\n\t\t\tImportPolicies: pulumi.StringArray{\n\t\t\t\trp_import.Name,\n\t\t\t},\n\t\t\tExportPolicies: pulumi.StringArray{\n\t\t\t\trp_export.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trp_export,\n\t\t\trp_import,\n\t\t\trouterInterface,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.HaVpnGateway;\nimport com.pulumi.gcp.compute.HaVpnGatewayArgs;\nimport com.pulumi.gcp.compute.ExternalVpnGateway;\nimport com.pulumi.gcp.compute.ExternalVpnGatewayArgs;\nimport com.pulumi.gcp.compute.inputs.ExternalVpnGatewayInterfaceArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.VPNTunnel;\nimport com.pulumi.gcp.compute.VPNTunnelArgs;\nimport com.pulumi.gcp.compute.RouterInterface;\nimport com.pulumi.gcp.compute.RouterInterfaceArgs;\nimport com.pulumi.gcp.compute.RouterRoutePolicy;\nimport com.pulumi.gcp.compute.RouterRoutePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RouterRoutePolicyTermArgs;\nimport com.pulumi.gcp.compute.inputs.RouterRoutePolicyTermMatchArgs;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport com.pulumi.gcp.compute.inputs.RouterPeerMd5AuthenticationKeyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-router-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"my-router-subnet\")\n .network(network.selfLink())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .build());\n\n var address = new Address(\"address\", AddressArgs.builder()\n .name(\"my-router\")\n .region(subnetwork.region())\n .build());\n\n var vpnGateway = new HaVpnGateway(\"vpnGateway\", HaVpnGatewayArgs.builder()\n .name(\"my-router-gateway\")\n .network(network.selfLink())\n .region(subnetwork.region())\n .build());\n\n var externalGateway = new ExternalVpnGateway(\"externalGateway\", ExternalVpnGatewayArgs.builder()\n .name(\"my-router-external-gateway\")\n .redundancyType(\"SINGLE_IP_INTERNALLY_REDUNDANT\")\n .description(\"An externally managed VPN gateway\")\n .interfaces(ExternalVpnGatewayInterfaceArgs.builder()\n .id(0)\n .ipAddress(\"8.8.8.8\")\n .build())\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router\")\n .region(subnetwork.region())\n .network(network.selfLink())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n var vpnTunnel = new VPNTunnel(\"vpnTunnel\", VPNTunnelArgs.builder()\n .name(\"my-router\")\n .region(subnetwork.region())\n .vpnGateway(vpnGateway.id())\n .peerExternalGateway(externalGateway.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"unguessable\")\n .router(router.name())\n .vpnGatewayInterface(0)\n .build());\n\n var routerInterface = new RouterInterface(\"routerInterface\", RouterInterfaceArgs.builder()\n .name(\"my-router\")\n .router(router.name())\n .region(router.region())\n .vpnTunnel(vpnTunnel.name())\n .build());\n\n var rp_export = new RouterRoutePolicy(\"rp-export\", RouterRoutePolicyArgs.builder()\n .name(\"my-router-rp-export\")\n .router(router.name())\n .region(router.region())\n .type(\"ROUTE_POLICY_TYPE_EXPORT\")\n .terms(RouterRoutePolicyTermArgs.builder()\n .priority(2)\n .match(RouterRoutePolicyTermMatchArgs.builder()\n .expression(\"destination == '10.0.0.0/12'\")\n .title(\"export_expression\")\n .description(\"acceptance expression for export\")\n .build())\n .actions(RouterRoutePolicyTermActionArgs.builder()\n .expression(\"accept()\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(routerInterface)\n .build());\n\n var rp_import = new RouterRoutePolicy(\"rp-import\", RouterRoutePolicyArgs.builder()\n .name(\"my-router-rp-import\")\n .router(router.name())\n .region(router.region())\n .type(\"ROUTE_POLICY_TYPE_IMPORT\")\n .terms(RouterRoutePolicyTermArgs.builder()\n .priority(1)\n .match(RouterRoutePolicyTermMatchArgs.builder()\n .expression(\"destination == '10.0.0.0/12'\")\n .title(\"import_expression\")\n .description(\"acceptance expression for import\")\n .build())\n .actions(RouterRoutePolicyTermActionArgs.builder()\n .expression(\"accept()\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n routerInterface,\n rp_export)\n .build());\n\n var routerPeer = new RouterPeer(\"routerPeer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(router.name())\n .region(router.region())\n .peerAsn(65515)\n .advertisedRoutePriority(100)\n .interface_(routerInterface.name())\n .md5AuthenticationKey(RouterPeerMd5AuthenticationKeyArgs.builder()\n .name(\"my-router-peer-key\")\n .key(\"my-router-peer-key-value\")\n .build())\n .importPolicies(rp_import.name())\n .exportPolicies(rp_export.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rp_export,\n rp_import,\n routerInterface)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: my-router-net\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: my-router-subnet\n network: ${network.selfLink}\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n address:\n type: gcp:compute:Address\n properties:\n name: my-router\n region: ${subnetwork.region}\n vpnGateway:\n type: gcp:compute:HaVpnGateway\n name: vpn_gateway\n properties:\n name: my-router-gateway\n network: ${network.selfLink}\n region: ${subnetwork.region}\n externalGateway:\n type: gcp:compute:ExternalVpnGateway\n name: external_gateway\n properties:\n name: my-router-external-gateway\n redundancyType: SINGLE_IP_INTERNALLY_REDUNDANT\n description: An externally managed VPN gateway\n interfaces:\n - id: 0\n ipAddress: 8.8.8.8\n router:\n type: gcp:compute:Router\n properties:\n name: my-router\n region: ${subnetwork.region}\n network: ${network.selfLink}\n bgp:\n asn: 64514\n vpnTunnel:\n type: gcp:compute:VPNTunnel\n name: vpn_tunnel\n properties:\n name: my-router\n region: ${subnetwork.region}\n vpnGateway: ${vpnGateway.id}\n peerExternalGateway: ${externalGateway.id}\n peerExternalGatewayInterface: 0\n sharedSecret: unguessable\n router: ${router.name}\n vpnGatewayInterface: 0\n routerInterface:\n type: gcp:compute:RouterInterface\n name: router_interface\n properties:\n name: my-router\n router: ${router.name}\n region: ${router.region}\n vpnTunnel: ${vpnTunnel.name}\n rp-export:\n type: gcp:compute:RouterRoutePolicy\n properties:\n name: my-router-rp-export\n router: ${router.name}\n region: ${router.region}\n type: ROUTE_POLICY_TYPE_EXPORT\n terms:\n - priority: 2\n match:\n expression: destination == '10.0.0.0/12'\n title: export_expression\n description: acceptance expression for export\n actions:\n - expression: accept()\n options:\n dependsOn:\n - ${routerInterface}\n rp-import:\n type: gcp:compute:RouterRoutePolicy\n properties:\n name: my-router-rp-import\n router: ${router.name}\n region: ${router.region}\n type: ROUTE_POLICY_TYPE_IMPORT\n terms:\n - priority: 1\n match:\n expression: destination == '10.0.0.0/12'\n title: import_expression\n description: acceptance expression for import\n actions:\n - expression: accept()\n options:\n dependsOn:\n - ${routerInterface}\n - ${[\"rp-export\"]}\n routerPeer:\n type: gcp:compute:RouterPeer\n name: router_peer\n properties:\n name: my-router-peer\n router: ${router.name}\n region: ${router.region}\n peerAsn: 65515\n advertisedRoutePriority: 100\n interface: ${routerInterface.name}\n md5AuthenticationKey:\n name: my-router-peer-key\n key: my-router-peer-key-value\n importPolicies:\n - ${[\"rp-import\"].name}\n exportPolicies:\n - ${[\"rp-export\"].name}\n options:\n dependsOn:\n - ${[\"rp-export\"]}\n - ${[\"rp-import\"]}\n - ${routerInterface}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRouterBgpPeer can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}`\n\n* `{{project}}/{{region}}/{{router}}/{{name}}`\n\n* `{{region}}/{{router}}/{{name}}`\n\n* `{{router}}/{{name}}`\n\nWhen using the `pulumi import` command, RouterBgpPeer can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default {{project}}/{{region}}/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default {{region}}/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default {{router}}/{{name}}\n```\n\n", + "description": "BGP information that must be configured into the routing stack to\nestablish BGP peering. This information must specify the peer ASN\nand either the interface name, IP address, or peer IP address.\nPlease refer to RFC4273.\n\n\nTo get more information about RouterBgpPeer, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/routers)\n* How-to Guides\n * [Google Cloud Router](https://cloud.google.com/router/docs/)\n\n## Example Usage\n\n### Router Peer Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n peerAsn: 65513,\n advertisedRoutePriority: 100,\n \"interface\": \"interface-1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n peer_asn=65513,\n advertised_route_priority=100,\n interface=\"interface-1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n PeerAsn = 65513,\n AdvertisedRoutePriority = 100,\n Interface = \"interface-1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .peerAsn(65513)\n .advertisedRoutePriority(100)\n .interface_(\"interface-1\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n peerAsn: 65513\n advertisedRoutePriority: 100\n interface: interface-1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Peer Disabled\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 65513,\n advertisedRoutePriority: 100,\n \"interface\": \"interface-1\",\n enable: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=65513,\n advertised_route_priority=100,\n interface=\"interface-1\",\n enable=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 65513,\n AdvertisedRoutePriority = 100,\n Interface = \"interface-1\",\n Enable = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.1.2\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\n\t\t\tEnable: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(65513)\n .advertisedRoutePriority(100)\n .interface_(\"interface-1\")\n .enable(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 65513\n advertisedRoutePriority: 100\n interface: interface-1\n enable: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Peer Bfd\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 65513,\n advertisedRoutePriority: 100,\n \"interface\": \"interface-1\",\n bfd: {\n minReceiveInterval: 1000,\n minTransmitInterval: 1000,\n multiplier: 5,\n sessionInitializationMode: \"ACTIVE\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=65513,\n advertised_route_priority=100,\n interface=\"interface-1\",\n bfd={\n \"min_receive_interval\": 1000,\n \"min_transmit_interval\": 1000,\n \"multiplier\": 5,\n \"session_initialization_mode\": \"ACTIVE\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 65513,\n AdvertisedRoutePriority = 100,\n Interface = \"interface-1\",\n Bfd = new Gcp.Compute.Inputs.RouterPeerBfdArgs\n {\n MinReceiveInterval = 1000,\n MinTransmitInterval = 1000,\n Multiplier = 5,\n SessionInitializationMode = \"ACTIVE\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.1.2\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\n\t\t\tBfd: \u0026compute.RouterPeerBfdArgs{\n\t\t\t\tMinReceiveInterval: pulumi.Int(1000),\n\t\t\t\tMinTransmitInterval: pulumi.Int(1000),\n\t\t\t\tMultiplier: pulumi.Int(5),\n\t\t\t\tSessionInitializationMode: pulumi.String(\"ACTIVE\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport com.pulumi.gcp.compute.inputs.RouterPeerBfdArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(65513)\n .advertisedRoutePriority(100)\n .interface_(\"interface-1\")\n .bfd(RouterPeerBfdArgs.builder()\n .minReceiveInterval(1000)\n .minTransmitInterval(1000)\n .multiplier(5)\n .sessionInitializationMode(\"ACTIVE\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 65513\n advertisedRoutePriority: 100\n interface: interface-1\n bfd:\n minReceiveInterval: 1000\n minTransmitInterval: 1000\n multiplier: 5\n sessionInitializationMode: ACTIVE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Zero Custom Learend Route Priority\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: \"my-router\",\n region: \"us-central1\",\n \"interface\": \"interface-1\",\n peerAsn: 65513,\n customLearnedRoutePriority: 0,\n zeroCustomLearnedRoutePriority: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=\"my-router\",\n region=\"us-central1\",\n interface=\"interface-1\",\n peer_asn=65513,\n custom_learned_route_priority=0,\n zero_custom_learned_route_priority=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 peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = \"my-router\",\n Region = \"us-central1\",\n Interface = \"interface-1\",\n PeerAsn = 65513,\n CustomLearnedRoutePriority = 0,\n ZeroCustomLearnedRoutePriority = 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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: pulumi.String(\"my-router\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tInterface: pulumi.String(\"interface-1\"),\n\t\t\tPeerAsn: pulumi.Int(65513),\n\t\t\tCustomLearnedRoutePriority: pulumi.Int(0),\n\t\t\tZeroCustomLearnedRoutePriority: 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.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(\"my-router\")\n .region(\"us-central1\")\n .interface_(\"interface-1\")\n .peerAsn(65513)\n .customLearnedRoutePriority(0)\n .zeroCustomLearnedRoutePriority(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: my-router\n region: us-central1\n interface: interface-1\n peerAsn: 65513\n customLearnedRoutePriority: 0\n zeroCustomLearnedRoutePriority: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Router Peer Router Appliance\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-router-net\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"my-router-sub\",\n network: network.selfLink,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n});\nconst addrIntf = new gcp.compute.Address(\"addr_intf\", {\n name: \"my-router-addr-intf\",\n region: subnetwork.region,\n subnetwork: subnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst addrIntfRedundant = new gcp.compute.Address(\"addr_intf_redundant\", {\n name: \"my-router-addr-intf-red\",\n region: subnetwork.region,\n subnetwork: subnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst addrPeer = new gcp.compute.Address(\"addr_peer\", {\n name: \"my-router-addr-peer\",\n region: subnetwork.region,\n subnetwork: subnetwork.id,\n addressType: \"INTERNAL\",\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n name: \"router-appliance\",\n zone: \"us-central1-a\",\n machineType: \"e2-medium\",\n canIpForward: true,\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n networkInterfaces: [{\n networkIp: addrPeer.address,\n subnetwork: subnetwork.selfLink,\n }],\n});\nconst hub = new gcp.networkconnectivity.Hub(\"hub\", {name: \"my-router-hub\"});\nconst spoke = new gcp.networkconnectivity.Spoke(\"spoke\", {\n name: \"my-router-spoke\",\n location: subnetwork.region,\n hub: hub.id,\n linkedRouterApplianceInstances: {\n instances: [{\n virtualMachine: instance.selfLink,\n ipAddress: addrPeer.address,\n }],\n siteToSiteDataTransfer: false,\n },\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router-router\",\n region: subnetwork.region,\n network: network.selfLink,\n bgp: {\n asn: 64514,\n },\n});\nconst interfaceRedundant = new gcp.compute.RouterInterface(\"interface_redundant\", {\n name: \"my-router-intf-red\",\n region: router.region,\n router: router.name,\n subnetwork: subnetwork.selfLink,\n privateIpAddress: addrIntfRedundant.address,\n});\nconst _interface = new gcp.compute.RouterInterface(\"interface\", {\n name: \"my-router-intf\",\n region: router.region,\n router: router.name,\n subnetwork: subnetwork.selfLink,\n privateIpAddress: addrIntf.address,\n redundantInterface: interfaceRedundant.name,\n});\nconst peer = new gcp.compute.RouterPeer(\"peer\", {\n name: \"my-router-peer\",\n router: router.name,\n region: router.region,\n \"interface\": _interface.name,\n routerApplianceInstance: instance.selfLink,\n peerAsn: 65513,\n peerIpAddress: addrPeer.address,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-router-net\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"my-router-sub\",\n network=network.self_link,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\")\naddr_intf = gcp.compute.Address(\"addr_intf\",\n name=\"my-router-addr-intf\",\n region=subnetwork.region,\n subnetwork=subnetwork.id,\n address_type=\"INTERNAL\")\naddr_intf_redundant = gcp.compute.Address(\"addr_intf_redundant\",\n name=\"my-router-addr-intf-red\",\n region=subnetwork.region,\n subnetwork=subnetwork.id,\n address_type=\"INTERNAL\")\naddr_peer = gcp.compute.Address(\"addr_peer\",\n name=\"my-router-addr-peer\",\n region=subnetwork.region,\n subnetwork=subnetwork.id,\n address_type=\"INTERNAL\")\ninstance = gcp.compute.Instance(\"instance\",\n name=\"router-appliance\",\n zone=\"us-central1-a\",\n machine_type=\"e2-medium\",\n can_ip_forward=True,\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n },\n network_interfaces=[{\n \"network_ip\": addr_peer.address,\n \"subnetwork\": subnetwork.self_link,\n }])\nhub = gcp.networkconnectivity.Hub(\"hub\", name=\"my-router-hub\")\nspoke = gcp.networkconnectivity.Spoke(\"spoke\",\n name=\"my-router-spoke\",\n location=subnetwork.region,\n hub=hub.id,\n linked_router_appliance_instances={\n \"instances\": [{\n \"virtual_machine\": instance.self_link,\n \"ip_address\": addr_peer.address,\n }],\n \"site_to_site_data_transfer\": False,\n })\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router-router\",\n region=subnetwork.region,\n network=network.self_link,\n bgp={\n \"asn\": 64514,\n })\ninterface_redundant = gcp.compute.RouterInterface(\"interface_redundant\",\n name=\"my-router-intf-red\",\n region=router.region,\n router=router.name,\n subnetwork=subnetwork.self_link,\n private_ip_address=addr_intf_redundant.address)\ninterface = gcp.compute.RouterInterface(\"interface\",\n name=\"my-router-intf\",\n region=router.region,\n router=router.name,\n subnetwork=subnetwork.self_link,\n private_ip_address=addr_intf.address,\n redundant_interface=interface_redundant.name)\npeer = gcp.compute.RouterPeer(\"peer\",\n name=\"my-router-peer\",\n router=router.name,\n region=router.region,\n interface=interface.name,\n router_appliance_instance=instance.self_link,\n peer_asn=65513,\n peer_ip_address=addr_peer.address)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-router-net\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"my-router-sub\",\n Network = network.SelfLink,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n });\n\n var addrIntf = new Gcp.Compute.Address(\"addr_intf\", new()\n {\n Name = \"my-router-addr-intf\",\n Region = subnetwork.Region,\n Subnetwork = subnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var addrIntfRedundant = new Gcp.Compute.Address(\"addr_intf_redundant\", new()\n {\n Name = \"my-router-addr-intf-red\",\n Region = subnetwork.Region,\n Subnetwork = subnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var addrPeer = new Gcp.Compute.Address(\"addr_peer\", new()\n {\n Name = \"my-router-addr-peer\",\n Region = subnetwork.Region,\n Subnetwork = subnetwork.Id,\n AddressType = \"INTERNAL\",\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n Name = \"router-appliance\",\n Zone = \"us-central1-a\",\n MachineType = \"e2-medium\",\n CanIpForward = true,\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n NetworkIp = addrPeer.IPAddress,\n Subnetwork = subnetwork.SelfLink,\n },\n },\n });\n\n var hub = new Gcp.NetworkConnectivity.Hub(\"hub\", new()\n {\n Name = \"my-router-hub\",\n });\n\n var spoke = new Gcp.NetworkConnectivity.Spoke(\"spoke\", new()\n {\n Name = \"my-router-spoke\",\n Location = subnetwork.Region,\n Hub = hub.Id,\n LinkedRouterApplianceInstances = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesArgs\n {\n Instances = new[]\n {\n new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesInstanceArgs\n {\n VirtualMachine = instance.SelfLink,\n IpAddress = addrPeer.IPAddress,\n },\n },\n SiteToSiteDataTransfer = false,\n },\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router-router\",\n Region = subnetwork.Region,\n Network = network.SelfLink,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n var interfaceRedundant = new Gcp.Compute.RouterInterface(\"interface_redundant\", new()\n {\n Name = \"my-router-intf-red\",\n Region = router.Region,\n Router = router.Name,\n Subnetwork = subnetwork.SelfLink,\n PrivateIpAddress = addrIntfRedundant.IPAddress,\n });\n\n var @interface = new Gcp.Compute.RouterInterface(\"interface\", new()\n {\n Name = \"my-router-intf\",\n Region = router.Region,\n Router = router.Name,\n Subnetwork = subnetwork.SelfLink,\n PrivateIpAddress = addrIntf.IPAddress,\n RedundantInterface = interfaceRedundant.Name,\n });\n\n var peer = new Gcp.Compute.RouterPeer(\"peer\", new()\n {\n Name = \"my-router-peer\",\n Router = router.Name,\n Region = router.Region,\n Interface = @interface.Name,\n RouterApplianceInstance = instance.SelfLink,\n PeerAsn = 65513,\n PeerIpAddress = addrPeer.IPAddress,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\nfunc main() {\npulumi.Run(func(ctx *pulumi.Context) error {\nnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\nName: pulumi.String(\"my-router-net\"),\nAutoCreateSubnetworks: pulumi.Bool(false),\n})\nif err != nil {\nreturn err\n}\nsubnetwork, err := compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\nName: pulumi.String(\"my-router-sub\"),\nNetwork: network.SelfLink,\nIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\nRegion: pulumi.String(\"us-central1\"),\n})\nif err != nil {\nreturn err\n}\naddrIntf, err := compute.NewAddress(ctx, \"addr_intf\", \u0026compute.AddressArgs{\nName: pulumi.String(\"my-router-addr-intf\"),\nRegion: subnetwork.Region,\nSubnetwork: subnetwork.ID(),\nAddressType: pulumi.String(\"INTERNAL\"),\n})\nif err != nil {\nreturn err\n}\naddrIntfRedundant, err := compute.NewAddress(ctx, \"addr_intf_redundant\", \u0026compute.AddressArgs{\nName: pulumi.String(\"my-router-addr-intf-red\"),\nRegion: subnetwork.Region,\nSubnetwork: subnetwork.ID(),\nAddressType: pulumi.String(\"INTERNAL\"),\n})\nif err != nil {\nreturn err\n}\naddrPeer, err := compute.NewAddress(ctx, \"addr_peer\", \u0026compute.AddressArgs{\nName: pulumi.String(\"my-router-addr-peer\"),\nRegion: subnetwork.Region,\nSubnetwork: subnetwork.ID(),\nAddressType: pulumi.String(\"INTERNAL\"),\n})\nif err != nil {\nreturn err\n}\ninstance, err := compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\nName: pulumi.String(\"router-appliance\"),\nZone: pulumi.String(\"us-central1-a\"),\nMachineType: pulumi.String(\"e2-medium\"),\nCanIpForward: pulumi.Bool(true),\nBootDisk: \u0026compute.InstanceBootDiskArgs{\nInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\nImage: pulumi.String(\"debian-cloud/debian-11\"),\n},\n},\nNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\u0026compute.InstanceNetworkInterfaceArgs{\nNetworkIp: addrPeer.Address,\nSubnetwork: subnetwork.SelfLink,\n},\n},\n})\nif err != nil {\nreturn err\n}\nhub, err := networkconnectivity.NewHub(ctx, \"hub\", \u0026networkconnectivity.HubArgs{\nName: pulumi.String(\"my-router-hub\"),\n})\nif err != nil {\nreturn err\n}\n_, err = networkconnectivity.NewSpoke(ctx, \"spoke\", \u0026networkconnectivity.SpokeArgs{\nName: pulumi.String(\"my-router-spoke\"),\nLocation: subnetwork.Region,\nHub: hub.ID(),\nLinkedRouterApplianceInstances: \u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesArgs{\nInstances: networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArray{\n\u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArgs{\nVirtualMachine: instance.SelfLink,\nIpAddress: addrPeer.Address,\n},\n},\nSiteToSiteDataTransfer: pulumi.Bool(false),\n},\n})\nif err != nil {\nreturn err\n}\nrouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\nName: pulumi.String(\"my-router-router\"),\nRegion: subnetwork.Region,\nNetwork: network.SelfLink,\nBgp: \u0026compute.RouterBgpArgs{\nAsn: pulumi.Int(64514),\n},\n})\nif err != nil {\nreturn err\n}\ninterfaceRedundant, err := compute.NewRouterInterface(ctx, \"interface_redundant\", \u0026compute.RouterInterfaceArgs{\nName: pulumi.String(\"my-router-intf-red\"),\nRegion: router.Region,\nRouter: router.Name,\nSubnetwork: subnetwork.SelfLink,\nPrivateIpAddress: addrIntfRedundant.Address,\n})\nif err != nil {\nreturn err\n}\ninterface, err := compute.NewRouterInterface(ctx, \"interface\", \u0026compute.RouterInterfaceArgs{\nName: pulumi.String(\"my-router-intf\"),\nRegion: router.Region,\nRouter: router.Name,\nSubnetwork: subnetwork.SelfLink,\nPrivateIpAddress: addrIntf.Address,\nRedundantInterface: interfaceRedundant.Name,\n})\nif err != nil {\nreturn err\n}\n_, err = compute.NewRouterPeer(ctx, \"peer\", \u0026compute.RouterPeerArgs{\nName: pulumi.String(\"my-router-peer\"),\nRouter: router.Name,\nRegion: router.Region,\nInterface: interface.Name,\nRouterApplianceInstance: instance.SelfLink,\nPeerAsn: pulumi.Int(65513),\nPeerIpAddress: addrPeer.Address,\n})\nif err != nil {\nreturn err\n}\nreturn nil\n})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedRouterApplianceInstancesArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.RouterInterface;\nimport com.pulumi.gcp.compute.RouterInterfaceArgs;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-router-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"my-router-sub\")\n .network(network.selfLink())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .build());\n\n var addrIntf = new Address(\"addrIntf\", AddressArgs.builder()\n .name(\"my-router-addr-intf\")\n .region(subnetwork.region())\n .subnetwork(subnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var addrIntfRedundant = new Address(\"addrIntfRedundant\", AddressArgs.builder()\n .name(\"my-router-addr-intf-red\")\n .region(subnetwork.region())\n .subnetwork(subnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var addrPeer = new Address(\"addrPeer\", AddressArgs.builder()\n .name(\"my-router-addr-peer\")\n .region(subnetwork.region())\n .subnetwork(subnetwork.id())\n .addressType(\"INTERNAL\")\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"router-appliance\")\n .zone(\"us-central1-a\")\n .machineType(\"e2-medium\")\n .canIpForward(true)\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .networkIp(addrPeer.address())\n .subnetwork(subnetwork.selfLink())\n .build())\n .build());\n\n var hub = new Hub(\"hub\", HubArgs.builder()\n .name(\"my-router-hub\")\n .build());\n\n var spoke = new Spoke(\"spoke\", SpokeArgs.builder()\n .name(\"my-router-spoke\")\n .location(subnetwork.region())\n .hub(hub.id())\n .linkedRouterApplianceInstances(SpokeLinkedRouterApplianceInstancesArgs.builder()\n .instances(SpokeLinkedRouterApplianceInstancesInstanceArgs.builder()\n .virtualMachine(instance.selfLink())\n .ipAddress(addrPeer.address())\n .build())\n .siteToSiteDataTransfer(false)\n .build())\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router-router\")\n .region(subnetwork.region())\n .network(network.selfLink())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n var interfaceRedundant = new RouterInterface(\"interfaceRedundant\", RouterInterfaceArgs.builder()\n .name(\"my-router-intf-red\")\n .region(router.region())\n .router(router.name())\n .subnetwork(subnetwork.selfLink())\n .privateIpAddress(addrIntfRedundant.address())\n .build());\n\n var interface_ = new RouterInterface(\"interface\", RouterInterfaceArgs.builder()\n .name(\"my-router-intf\")\n .region(router.region())\n .router(router.name())\n .subnetwork(subnetwork.selfLink())\n .privateIpAddress(addrIntf.address())\n .redundantInterface(interfaceRedundant.name())\n .build());\n\n var peer = new RouterPeer(\"peer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(router.name())\n .region(router.region())\n .interface_(interface_.name())\n .routerApplianceInstance(instance.selfLink())\n .peerAsn(65513)\n .peerIpAddress(addrPeer.address())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: my-router-net\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: my-router-sub\n network: ${network.selfLink}\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n addrIntf:\n type: gcp:compute:Address\n name: addr_intf\n properties:\n name: my-router-addr-intf\n region: ${subnetwork.region}\n subnetwork: ${subnetwork.id}\n addressType: INTERNAL\n addrIntfRedundant:\n type: gcp:compute:Address\n name: addr_intf_redundant\n properties:\n name: my-router-addr-intf-red\n region: ${subnetwork.region}\n subnetwork: ${subnetwork.id}\n addressType: INTERNAL\n addrPeer:\n type: gcp:compute:Address\n name: addr_peer\n properties:\n name: my-router-addr-peer\n region: ${subnetwork.region}\n subnetwork: ${subnetwork.id}\n addressType: INTERNAL\n instance:\n type: gcp:compute:Instance\n properties:\n name: router-appliance\n zone: us-central1-a\n machineType: e2-medium\n canIpForward: true\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n networkInterfaces:\n - networkIp: ${addrPeer.address}\n subnetwork: ${subnetwork.selfLink}\n hub:\n type: gcp:networkconnectivity:Hub\n properties:\n name: my-router-hub\n spoke:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: my-router-spoke\n location: ${subnetwork.region}\n hub: ${hub.id}\n linkedRouterApplianceInstances:\n instances:\n - virtualMachine: ${instance.selfLink}\n ipAddress: ${addrPeer.address}\n siteToSiteDataTransfer: false\n router:\n type: gcp:compute:Router\n properties:\n name: my-router-router\n region: ${subnetwork.region}\n network: ${network.selfLink}\n bgp:\n asn: 64514\n interfaceRedundant:\n type: gcp:compute:RouterInterface\n name: interface_redundant\n properties:\n name: my-router-intf-red\n region: ${router.region}\n router: ${router.name}\n subnetwork: ${subnetwork.selfLink}\n privateIpAddress: ${addrIntfRedundant.address}\n interface:\n type: gcp:compute:RouterInterface\n properties:\n name: my-router-intf\n region: ${router.region}\n router: ${router.name}\n subnetwork: ${subnetwork.selfLink}\n privateIpAddress: ${addrIntf.address}\n redundantInterface: ${interfaceRedundant.name}\n peer:\n type: gcp:compute:RouterPeer\n properties:\n name: my-router-peer\n router: ${router.name}\n region: ${router.region}\n interface: ${interface.name}\n routerApplianceInstance: ${instance.selfLink}\n peerAsn: 65513\n peerIpAddress: ${addrPeer.address}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Router Peer Md5 Authentication Key\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst foobar = new gcp.compute.RouterPeer(\"foobar\", {\n name: \"%s-peer\",\n router: foobarGoogleComputeRouter.name,\n region: foobarGoogleComputeRouter.region,\n peerAsn: 65515,\n advertisedRoutePriority: 100,\n \"interface\": foobarGoogleComputeRouterInterface.name,\n peerIpAddress: \"169.254.3.2\",\n md5AuthenticationKey: {\n name: \"%s-peer-key\",\n key: \"%s-peer-key-value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfoobar = gcp.compute.RouterPeer(\"foobar\",\n name=\"%s-peer\",\n router=foobar_google_compute_router[\"name\"],\n region=foobar_google_compute_router[\"region\"],\n peer_asn=65515,\n advertised_route_priority=100,\n interface=foobar_google_compute_router_interface[\"name\"],\n peer_ip_address=\"169.254.3.2\",\n md5_authentication_key={\n \"name\": \"%s-peer-key\",\n \"key\": \"%s-peer-key-value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var foobar = new Gcp.Compute.RouterPeer(\"foobar\", new()\n {\n Name = \"%s-peer\",\n Router = foobarGoogleComputeRouter.Name,\n Region = foobarGoogleComputeRouter.Region,\n PeerAsn = 65515,\n AdvertisedRoutePriority = 100,\n Interface = foobarGoogleComputeRouterInterface.Name,\n PeerIpAddress = \"169.254.3.2\",\n Md5AuthenticationKey = new Gcp.Compute.Inputs.RouterPeerMd5AuthenticationKeyArgs\n {\n Name = \"%s-peer-key\",\n Key = \"%s-peer-key-value\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewRouterPeer(ctx, \"foobar\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"%s-peer\"),\n\t\t\tRouter: pulumi.Any(foobarGoogleComputeRouter.Name),\n\t\t\tRegion: pulumi.Any(foobarGoogleComputeRouter.Region),\n\t\t\tPeerAsn: pulumi.Int(65515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: pulumi.Any(foobarGoogleComputeRouterInterface.Name),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.3.2\"),\n\t\t\tMd5AuthenticationKey: \u0026compute.RouterPeerMd5AuthenticationKeyArgs{\n\t\t\t\tName: pulumi.String(\"%s-peer-key\"),\n\t\t\t\tKey: pulumi.String(\"%s-peer-key-value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport com.pulumi.gcp.compute.inputs.RouterPeerMd5AuthenticationKeyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var foobar = new RouterPeer(\"foobar\", RouterPeerArgs.builder()\n .name(\"%s-peer\")\n .router(foobarGoogleComputeRouter.name())\n .region(foobarGoogleComputeRouter.region())\n .peerAsn(65515)\n .advertisedRoutePriority(100)\n .interface_(foobarGoogleComputeRouterInterface.name())\n .peerIpAddress(\"169.254.3.2\")\n .md5AuthenticationKey(RouterPeerMd5AuthenticationKeyArgs.builder()\n .name(\"%s-peer-key\")\n .key(\"%s-peer-key-value\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n foobar:\n type: gcp:compute:RouterPeer\n properties:\n name: '%s-peer'\n router: ${foobarGoogleComputeRouter.name}\n region: ${foobarGoogleComputeRouter.region}\n peerAsn: 65515\n advertisedRoutePriority: 100\n interface: ${foobarGoogleComputeRouterInterface.name}\n peerIpAddress: 169.254.3.2\n md5AuthenticationKey:\n name: '%s-peer-key'\n key: '%s-peer-key-value'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Router Peer Export And Import Policies\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-router-net\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"my-router-subnet\",\n network: network.selfLink,\n ipCidrRange: \"10.0.0.0/16\",\n region: \"us-central1\",\n});\nconst address = new gcp.compute.Address(\"address\", {\n name: \"my-router\",\n region: subnetwork.region,\n});\nconst vpnGateway = new gcp.compute.HaVpnGateway(\"vpn_gateway\", {\n name: \"my-router-gateway\",\n network: network.selfLink,\n region: subnetwork.region,\n});\nconst externalGateway = new gcp.compute.ExternalVpnGateway(\"external_gateway\", {\n name: \"my-router-external-gateway\",\n redundancyType: \"SINGLE_IP_INTERNALLY_REDUNDANT\",\n description: \"An externally managed VPN gateway\",\n interfaces: [{\n id: 0,\n ipAddress: \"8.8.8.8\",\n }],\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"my-router\",\n region: subnetwork.region,\n network: network.selfLink,\n bgp: {\n asn: 64514,\n },\n});\nconst vpnTunnel = new gcp.compute.VPNTunnel(\"vpn_tunnel\", {\n name: \"my-router\",\n region: subnetwork.region,\n vpnGateway: vpnGateway.id,\n peerExternalGateway: externalGateway.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"unguessable\",\n router: router.name,\n vpnGatewayInterface: 0,\n});\nconst routerInterface = new gcp.compute.RouterInterface(\"router_interface\", {\n name: \"my-router\",\n router: router.name,\n region: router.region,\n vpnTunnel: vpnTunnel.name,\n});\nconst rp_export = new gcp.compute.RouterRoutePolicy(\"rp-export\", {\n name: \"my-router-rp-export\",\n router: router.name,\n region: router.region,\n type: \"ROUTE_POLICY_TYPE_EXPORT\",\n terms: [{\n priority: 2,\n match: {\n expression: \"destination == '10.0.0.0/12'\",\n title: \"export_expression\",\n description: \"acceptance expression for export\",\n },\n actions: [{\n expression: \"accept()\",\n }],\n }],\n}, {\n dependsOn: [routerInterface],\n});\nconst rp_import = new gcp.compute.RouterRoutePolicy(\"rp-import\", {\n name: \"my-router-rp-import\",\n router: router.name,\n region: router.region,\n type: \"ROUTE_POLICY_TYPE_IMPORT\",\n terms: [{\n priority: 1,\n match: {\n expression: \"destination == '10.0.0.0/12'\",\n title: \"import_expression\",\n description: \"acceptance expression for import\",\n },\n actions: [{\n expression: \"accept()\",\n }],\n }],\n}, {\n dependsOn: [\n routerInterface,\n rp_export,\n ],\n});\nconst routerPeer = new gcp.compute.RouterPeer(\"router_peer\", {\n name: \"my-router-peer\",\n router: router.name,\n region: router.region,\n peerAsn: 65515,\n advertisedRoutePriority: 100,\n \"interface\": routerInterface.name,\n md5AuthenticationKey: {\n name: \"my-router-peer-key\",\n key: \"my-router-peer-key-value\",\n },\n importPolicies: [rp_import.name],\n exportPolicies: [rp_export.name],\n}, {\n dependsOn: [\n rp_export,\n rp_import,\n routerInterface,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-router-net\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"my-router-subnet\",\n network=network.self_link,\n ip_cidr_range=\"10.0.0.0/16\",\n region=\"us-central1\")\naddress = gcp.compute.Address(\"address\",\n name=\"my-router\",\n region=subnetwork.region)\nvpn_gateway = gcp.compute.HaVpnGateway(\"vpn_gateway\",\n name=\"my-router-gateway\",\n network=network.self_link,\n region=subnetwork.region)\nexternal_gateway = gcp.compute.ExternalVpnGateway(\"external_gateway\",\n name=\"my-router-external-gateway\",\n redundancy_type=\"SINGLE_IP_INTERNALLY_REDUNDANT\",\n description=\"An externally managed VPN gateway\",\n interfaces=[{\n \"id\": 0,\n \"ip_address\": \"8.8.8.8\",\n }])\nrouter = gcp.compute.Router(\"router\",\n name=\"my-router\",\n region=subnetwork.region,\n network=network.self_link,\n bgp={\n \"asn\": 64514,\n })\nvpn_tunnel = gcp.compute.VPNTunnel(\"vpn_tunnel\",\n name=\"my-router\",\n region=subnetwork.region,\n vpn_gateway=vpn_gateway.id,\n peer_external_gateway=external_gateway.id,\n peer_external_gateway_interface=0,\n shared_secret=\"unguessable\",\n router=router.name,\n vpn_gateway_interface=0)\nrouter_interface = gcp.compute.RouterInterface(\"router_interface\",\n name=\"my-router\",\n router=router.name,\n region=router.region,\n vpn_tunnel=vpn_tunnel.name)\nrp_export = gcp.compute.RouterRoutePolicy(\"rp-export\",\n name=\"my-router-rp-export\",\n router=router.name,\n region=router.region,\n type=\"ROUTE_POLICY_TYPE_EXPORT\",\n terms=[{\n \"priority\": 2,\n \"match\": {\n \"expression\": \"destination == '10.0.0.0/12'\",\n \"title\": \"export_expression\",\n \"description\": \"acceptance expression for export\",\n },\n \"actions\": [{\n \"expression\": \"accept()\",\n }],\n }],\n opts = pulumi.ResourceOptions(depends_on=[router_interface]))\nrp_import = gcp.compute.RouterRoutePolicy(\"rp-import\",\n name=\"my-router-rp-import\",\n router=router.name,\n region=router.region,\n type=\"ROUTE_POLICY_TYPE_IMPORT\",\n terms=[{\n \"priority\": 1,\n \"match\": {\n \"expression\": \"destination == '10.0.0.0/12'\",\n \"title\": \"import_expression\",\n \"description\": \"acceptance expression for import\",\n },\n \"actions\": [{\n \"expression\": \"accept()\",\n }],\n }],\n opts = pulumi.ResourceOptions(depends_on=[\n router_interface,\n rp_export,\n ]))\nrouter_peer = gcp.compute.RouterPeer(\"router_peer\",\n name=\"my-router-peer\",\n router=router.name,\n region=router.region,\n peer_asn=65515,\n advertised_route_priority=100,\n interface=router_interface.name,\n md5_authentication_key={\n \"name\": \"my-router-peer-key\",\n \"key\": \"my-router-peer-key-value\",\n },\n import_policies=[rp_import.name],\n export_policies=[rp_export.name],\n opts = pulumi.ResourceOptions(depends_on=[\n rp_export,\n rp_import,\n router_interface,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-router-net\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"my-router-subnet\",\n Network = network.SelfLink,\n IpCidrRange = \"10.0.0.0/16\",\n Region = \"us-central1\",\n });\n\n var address = new Gcp.Compute.Address(\"address\", new()\n {\n Name = \"my-router\",\n Region = subnetwork.Region,\n });\n\n var vpnGateway = new Gcp.Compute.HaVpnGateway(\"vpn_gateway\", new()\n {\n Name = \"my-router-gateway\",\n Network = network.SelfLink,\n Region = subnetwork.Region,\n });\n\n var externalGateway = new Gcp.Compute.ExternalVpnGateway(\"external_gateway\", new()\n {\n Name = \"my-router-external-gateway\",\n RedundancyType = \"SINGLE_IP_INTERNALLY_REDUNDANT\",\n Description = \"An externally managed VPN gateway\",\n Interfaces = new[]\n {\n new Gcp.Compute.Inputs.ExternalVpnGatewayInterfaceArgs\n {\n Id = 0,\n IpAddress = \"8.8.8.8\",\n },\n },\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"my-router\",\n Region = subnetwork.Region,\n Network = network.SelfLink,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n var vpnTunnel = new Gcp.Compute.VPNTunnel(\"vpn_tunnel\", new()\n {\n Name = \"my-router\",\n Region = subnetwork.Region,\n VpnGateway = vpnGateway.Id,\n PeerExternalGateway = externalGateway.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"unguessable\",\n Router = router.Name,\n VpnGatewayInterface = 0,\n });\n\n var routerInterface = new Gcp.Compute.RouterInterface(\"router_interface\", new()\n {\n Name = \"my-router\",\n Router = router.Name,\n Region = router.Region,\n VpnTunnel = vpnTunnel.Name,\n });\n\n var rp_export = new Gcp.Compute.RouterRoutePolicy(\"rp-export\", new()\n {\n Name = \"my-router-rp-export\",\n Router = router.Name,\n Region = router.Region,\n Type = \"ROUTE_POLICY_TYPE_EXPORT\",\n Terms = new[]\n {\n new Gcp.Compute.Inputs.RouterRoutePolicyTermArgs\n {\n Priority = 2,\n Match = new Gcp.Compute.Inputs.RouterRoutePolicyTermMatchArgs\n {\n Expression = \"destination == '10.0.0.0/12'\",\n Title = \"export_expression\",\n Description = \"acceptance expression for export\",\n },\n Actions = new[]\n {\n new Gcp.Compute.Inputs.RouterRoutePolicyTermActionArgs\n {\n Expression = \"accept()\",\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n routerInterface,\n },\n });\n\n var rp_import = new Gcp.Compute.RouterRoutePolicy(\"rp-import\", new()\n {\n Name = \"my-router-rp-import\",\n Router = router.Name,\n Region = router.Region,\n Type = \"ROUTE_POLICY_TYPE_IMPORT\",\n Terms = new[]\n {\n new Gcp.Compute.Inputs.RouterRoutePolicyTermArgs\n {\n Priority = 1,\n Match = new Gcp.Compute.Inputs.RouterRoutePolicyTermMatchArgs\n {\n Expression = \"destination == '10.0.0.0/12'\",\n Title = \"import_expression\",\n Description = \"acceptance expression for import\",\n },\n Actions = new[]\n {\n new Gcp.Compute.Inputs.RouterRoutePolicyTermActionArgs\n {\n Expression = \"accept()\",\n },\n },\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n routerInterface,\n rp_export,\n },\n });\n\n var routerPeer = new Gcp.Compute.RouterPeer(\"router_peer\", new()\n {\n Name = \"my-router-peer\",\n Router = router.Name,\n Region = router.Region,\n PeerAsn = 65515,\n AdvertisedRoutePriority = 100,\n Interface = routerInterface.Name,\n Md5AuthenticationKey = new Gcp.Compute.Inputs.RouterPeerMd5AuthenticationKeyArgs\n {\n Name = \"my-router-peer-key\",\n Key = \"my-router-peer-key-value\",\n },\n ImportPolicies = new[]\n {\n rp_import.Name,\n },\n ExportPolicies = new[]\n {\n rp_export.Name,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rp_export,\n rp_import,\n routerInterface,\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\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-router-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\tsubnetwork, err := compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-router-subnet\"),\n\t\t\tNetwork: network.SelfLink,\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewAddress(ctx, \"address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnetwork.Region,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpnGateway, err := compute.NewHaVpnGateway(ctx, \"vpn_gateway\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"my-router-gateway\"),\n\t\t\tNetwork: network.SelfLink,\n\t\t\tRegion: subnetwork.Region,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternalGateway, err := compute.NewExternalVpnGateway(ctx, \"external_gateway\", \u0026compute.ExternalVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"my-router-external-gateway\"),\n\t\t\tRedundancyType: pulumi.String(\"SINGLE_IP_INTERNALLY_REDUNDANT\"),\n\t\t\tDescription: pulumi.String(\"An externally managed VPN gateway\"),\n\t\t\tInterfaces: compute.ExternalVpnGatewayInterfaceArray{\n\t\t\t\t\u0026compute.ExternalVpnGatewayInterfaceArgs{\n\t\t\t\t\tId: pulumi.Int(0),\n\t\t\t\t\tIpAddress: pulumi.String(\"8.8.8.8\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnetwork.Region,\n\t\t\tNetwork: network.SelfLink,\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(64514),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tvpnTunnel, err := compute.NewVPNTunnel(ctx, \"vpn_tunnel\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRegion: subnetwork.Region,\n\t\t\tVpnGateway: vpnGateway.ID(),\n\t\t\tPeerExternalGateway: externalGateway.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"unguessable\"),\n\t\t\tRouter: router.Name,\n\t\t\tVpnGatewayInterface: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouterInterface, err := compute.NewRouterInterface(ctx, \"router_interface\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"my-router\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tVpnTunnel: vpnTunnel.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trp_export, err := compute.NewRouterRoutePolicy(ctx, \"rp-export\", \u0026compute.RouterRoutePolicyArgs{\n\t\t\tName: pulumi.String(\"my-router-rp-export\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tType: pulumi.String(\"ROUTE_POLICY_TYPE_EXPORT\"),\n\t\t\tTerms: compute.RouterRoutePolicyTermArray{\n\t\t\t\t\u0026compute.RouterRoutePolicyTermArgs{\n\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\tMatch: \u0026compute.RouterRoutePolicyTermMatchArgs{\n\t\t\t\t\t\tExpression: pulumi.String(\"destination == '10.0.0.0/12'\"),\n\t\t\t\t\t\tTitle: pulumi.String(\"export_expression\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"acceptance expression for export\"),\n\t\t\t\t\t},\n\t\t\t\t\tActions: compute.RouterRoutePolicyTermActionArray{\n\t\t\t\t\t\t\u0026compute.RouterRoutePolicyTermActionArgs{\n\t\t\t\t\t\t\tExpression: pulumi.String(\"accept()\"),\n\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\trouterInterface,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trp_import, err := compute.NewRouterRoutePolicy(ctx, \"rp-import\", \u0026compute.RouterRoutePolicyArgs{\n\t\t\tName: pulumi.String(\"my-router-rp-import\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tType: pulumi.String(\"ROUTE_POLICY_TYPE_IMPORT\"),\n\t\t\tTerms: compute.RouterRoutePolicyTermArray{\n\t\t\t\t\u0026compute.RouterRoutePolicyTermArgs{\n\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\tMatch: \u0026compute.RouterRoutePolicyTermMatchArgs{\n\t\t\t\t\t\tExpression: pulumi.String(\"destination == '10.0.0.0/12'\"),\n\t\t\t\t\t\tTitle: pulumi.String(\"import_expression\"),\n\t\t\t\t\t\tDescription: pulumi.String(\"acceptance expression for import\"),\n\t\t\t\t\t},\n\t\t\t\t\tActions: compute.RouterRoutePolicyTermActionArray{\n\t\t\t\t\t\t\u0026compute.RouterRoutePolicyTermActionArgs{\n\t\t\t\t\t\t\tExpression: pulumi.String(\"accept()\"),\n\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\trouterInterface,\n\t\t\trp_export,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterPeer(ctx, \"router_peer\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"my-router-peer\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: router.Region,\n\t\t\tPeerAsn: pulumi.Int(65515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: routerInterface.Name,\n\t\t\tMd5AuthenticationKey: \u0026compute.RouterPeerMd5AuthenticationKeyArgs{\n\t\t\t\tName: pulumi.String(\"my-router-peer-key\"),\n\t\t\t\tKey: pulumi.String(\"my-router-peer-key-value\"),\n\t\t\t},\n\t\t\tImportPolicies: pulumi.StringArray{\n\t\t\t\trp_import.Name,\n\t\t\t},\n\t\t\tExportPolicies: pulumi.StringArray{\n\t\t\t\trp_export.Name,\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trp_export,\n\t\t\trp_import,\n\t\t\trouterInterface,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.HaVpnGateway;\nimport com.pulumi.gcp.compute.HaVpnGatewayArgs;\nimport com.pulumi.gcp.compute.ExternalVpnGateway;\nimport com.pulumi.gcp.compute.ExternalVpnGatewayArgs;\nimport com.pulumi.gcp.compute.inputs.ExternalVpnGatewayInterfaceArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.VPNTunnel;\nimport com.pulumi.gcp.compute.VPNTunnelArgs;\nimport com.pulumi.gcp.compute.RouterInterface;\nimport com.pulumi.gcp.compute.RouterInterfaceArgs;\nimport com.pulumi.gcp.compute.RouterRoutePolicy;\nimport com.pulumi.gcp.compute.RouterRoutePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.RouterRoutePolicyTermArgs;\nimport com.pulumi.gcp.compute.inputs.RouterRoutePolicyTermMatchArgs;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport com.pulumi.gcp.compute.inputs.RouterPeerMd5AuthenticationKeyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-router-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"my-router-subnet\")\n .network(network.selfLink())\n .ipCidrRange(\"10.0.0.0/16\")\n .region(\"us-central1\")\n .build());\n\n var address = new Address(\"address\", AddressArgs.builder()\n .name(\"my-router\")\n .region(subnetwork.region())\n .build());\n\n var vpnGateway = new HaVpnGateway(\"vpnGateway\", HaVpnGatewayArgs.builder()\n .name(\"my-router-gateway\")\n .network(network.selfLink())\n .region(subnetwork.region())\n .build());\n\n var externalGateway = new ExternalVpnGateway(\"externalGateway\", ExternalVpnGatewayArgs.builder()\n .name(\"my-router-external-gateway\")\n .redundancyType(\"SINGLE_IP_INTERNALLY_REDUNDANT\")\n .description(\"An externally managed VPN gateway\")\n .interfaces(ExternalVpnGatewayInterfaceArgs.builder()\n .id(0)\n .ipAddress(\"8.8.8.8\")\n .build())\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"my-router\")\n .region(subnetwork.region())\n .network(network.selfLink())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n var vpnTunnel = new VPNTunnel(\"vpnTunnel\", VPNTunnelArgs.builder()\n .name(\"my-router\")\n .region(subnetwork.region())\n .vpnGateway(vpnGateway.id())\n .peerExternalGateway(externalGateway.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"unguessable\")\n .router(router.name())\n .vpnGatewayInterface(0)\n .build());\n\n var routerInterface = new RouterInterface(\"routerInterface\", RouterInterfaceArgs.builder()\n .name(\"my-router\")\n .router(router.name())\n .region(router.region())\n .vpnTunnel(vpnTunnel.name())\n .build());\n\n var rp_export = new RouterRoutePolicy(\"rp-export\", RouterRoutePolicyArgs.builder()\n .name(\"my-router-rp-export\")\n .router(router.name())\n .region(router.region())\n .type(\"ROUTE_POLICY_TYPE_EXPORT\")\n .terms(RouterRoutePolicyTermArgs.builder()\n .priority(2)\n .match(RouterRoutePolicyTermMatchArgs.builder()\n .expression(\"destination == '10.0.0.0/12'\")\n .title(\"export_expression\")\n .description(\"acceptance expression for export\")\n .build())\n .actions(RouterRoutePolicyTermActionArgs.builder()\n .expression(\"accept()\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(routerInterface)\n .build());\n\n var rp_import = new RouterRoutePolicy(\"rp-import\", RouterRoutePolicyArgs.builder()\n .name(\"my-router-rp-import\")\n .router(router.name())\n .region(router.region())\n .type(\"ROUTE_POLICY_TYPE_IMPORT\")\n .terms(RouterRoutePolicyTermArgs.builder()\n .priority(1)\n .match(RouterRoutePolicyTermMatchArgs.builder()\n .expression(\"destination == '10.0.0.0/12'\")\n .title(\"import_expression\")\n .description(\"acceptance expression for import\")\n .build())\n .actions(RouterRoutePolicyTermActionArgs.builder()\n .expression(\"accept()\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n routerInterface,\n rp_export)\n .build());\n\n var routerPeer = new RouterPeer(\"routerPeer\", RouterPeerArgs.builder()\n .name(\"my-router-peer\")\n .router(router.name())\n .region(router.region())\n .peerAsn(65515)\n .advertisedRoutePriority(100)\n .interface_(routerInterface.name())\n .md5AuthenticationKey(RouterPeerMd5AuthenticationKeyArgs.builder()\n .name(\"my-router-peer-key\")\n .key(\"my-router-peer-key-value\")\n .build())\n .importPolicies(rp_import.name())\n .exportPolicies(rp_export.name())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rp_export,\n rp_import,\n routerInterface)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: my-router-net\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: my-router-subnet\n network: ${network.selfLink}\n ipCidrRange: 10.0.0.0/16\n region: us-central1\n address:\n type: gcp:compute:Address\n properties:\n name: my-router\n region: ${subnetwork.region}\n vpnGateway:\n type: gcp:compute:HaVpnGateway\n name: vpn_gateway\n properties:\n name: my-router-gateway\n network: ${network.selfLink}\n region: ${subnetwork.region}\n externalGateway:\n type: gcp:compute:ExternalVpnGateway\n name: external_gateway\n properties:\n name: my-router-external-gateway\n redundancyType: SINGLE_IP_INTERNALLY_REDUNDANT\n description: An externally managed VPN gateway\n interfaces:\n - id: 0\n ipAddress: 8.8.8.8\n router:\n type: gcp:compute:Router\n properties:\n name: my-router\n region: ${subnetwork.region}\n network: ${network.selfLink}\n bgp:\n asn: 64514\n vpnTunnel:\n type: gcp:compute:VPNTunnel\n name: vpn_tunnel\n properties:\n name: my-router\n region: ${subnetwork.region}\n vpnGateway: ${vpnGateway.id}\n peerExternalGateway: ${externalGateway.id}\n peerExternalGatewayInterface: 0\n sharedSecret: unguessable\n router: ${router.name}\n vpnGatewayInterface: 0\n routerInterface:\n type: gcp:compute:RouterInterface\n name: router_interface\n properties:\n name: my-router\n router: ${router.name}\n region: ${router.region}\n vpnTunnel: ${vpnTunnel.name}\n rp-export:\n type: gcp:compute:RouterRoutePolicy\n properties:\n name: my-router-rp-export\n router: ${router.name}\n region: ${router.region}\n type: ROUTE_POLICY_TYPE_EXPORT\n terms:\n - priority: 2\n match:\n expression: destination == '10.0.0.0/12'\n title: export_expression\n description: acceptance expression for export\n actions:\n - expression: accept()\n options:\n dependsOn:\n - ${routerInterface}\n rp-import:\n type: gcp:compute:RouterRoutePolicy\n properties:\n name: my-router-rp-import\n router: ${router.name}\n region: ${router.region}\n type: ROUTE_POLICY_TYPE_IMPORT\n terms:\n - priority: 1\n match:\n expression: destination == '10.0.0.0/12'\n title: import_expression\n description: acceptance expression for import\n actions:\n - expression: accept()\n options:\n dependsOn:\n - ${routerInterface}\n - ${[\"rp-export\"]}\n routerPeer:\n type: gcp:compute:RouterPeer\n name: router_peer\n properties:\n name: my-router-peer\n router: ${router.name}\n region: ${router.region}\n peerAsn: 65515\n advertisedRoutePriority: 100\n interface: ${routerInterface.name}\n md5AuthenticationKey:\n name: my-router-peer-key\n key: my-router-peer-key-value\n importPolicies:\n - ${[\"rp-import\"].name}\n exportPolicies:\n - ${[\"rp-export\"].name}\n options:\n dependsOn:\n - ${[\"rp-export\"]}\n - ${[\"rp-import\"]}\n - ${routerInterface}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRouterBgpPeer can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}`\n\n* `{{project}}/{{region}}/{{router}}/{{name}}`\n\n* `{{region}}/{{router}}/{{name}}`\n\n* `{{router}}/{{name}}`\n\nWhen using the `pulumi import` command, RouterBgpPeer can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default projects/{{project}}/regions/{{region}}/routers/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default {{project}}/{{region}}/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default {{region}}/{{router}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/routerPeer:RouterPeer default {{router}}/{{name}}\n```\n\n", "properties": { "advertiseMode": { "type": "string", @@ -190179,7 +190179,7 @@ } }, "gcp:compute/securityPolicyRule:SecurityPolicyRule": { - "description": "A rule for the SecurityPolicy.\n\n\nTo get more information about SecurityPolicyRule, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/securityPolicies/addRule)\n* How-to Guides\n * [Creating global security policy rules](https://cloud.google.com/armor/docs/configure-security-policies)\n\n## Example Usage\n\n### Security Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.SecurityPolicy(\"default\", {\n name: \"policyruletest\",\n description: \"basic global security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRule = new gcp.compute.SecurityPolicyRule(\"policy_rule\", {\n securityPolicy: _default.name,\n description: \"new rule\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.SecurityPolicy(\"default\",\n name=\"policyruletest\",\n description=\"basic global security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule = gcp.compute.SecurityPolicyRule(\"policy_rule\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.SecurityPolicy(\"default\", new()\n {\n Name = \"policyruletest\",\n Description = \"basic global security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRule = new Gcp.Compute.SecurityPolicyRule(\"policy_rule\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewSecurityPolicy(ctx, \"default\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic global security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.SecurityPolicyRuleArgs{\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.SecurityPolicyRule;\nimport com.pulumi.gcp.compute.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new SecurityPolicy(\"default\", SecurityPolicyArgs.builder()\n .name(\"policyruletest\")\n .description(\"basic global security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRule = new SecurityPolicyRule(\"policyRule\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:SecurityPolicy\n properties:\n name: policyruletest\n description: basic global security policy\n type: CLOUD_ARMOR\n policyRule:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule\n properties:\n securityPolicy: ${default.name}\n description: new rule\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Security Policy Rule Default Rule\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.SecurityPolicy(\"default\", {\n name: \"policyruletest\",\n description: \"basic global security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst defaultRule = new gcp.compute.SecurityPolicyRule(\"default_rule\", {\n securityPolicy: _default.name,\n description: \"default rule\",\n action: \"deny\",\n priority: 2147483647,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"*\"],\n },\n },\n});\nconst policyRule = new gcp.compute.SecurityPolicyRule(\"policy_rule\", {\n securityPolicy: _default.name,\n description: \"new rule\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.SecurityPolicy(\"default\",\n name=\"policyruletest\",\n description=\"basic global security policy\",\n type=\"CLOUD_ARMOR\")\ndefault_rule = gcp.compute.SecurityPolicyRule(\"default_rule\",\n security_policy=default.name,\n description=\"default rule\",\n action=\"deny\",\n priority=2147483647,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"*\"],\n },\n })\npolicy_rule = gcp.compute.SecurityPolicyRule(\"policy_rule\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.SecurityPolicy(\"default\", new()\n {\n Name = \"policyruletest\",\n Description = \"basic global security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var defaultRule = new Gcp.Compute.SecurityPolicyRule(\"default_rule\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"default rule\",\n Action = \"deny\",\n Priority = 2147483647,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var policyRule = new Gcp.Compute.SecurityPolicyRule(\"policy_rule\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewSecurityPolicy(ctx, \"default\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic global security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"default_rule\", \u0026compute.SecurityPolicyRuleArgs{\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"default rule\"),\n\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\tPriority: pulumi.Int(2147483647),\n\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.SecurityPolicyRuleArgs{\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.SecurityPolicyRule;\nimport com.pulumi.gcp.compute.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new SecurityPolicy(\"default\", SecurityPolicyArgs.builder()\n .name(\"policyruletest\")\n .description(\"basic global security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var defaultRule = new SecurityPolicyRule(\"defaultRule\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"default rule\")\n .action(\"deny\")\n .priority(\"2147483647\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"*\")\n .build())\n .build())\n .build());\n\n var policyRule = new SecurityPolicyRule(\"policyRule\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:SecurityPolicy\n properties:\n name: policyruletest\n description: basic global security policy\n type: CLOUD_ARMOR\n defaultRule:\n type: gcp:compute:SecurityPolicyRule\n name: default_rule\n properties:\n securityPolicy: ${default.name}\n description: default rule\n action: deny\n priority: '2147483647'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - '*'\n policyRule:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule\n properties:\n securityPolicy: ${default.name}\n description: new rule\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Security Policy Rule Multiple Rules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.SecurityPolicy(\"default\", {\n name: \"policywithmultiplerules\",\n description: \"basic global security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRuleOne = new gcp.compute.SecurityPolicyRule(\"policy_rule_one\", {\n securityPolicy: _default.name,\n description: \"new rule one\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n});\nconst policyRuleTwo = new gcp.compute.SecurityPolicyRule(\"policy_rule_two\", {\n securityPolicy: _default.name,\n description: \"new rule two\",\n priority: 101,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n },\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.SecurityPolicy(\"default\",\n name=\"policywithmultiplerules\",\n description=\"basic global security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule_one = gcp.compute.SecurityPolicyRule(\"policy_rule_one\",\n security_policy=default.name,\n description=\"new rule one\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\npolicy_rule_two = gcp.compute.SecurityPolicyRule(\"policy_rule_two\",\n security_policy=default.name,\n description=\"new rule two\",\n priority=101,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n },\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.SecurityPolicy(\"default\", new()\n {\n Name = \"policywithmultiplerules\",\n Description = \"basic global security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRuleOne = new Gcp.Compute.SecurityPolicyRule(\"policy_rule_one\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule one\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n var policyRuleTwo = new Gcp.Compute.SecurityPolicyRule(\"policy_rule_two\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule two\",\n Priority = 101,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewSecurityPolicy(ctx, \"default\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"policywithmultiplerules\"),\n\t\t\tDescription: pulumi.String(\"basic global security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule_one\", \u0026compute.SecurityPolicyRuleArgs{\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule one\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule_two\", \u0026compute.SecurityPolicyRuleArgs{\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule two\"),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.SecurityPolicyRule;\nimport com.pulumi.gcp.compute.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new SecurityPolicy(\"default\", SecurityPolicyArgs.builder()\n .name(\"policywithmultiplerules\")\n .description(\"basic global security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRuleOne = new SecurityPolicyRule(\"policyRuleOne\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule one\")\n .priority(100)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n var policyRuleTwo = new SecurityPolicyRule(\"policyRuleTwo\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule two\")\n .priority(101)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges( \n \"192.168.0.0/16\",\n \"10.0.0.0/8\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:SecurityPolicy\n properties:\n name: policywithmultiplerules\n description: basic global security policy\n type: CLOUD_ARMOR\n policyRuleOne:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule_one\n properties:\n securityPolicy: ${default.name}\n description: new rule one\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n policyRuleTwo:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule_two\n properties:\n securityPolicy: ${default.name}\n description: new rule two\n priority: 101\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 192.168.0.0/16\n - 10.0.0.0/8\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurityPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/securityPolicies/{{security_policy}}/priority/{{priority}}`\n\n* `{{project}}/{{security_policy}}/{{priority}}`\n\n* `{{security_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, SecurityPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/securityPolicyRule:SecurityPolicyRule default projects/{{project}}/global/securityPolicies/{{security_policy}}/priority/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/securityPolicyRule:SecurityPolicyRule default {{project}}/{{security_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/securityPolicyRule:SecurityPolicyRule default {{security_policy}}/{{priority}}\n```\n\n", + "description": "A rule for the SecurityPolicy.\n\n\nTo get more information about SecurityPolicyRule, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/securityPolicies/addRule)\n* How-to Guides\n * [Creating global security policy rules](https://cloud.google.com/armor/docs/configure-security-policies)\n\n## Example Usage\n\n### Security Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.SecurityPolicy(\"default\", {\n name: \"policyruletest\",\n description: \"basic global security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRule = new gcp.compute.SecurityPolicyRule(\"policy_rule\", {\n securityPolicy: _default.name,\n description: \"new rule\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.SecurityPolicy(\"default\",\n name=\"policyruletest\",\n description=\"basic global security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule = gcp.compute.SecurityPolicyRule(\"policy_rule\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.SecurityPolicy(\"default\", new()\n {\n Name = \"policyruletest\",\n Description = \"basic global security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRule = new Gcp.Compute.SecurityPolicyRule(\"policy_rule\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewSecurityPolicy(ctx, \"default\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic global security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.SecurityPolicyRuleArgs{\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.SecurityPolicyRule;\nimport com.pulumi.gcp.compute.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new SecurityPolicy(\"default\", SecurityPolicyArgs.builder()\n .name(\"policyruletest\")\n .description(\"basic global security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRule = new SecurityPolicyRule(\"policyRule\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:SecurityPolicy\n properties:\n name: policyruletest\n description: basic global security policy\n type: CLOUD_ARMOR\n policyRule:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule\n properties:\n securityPolicy: ${default.name}\n description: new rule\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Security Policy Rule Default Rule\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.SecurityPolicy(\"default\", {\n name: \"policyruletest\",\n description: \"basic global security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst defaultRule = new gcp.compute.SecurityPolicyRule(\"default_rule\", {\n securityPolicy: _default.name,\n description: \"default rule\",\n action: \"deny\",\n priority: 2147483647,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"*\"],\n },\n },\n});\nconst policyRule = new gcp.compute.SecurityPolicyRule(\"policy_rule\", {\n securityPolicy: _default.name,\n description: \"new rule\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.SecurityPolicy(\"default\",\n name=\"policyruletest\",\n description=\"basic global security policy\",\n type=\"CLOUD_ARMOR\")\ndefault_rule = gcp.compute.SecurityPolicyRule(\"default_rule\",\n security_policy=default.name,\n description=\"default rule\",\n action=\"deny\",\n priority=2147483647,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"*\"],\n },\n })\npolicy_rule = gcp.compute.SecurityPolicyRule(\"policy_rule\",\n security_policy=default.name,\n description=\"new rule\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.SecurityPolicy(\"default\", new()\n {\n Name = \"policyruletest\",\n Description = \"basic global security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var defaultRule = new Gcp.Compute.SecurityPolicyRule(\"default_rule\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"default rule\",\n Action = \"deny\",\n Priority = 2147483647,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"*\",\n },\n },\n },\n });\n\n var policyRule = new Gcp.Compute.SecurityPolicyRule(\"policy_rule\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewSecurityPolicy(ctx, \"default\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"policyruletest\"),\n\t\t\tDescription: pulumi.String(\"basic global security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"default_rule\", \u0026compute.SecurityPolicyRuleArgs{\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"default rule\"),\n\t\t\tAction: pulumi.String(\"deny\"),\n\t\t\tPriority: pulumi.Int(2147483647),\n\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule\", \u0026compute.SecurityPolicyRuleArgs{\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.SecurityPolicyRule;\nimport com.pulumi.gcp.compute.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new SecurityPolicy(\"default\", SecurityPolicyArgs.builder()\n .name(\"policyruletest\")\n .description(\"basic global security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var defaultRule = new SecurityPolicyRule(\"defaultRule\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"default rule\")\n .action(\"deny\")\n .priority(\"2147483647\")\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"*\")\n .build())\n .build())\n .build());\n\n var policyRule = new SecurityPolicyRule(\"policyRule\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule\")\n .priority(100)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:SecurityPolicy\n properties:\n name: policyruletest\n description: basic global security policy\n type: CLOUD_ARMOR\n defaultRule:\n type: gcp:compute:SecurityPolicyRule\n name: default_rule\n properties:\n securityPolicy: ${default.name}\n description: default rule\n action: deny\n priority: '2147483647'\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - '*'\n policyRule:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule\n properties:\n securityPolicy: ${default.name}\n description: new rule\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Security Policy Rule Multiple Rules\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.SecurityPolicy(\"default\", {\n name: \"policywithmultiplerules\",\n description: \"basic global security policy\",\n type: \"CLOUD_ARMOR\",\n});\nconst policyRuleOne = new gcp.compute.SecurityPolicyRule(\"policy_rule_one\", {\n securityPolicy: _default.name,\n description: \"new rule one\",\n priority: 100,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\"10.10.0.0/16\"],\n },\n },\n action: \"allow\",\n preview: true,\n});\nconst policyRuleTwo = new gcp.compute.SecurityPolicyRule(\"policy_rule_two\", {\n securityPolicy: _default.name,\n description: \"new rule two\",\n priority: 101,\n match: {\n versionedExpr: \"SRC_IPS_V1\",\n config: {\n srcIpRanges: [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n },\n },\n action: \"allow\",\n preview: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.SecurityPolicy(\"default\",\n name=\"policywithmultiplerules\",\n description=\"basic global security policy\",\n type=\"CLOUD_ARMOR\")\npolicy_rule_one = gcp.compute.SecurityPolicyRule(\"policy_rule_one\",\n security_policy=default.name,\n description=\"new rule one\",\n priority=100,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\"10.10.0.0/16\"],\n },\n },\n action=\"allow\",\n preview=True)\npolicy_rule_two = gcp.compute.SecurityPolicyRule(\"policy_rule_two\",\n security_policy=default.name,\n description=\"new rule two\",\n priority=101,\n match={\n \"versioned_expr\": \"SRC_IPS_V1\",\n \"config\": {\n \"src_ip_ranges\": [\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n ],\n },\n },\n action=\"allow\",\n preview=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.SecurityPolicy(\"default\", new()\n {\n Name = \"policywithmultiplerules\",\n Description = \"basic global security policy\",\n Type = \"CLOUD_ARMOR\",\n });\n\n var policyRuleOne = new Gcp.Compute.SecurityPolicyRule(\"policy_rule_one\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule one\",\n Priority = 100,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"10.10.0.0/16\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n var policyRuleTwo = new Gcp.Compute.SecurityPolicyRule(\"policy_rule_two\", new()\n {\n SecurityPolicy = @default.Name,\n Description = \"new rule two\",\n Priority = 101,\n Match = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchArgs\n {\n VersionedExpr = \"SRC_IPS_V1\",\n Config = new Gcp.Compute.Inputs.SecurityPolicyRuleMatchConfigArgs\n {\n SrcIpRanges = new[]\n {\n \"192.168.0.0/16\",\n \"10.0.0.0/8\",\n },\n },\n },\n Action = \"allow\",\n Preview = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewSecurityPolicy(ctx, \"default\", \u0026compute.SecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"policywithmultiplerules\"),\n\t\t\tDescription: pulumi.String(\"basic global security policy\"),\n\t\t\tType: pulumi.String(\"CLOUD_ARMOR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule_one\", \u0026compute.SecurityPolicyRuleArgs{\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule one\"),\n\t\t\tPriority: pulumi.Int(100),\n\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSecurityPolicyRule(ctx, \"policy_rule_two\", \u0026compute.SecurityPolicyRuleArgs{\n\t\t\tSecurityPolicy: _default.Name,\n\t\t\tDescription: pulumi.String(\"new rule two\"),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tMatch: \u0026compute.SecurityPolicyRuleMatchArgs{\n\t\t\t\tVersionedExpr: pulumi.String(\"SRC_IPS_V1\"),\n\t\t\t\tConfig: \u0026compute.SecurityPolicyRuleMatchConfigArgs{\n\t\t\t\t\tSrcIpRanges: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"192.168.0.0/16\"),\n\t\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tAction: pulumi.String(\"allow\"),\n\t\t\tPreview: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.SecurityPolicy;\nimport com.pulumi.gcp.compute.SecurityPolicyArgs;\nimport com.pulumi.gcp.compute.SecurityPolicyRule;\nimport com.pulumi.gcp.compute.SecurityPolicyRuleArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchArgs;\nimport com.pulumi.gcp.compute.inputs.SecurityPolicyRuleMatchConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new SecurityPolicy(\"default\", SecurityPolicyArgs.builder()\n .name(\"policywithmultiplerules\")\n .description(\"basic global security policy\")\n .type(\"CLOUD_ARMOR\")\n .build());\n\n var policyRuleOne = new SecurityPolicyRule(\"policyRuleOne\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule one\")\n .priority(100)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges(\"10.10.0.0/16\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n var policyRuleTwo = new SecurityPolicyRule(\"policyRuleTwo\", SecurityPolicyRuleArgs.builder()\n .securityPolicy(default_.name())\n .description(\"new rule two\")\n .priority(101)\n .match(SecurityPolicyRuleMatchArgs.builder()\n .versionedExpr(\"SRC_IPS_V1\")\n .config(SecurityPolicyRuleMatchConfigArgs.builder()\n .srcIpRanges( \n \"192.168.0.0/16\",\n \"10.0.0.0/8\")\n .build())\n .build())\n .action(\"allow\")\n .preview(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:SecurityPolicy\n properties:\n name: policywithmultiplerules\n description: basic global security policy\n type: CLOUD_ARMOR\n policyRuleOne:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule_one\n properties:\n securityPolicy: ${default.name}\n description: new rule one\n priority: 100\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 10.10.0.0/16\n action: allow\n preview: true\n policyRuleTwo:\n type: gcp:compute:SecurityPolicyRule\n name: policy_rule_two\n properties:\n securityPolicy: ${default.name}\n description: new rule two\n priority: 101\n match:\n versionedExpr: SRC_IPS_V1\n config:\n srcIpRanges:\n - 192.168.0.0/16\n - 10.0.0.0/8\n action: allow\n preview: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurityPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/securityPolicies/{{security_policy}}/priority/{{priority}}`\n\n* `{{project}}/{{security_policy}}/{{priority}}`\n\n* `{{security_policy}}/{{priority}}`\n\nWhen using the `pulumi import` command, SecurityPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/securityPolicyRule:SecurityPolicyRule default projects/{{project}}/global/securityPolicies/{{security_policy}}/priority/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/securityPolicyRule:SecurityPolicyRule default {{project}}/{{security_policy}}/{{priority}}\n```\n\n```sh\n$ pulumi import gcp:compute/securityPolicyRule:SecurityPolicyRule default {{security_policy}}/{{priority}}\n```\n\n", "properties": { "action": { "type": "string", @@ -191437,7 +191437,7 @@ } }, "gcp:compute/subnetwork:Subnetwork": { - "description": "A VPC network is a virtual version of the traditional physical networks\nthat exist within and between physical data centers. A VPC network\nprovides connectivity for your Compute Engine virtual machine (VM)\ninstances, Container Engine containers, App Engine Flex services, and\nother network-related resources.\n\nEach GCP project contains one or more VPC networks. Each VPC network is a\nglobal entity spanning all GCP regions. This global VPC network allows VM\ninstances and other resources to communicate with each other via internal,\nprivate IP addresses.\n\nEach VPC network is subdivided into subnets, and each subnet is contained\nwithin a single region. You can have more than one subnet in a region for\na given VPC network. Each subnet has a contiguous private RFC1918 IP\nspace. You create instances, containers, and the like in these subnets.\nWhen you create an instance, you must create it in a subnet, and the\ninstance draws its internal IP address from that subnet.\n\nVirtual machine (VM) instances in a VPC network can communicate with\ninstances in all other subnets of the same VPC network, regardless of\nregion, using their RFC1918 private IP addresses. You can isolate portions\nof the network, even entire subnets, using firewall rules.\n\n\nTo get more information about Subnetwork, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks)\n* How-to Guides\n * [Cloud Networking](https://cloud.google.com/vpc/docs/using-vpc)\n * [Private Google Access](https://cloud.google.com/vpc/docs/configure-private-google-access)\n\n## Example Usage\n\n### Subnetwork Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n name: \"test-network\",\n autoCreateSubnetworks: false,\n});\nconst network_with_private_secondary_ip_ranges = new gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", {\n name: \"test-subnetwork\",\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: custom_test.id,\n secondaryIpRanges: [{\n rangeName: \"tf-test-secondary-range-update1\",\n ipCidrRange: \"192.168.10.0/24\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"test-network\",\n auto_create_subnetworks=False)\nnetwork_with_private_secondary_ip_ranges = gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\",\n name=\"test-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n secondary_ip_ranges=[{\n \"range_name\": \"tf-test-secondary-range-update1\",\n \"ip_cidr_range\": \"192.168.10.0/24\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n Name = \"test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var network_with_private_secondary_ip_ranges = new Gcp.Compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", new()\n {\n Name = \"test-subnetwork\",\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = custom_test.Id,\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"tf-test-secondary-range-update1\",\n IpCidrRange = \"192.168.10.0/24\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"network-with-private-secondary-ip-ranges\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"test-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"tf-test-secondary-range-update1\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"192.168.10.0/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder()\n .name(\"test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_with_private_secondary_ip_ranges = new Subnetwork(\"network-with-private-secondary-ip-ranges\", SubnetworkArgs.builder()\n .name(\"test-subnetwork\")\n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(custom_test.id())\n .secondaryIpRanges(SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"tf-test-secondary-range-update1\")\n .ipCidrRange(\"192.168.10.0/24\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-with-private-secondary-ip-ranges:\n type: gcp:compute:Subnetwork\n properties:\n name: test-subnetwork\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${[\"custom-test\"].id}\n secondaryIpRanges:\n - rangeName: tf-test-secondary-range-update1\n ipCidrRange: 192.168.10.0/24\n custom-test:\n type: gcp:compute:Network\n properties:\n name: test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Logging Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n name: \"log-test-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet_with_logging = new gcp.compute.Subnetwork(\"subnet-with-logging\", {\n name: \"log-test-subnetwork\",\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: custom_test.id,\n logConfig: {\n aggregationInterval: \"INTERVAL_10_MIN\",\n flowSampling: 0.5,\n metadata: \"INCLUDE_ALL_METADATA\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"log-test-network\",\n auto_create_subnetworks=False)\nsubnet_with_logging = gcp.compute.Subnetwork(\"subnet-with-logging\",\n name=\"log-test-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n log_config={\n \"aggregation_interval\": \"INTERVAL_10_MIN\",\n \"flow_sampling\": 0.5,\n \"metadata\": \"INCLUDE_ALL_METADATA\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n Name = \"log-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet_with_logging = new Gcp.Compute.Subnetwork(\"subnet-with-logging\", new()\n {\n Name = \"log-test-subnetwork\",\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = custom_test.Id,\n LogConfig = new Gcp.Compute.Inputs.SubnetworkLogConfigArgs\n {\n AggregationInterval = \"INTERVAL_10_MIN\",\n FlowSampling = 0.5,\n Metadata = \"INCLUDE_ALL_METADATA\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"log-test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnet-with-logging\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"log-test-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t\tLogConfig: \u0026compute.SubnetworkLogConfigArgs{\n\t\t\t\tAggregationInterval: pulumi.String(\"INTERVAL_10_MIN\"),\n\t\t\t\tFlowSampling: pulumi.Float64(0.5),\n\t\t\t\tMetadata: pulumi.String(\"INCLUDE_ALL_METADATA\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkLogConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder()\n .name(\"log-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet_with_logging = new Subnetwork(\"subnet-with-logging\", SubnetworkArgs.builder()\n .name(\"log-test-subnetwork\")\n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(custom_test.id())\n .logConfig(SubnetworkLogConfigArgs.builder()\n .aggregationInterval(\"INTERVAL_10_MIN\")\n .flowSampling(0.5)\n .metadata(\"INCLUDE_ALL_METADATA\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnet-with-logging:\n type: gcp:compute:Subnetwork\n properties:\n name: log-test-subnetwork\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${[\"custom-test\"].id}\n logConfig:\n aggregationInterval: INTERVAL_10_MIN\n flowSampling: 0.5\n metadata: INCLUDE_ALL_METADATA\n custom-test:\n type: gcp:compute:Network\n properties:\n name: log-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Internal L7lb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n name: \"l7lb-test-network\",\n autoCreateSubnetworks: false,\n});\nconst network_for_l7lb = new gcp.compute.Subnetwork(\"network-for-l7lb\", {\n name: \"l7lb-test-subnetwork\",\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-central1\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"l7lb-test-network\",\n auto_create_subnetworks=False)\nnetwork_for_l7lb = gcp.compute.Subnetwork(\"network-for-l7lb\",\n name=\"l7lb-test-subnetwork\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-central1\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\",\n network=custom_test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n Name = \"l7lb-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var network_for_l7lb = new Gcp.Compute.Subnetwork(\"network-for-l7lb\", new()\n {\n Name = \"l7lb-test-subnetwork\",\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-central1\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"l7lb-test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"network-for-l7lb\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"l7lb-test-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder()\n .name(\"l7lb-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_for_l7lb = new Subnetwork(\"network-for-l7lb\", SubnetworkArgs.builder()\n .name(\"l7lb-test-subnetwork\")\n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-central1\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .role(\"ACTIVE\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-for-l7lb:\n type: gcp:compute:Subnetwork\n properties:\n name: l7lb-test-subnetwork\n ipCidrRange: 10.0.0.0/22\n region: us-central1\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n name: l7lb-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Ipv6\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n name: \"ipv6-test-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-ipv6\", {\n name: \"ipv6-test-subnetwork\",\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-west2\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"EXTERNAL\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"ipv6-test-network\",\n auto_create_subnetworks=False)\nsubnetwork_ipv6 = gcp.compute.Subnetwork(\"subnetwork-ipv6\",\n name=\"ipv6-test-subnetwork\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-west2\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"EXTERNAL\",\n network=custom_test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n Name = \"ipv6-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-ipv6\", new()\n {\n Name = \"ipv6-test-subnetwork\",\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-west2\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"EXTERNAL\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"ipv6-test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-ipv6\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"ipv6-test-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"EXTERNAL\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder()\n .name(\"ipv6-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_ipv6 = new Subnetwork(\"subnetwork-ipv6\", SubnetworkArgs.builder()\n .name(\"ipv6-test-subnetwork\")\n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-west2\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"EXTERNAL\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-ipv6:\n type: gcp:compute:Subnetwork\n properties:\n name: ipv6-test-subnetwork\n ipCidrRange: 10.0.0.0/22\n region: us-west2\n stackType: IPV4_IPV6\n ipv6AccessType: EXTERNAL\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n name: ipv6-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Internal Ipv6\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n name: \"internal-ipv6-test-network\",\n autoCreateSubnetworks: false,\n enableUlaInternalIpv6: true,\n});\nconst subnetwork_internal_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\", {\n name: \"internal-ipv6-test-subnetwork\",\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-west2\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"INTERNAL\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"internal-ipv6-test-network\",\n auto_create_subnetworks=False,\n enable_ula_internal_ipv6=True)\nsubnetwork_internal_ipv6 = gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\",\n name=\"internal-ipv6-test-subnetwork\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-west2\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"INTERNAL\",\n network=custom_test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n Name = \"internal-ipv6-test-network\",\n AutoCreateSubnetworks = false,\n EnableUlaInternalIpv6 = true,\n });\n\n var subnetwork_internal_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-internal-ipv6\", new()\n {\n Name = \"internal-ipv6-test-subnetwork\",\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-west2\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"INTERNAL\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"internal-ipv6-test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tEnableUlaInternalIpv6: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-internal-ipv6\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"internal-ipv6-test-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"INTERNAL\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder()\n .name(\"internal-ipv6-test-network\")\n .autoCreateSubnetworks(false)\n .enableUlaInternalIpv6(true)\n .build());\n\n var subnetwork_internal_ipv6 = new Subnetwork(\"subnetwork-internal-ipv6\", SubnetworkArgs.builder()\n .name(\"internal-ipv6-test-subnetwork\")\n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-west2\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"INTERNAL\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-internal-ipv6:\n type: gcp:compute:Subnetwork\n properties:\n name: internal-ipv6-test-subnetwork\n ipCidrRange: 10.0.0.0/22\n region: us-west2\n stackType: IPV4_IPV6\n ipv6AccessType: INTERNAL\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n name: internal-ipv6-test-network\n autoCreateSubnetworks: false\n enableUlaInternalIpv6: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Purpose Private Nat\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n name: \"subnet-purpose-test-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_purpose_private_nat = new gcp.compute.Subnetwork(\"subnetwork-purpose-private-nat\", {\n name: \"subnet-purpose-test-subnetwork\",\n region: \"us-west2\",\n ipCidrRange: \"192.168.1.0/24\",\n purpose: \"PRIVATE_NAT\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"subnet-purpose-test-network\",\n auto_create_subnetworks=False)\nsubnetwork_purpose_private_nat = gcp.compute.Subnetwork(\"subnetwork-purpose-private-nat\",\n name=\"subnet-purpose-test-subnetwork\",\n region=\"us-west2\",\n ip_cidr_range=\"192.168.1.0/24\",\n purpose=\"PRIVATE_NAT\",\n network=custom_test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n Name = \"subnet-purpose-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_purpose_private_nat = new Gcp.Compute.Subnetwork(\"subnetwork-purpose-private-nat\", new()\n {\n Name = \"subnet-purpose-test-subnetwork\",\n Region = \"us-west2\",\n IpCidrRange = \"192.168.1.0/24\",\n Purpose = \"PRIVATE_NAT\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-purpose-test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-purpose-private-nat\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-purpose-test-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.1.0/24\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_NAT\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder()\n .name(\"subnet-purpose-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_purpose_private_nat = new Subnetwork(\"subnetwork-purpose-private-nat\", SubnetworkArgs.builder()\n .name(\"subnet-purpose-test-subnetwork\")\n .region(\"us-west2\")\n .ipCidrRange(\"192.168.1.0/24\")\n .purpose(\"PRIVATE_NAT\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-purpose-private-nat:\n type: gcp:compute:Subnetwork\n properties:\n name: subnet-purpose-test-subnetwork\n region: us-west2\n ipCidrRange: 192.168.1.0/24\n purpose: PRIVATE_NAT\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n name: subnet-purpose-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Cidr Overlap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net_cidr_overlap = new gcp.compute.Network(\"net-cidr-overlap\", {\n name: \"net-cidr-overlap\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_cidr_overlap = new gcp.compute.Subnetwork(\"subnetwork-cidr-overlap\", {\n name: \"subnet-cidr-overlap\",\n region: \"us-west2\",\n ipCidrRange: \"192.168.1.0/24\",\n allowSubnetCidrRoutesOverlap: true,\n network: net_cidr_overlap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet_cidr_overlap = gcp.compute.Network(\"net-cidr-overlap\",\n name=\"net-cidr-overlap\",\n auto_create_subnetworks=False)\nsubnetwork_cidr_overlap = gcp.compute.Subnetwork(\"subnetwork-cidr-overlap\",\n name=\"subnet-cidr-overlap\",\n region=\"us-west2\",\n ip_cidr_range=\"192.168.1.0/24\",\n allow_subnet_cidr_routes_overlap=True,\n network=net_cidr_overlap.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var net_cidr_overlap = new Gcp.Compute.Network(\"net-cidr-overlap\", new()\n {\n Name = \"net-cidr-overlap\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_cidr_overlap = new Gcp.Compute.Subnetwork(\"subnetwork-cidr-overlap\", new()\n {\n Name = \"subnet-cidr-overlap\",\n Region = \"us-west2\",\n IpCidrRange = \"192.168.1.0/24\",\n AllowSubnetCidrRoutesOverlap = true,\n Network = net_cidr_overlap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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, \"net-cidr-overlap\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net-cidr-overlap\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-cidr-overlap\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-cidr-overlap\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.1.0/24\"),\n\t\t\tAllowSubnetCidrRoutesOverlap: pulumi.Bool(true),\n\t\t\tNetwork: net_cidr_overlap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var net_cidr_overlap = new Network(\"net-cidr-overlap\", NetworkArgs.builder()\n .name(\"net-cidr-overlap\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_cidr_overlap = new Subnetwork(\"subnetwork-cidr-overlap\", SubnetworkArgs.builder()\n .name(\"subnet-cidr-overlap\")\n .region(\"us-west2\")\n .ipCidrRange(\"192.168.1.0/24\")\n .allowSubnetCidrRoutesOverlap(true)\n .network(net_cidr_overlap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-cidr-overlap:\n type: gcp:compute:Subnetwork\n properties:\n name: subnet-cidr-overlap\n region: us-west2\n ipCidrRange: 192.168.1.0/24\n allowSubnetCidrRoutesOverlap: true\n network: ${[\"net-cidr-overlap\"].id}\n net-cidr-overlap:\n type: gcp:compute:Network\n properties:\n name: net-cidr-overlap\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Reserved Internal Range\n\n\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-reserved-internal-range\",\n autoCreateSubnetworks: false,\n});\nconst reserved = new gcp.networkconnectivity.InternalRange(\"reserved\", {\n name: \"reserved\",\n network: _default.id,\n usage: \"FOR_VPC\",\n peering: \"FOR_SELF\",\n prefixLength: 24,\n targetCidrRanges: [\"10.0.0.0/8\"],\n});\nconst subnetwork_reserved_internal_range = new gcp.compute.Subnetwork(\"subnetwork-reserved-internal-range\", {\n name: \"subnetwork-reserved-internal-range\",\n region: \"us-central1\",\n network: _default.id,\n reservedInternalRange: pulumi.interpolate`networkconnectivity.googleapis.com/${reserved.id}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network-reserved-internal-range\",\n auto_create_subnetworks=False)\nreserved = gcp.networkconnectivity.InternalRange(\"reserved\",\n name=\"reserved\",\n network=default.id,\n usage=\"FOR_VPC\",\n peering=\"FOR_SELF\",\n prefix_length=24,\n target_cidr_ranges=[\"10.0.0.0/8\"])\nsubnetwork_reserved_internal_range = gcp.compute.Subnetwork(\"subnetwork-reserved-internal-range\",\n name=\"subnetwork-reserved-internal-range\",\n region=\"us-central1\",\n network=default.id,\n reserved_internal_range=reserved.id.apply(lambda id: f\"networkconnectivity.googleapis.com/{id}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network-reserved-internal-range\",\n AutoCreateSubnetworks = false,\n });\n\n var reserved = new Gcp.NetworkConnectivity.InternalRange(\"reserved\", new()\n {\n Name = \"reserved\",\n Network = @default.Id,\n Usage = \"FOR_VPC\",\n Peering = \"FOR_SELF\",\n PrefixLength = 24,\n TargetCidrRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n });\n\n var subnetwork_reserved_internal_range = new Gcp.Compute.Subnetwork(\"subnetwork-reserved-internal-range\", new()\n {\n Name = \"subnetwork-reserved-internal-range\",\n Region = \"us-central1\",\n Network = @default.Id,\n ReservedInternalRange = reserved.Id.Apply(id =\u003e $\"networkconnectivity.googleapis.com/{id}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-reserved-internal-range\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treserved, err := networkconnectivity.NewInternalRange(ctx, \"reserved\", \u0026networkconnectivity.InternalRangeArgs{\n\t\t\tName: pulumi.String(\"reserved\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tUsage: pulumi.String(\"FOR_VPC\"),\n\t\t\tPeering: pulumi.String(\"FOR_SELF\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tTargetCidrRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-reserved-internal-range\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnetwork-reserved-internal-range\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tReservedInternalRange: reserved.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"networkconnectivity.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.InternalRange;\nimport com.pulumi.gcp.networkconnectivity.InternalRangeArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network-reserved-internal-range\")\n .autoCreateSubnetworks(false)\n .build());\n\n var reserved = new InternalRange(\"reserved\", InternalRangeArgs.builder()\n .name(\"reserved\")\n .network(default_.id())\n .usage(\"FOR_VPC\")\n .peering(\"FOR_SELF\")\n .prefixLength(24)\n .targetCidrRanges(\"10.0.0.0/8\")\n .build());\n\n var subnetwork_reserved_internal_range = new Subnetwork(\"subnetwork-reserved-internal-range\", SubnetworkArgs.builder()\n .name(\"subnetwork-reserved-internal-range\")\n .region(\"us-central1\")\n .network(default_.id())\n .reservedInternalRange(reserved.id().applyValue(id -\u003e String.format(\"networkconnectivity.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-reserved-internal-range:\n type: gcp:compute:Subnetwork\n properties:\n name: subnetwork-reserved-internal-range\n region: us-central1\n network: ${default.id}\n reservedInternalRange: networkconnectivity.googleapis.com/${reserved.id}\n default:\n type: gcp:compute:Network\n properties:\n name: network-reserved-internal-range\n autoCreateSubnetworks: false\n reserved:\n type: gcp:networkconnectivity:InternalRange\n properties:\n name: reserved\n network: ${default.id}\n usage: FOR_VPC\n peering: FOR_SELF\n prefixLength: 24\n targetCidrRanges:\n - 10.0.0.0/8\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Reserved Secondary Range\n\n\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-reserved-secondary-range\",\n autoCreateSubnetworks: false,\n});\nconst reserved = new gcp.networkconnectivity.InternalRange(\"reserved\", {\n name: \"reserved-primary\",\n network: _default.id,\n usage: \"FOR_VPC\",\n peering: \"FOR_SELF\",\n prefixLength: 24,\n targetCidrRanges: [\"10.0.0.0/8\"],\n});\nconst reservedSecondary = new gcp.networkconnectivity.InternalRange(\"reserved_secondary\", {\n name: \"reserved-secondary\",\n network: _default.id,\n usage: \"FOR_VPC\",\n peering: \"FOR_SELF\",\n prefixLength: 16,\n targetCidrRanges: [\"10.0.0.0/8\"],\n});\nconst subnetwork_reserved_secondary_range = new gcp.compute.Subnetwork(\"subnetwork-reserved-secondary-range\", {\n name: \"subnetwork-reserved-secondary-range\",\n region: \"us-central1\",\n network: _default.id,\n reservedInternalRange: pulumi.interpolate`networkconnectivity.googleapis.com/${reserved.id}`,\n secondaryIpRanges: [{\n rangeName: \"secondary\",\n reservedInternalRange: pulumi.interpolate`networkconnectivity.googleapis.com/${reservedSecondary.id}`,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network-reserved-secondary-range\",\n auto_create_subnetworks=False)\nreserved = gcp.networkconnectivity.InternalRange(\"reserved\",\n name=\"reserved-primary\",\n network=default.id,\n usage=\"FOR_VPC\",\n peering=\"FOR_SELF\",\n prefix_length=24,\n target_cidr_ranges=[\"10.0.0.0/8\"])\nreserved_secondary = gcp.networkconnectivity.InternalRange(\"reserved_secondary\",\n name=\"reserved-secondary\",\n network=default.id,\n usage=\"FOR_VPC\",\n peering=\"FOR_SELF\",\n prefix_length=16,\n target_cidr_ranges=[\"10.0.0.0/8\"])\nsubnetwork_reserved_secondary_range = gcp.compute.Subnetwork(\"subnetwork-reserved-secondary-range\",\n name=\"subnetwork-reserved-secondary-range\",\n region=\"us-central1\",\n network=default.id,\n reserved_internal_range=reserved.id.apply(lambda id: f\"networkconnectivity.googleapis.com/{id}\"),\n secondary_ip_ranges=[{\n \"range_name\": \"secondary\",\n \"reserved_internal_range\": reserved_secondary.id.apply(lambda id: f\"networkconnectivity.googleapis.com/{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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network-reserved-secondary-range\",\n AutoCreateSubnetworks = false,\n });\n\n var reserved = new Gcp.NetworkConnectivity.InternalRange(\"reserved\", new()\n {\n Name = \"reserved-primary\",\n Network = @default.Id,\n Usage = \"FOR_VPC\",\n Peering = \"FOR_SELF\",\n PrefixLength = 24,\n TargetCidrRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n });\n\n var reservedSecondary = new Gcp.NetworkConnectivity.InternalRange(\"reserved_secondary\", new()\n {\n Name = \"reserved-secondary\",\n Network = @default.Id,\n Usage = \"FOR_VPC\",\n Peering = \"FOR_SELF\",\n PrefixLength = 16,\n TargetCidrRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n });\n\n var subnetwork_reserved_secondary_range = new Gcp.Compute.Subnetwork(\"subnetwork-reserved-secondary-range\", new()\n {\n Name = \"subnetwork-reserved-secondary-range\",\n Region = \"us-central1\",\n Network = @default.Id,\n ReservedInternalRange = reserved.Id.Apply(id =\u003e $\"networkconnectivity.googleapis.com/{id}\"),\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"secondary\",\n ReservedInternalRange = reservedSecondary.Id.Apply(id =\u003e $\"networkconnectivity.googleapis.com/{id}\"),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-reserved-secondary-range\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treserved, err := networkconnectivity.NewInternalRange(ctx, \"reserved\", \u0026networkconnectivity.InternalRangeArgs{\n\t\t\tName: pulumi.String(\"reserved-primary\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tUsage: pulumi.String(\"FOR_VPC\"),\n\t\t\tPeering: pulumi.String(\"FOR_SELF\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tTargetCidrRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treservedSecondary, err := networkconnectivity.NewInternalRange(ctx, \"reserved_secondary\", \u0026networkconnectivity.InternalRangeArgs{\n\t\t\tName: pulumi.String(\"reserved-secondary\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tUsage: pulumi.String(\"FOR_VPC\"),\n\t\t\tPeering: pulumi.String(\"FOR_SELF\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tTargetCidrRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-reserved-secondary-range\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnetwork-reserved-secondary-range\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tReservedInternalRange: reserved.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"networkconnectivity.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"secondary\"),\n\t\t\t\t\tReservedInternalRange: reservedSecondary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"networkconnectivity.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.InternalRange;\nimport com.pulumi.gcp.networkconnectivity.InternalRangeArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network-reserved-secondary-range\")\n .autoCreateSubnetworks(false)\n .build());\n\n var reserved = new InternalRange(\"reserved\", InternalRangeArgs.builder()\n .name(\"reserved-primary\")\n .network(default_.id())\n .usage(\"FOR_VPC\")\n .peering(\"FOR_SELF\")\n .prefixLength(24)\n .targetCidrRanges(\"10.0.0.0/8\")\n .build());\n\n var reservedSecondary = new InternalRange(\"reservedSecondary\", InternalRangeArgs.builder()\n .name(\"reserved-secondary\")\n .network(default_.id())\n .usage(\"FOR_VPC\")\n .peering(\"FOR_SELF\")\n .prefixLength(16)\n .targetCidrRanges(\"10.0.0.0/8\")\n .build());\n\n var subnetwork_reserved_secondary_range = new Subnetwork(\"subnetwork-reserved-secondary-range\", SubnetworkArgs.builder()\n .name(\"subnetwork-reserved-secondary-range\")\n .region(\"us-central1\")\n .network(default_.id())\n .reservedInternalRange(reserved.id().applyValue(id -\u003e String.format(\"networkconnectivity.googleapis.com/%s\", id)))\n .secondaryIpRanges(SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"secondary\")\n .reservedInternalRange(reservedSecondary.id().applyValue(id -\u003e String.format(\"networkconnectivity.googleapis.com/%s\", id)))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-reserved-secondary-range:\n type: gcp:compute:Subnetwork\n properties:\n name: subnetwork-reserved-secondary-range\n region: us-central1\n network: ${default.id}\n reservedInternalRange: networkconnectivity.googleapis.com/${reserved.id}\n secondaryIpRanges:\n - rangeName: secondary\n reservedInternalRange: networkconnectivity.googleapis.com/${reservedSecondary.id}\n default:\n type: gcp:compute:Network\n properties:\n name: network-reserved-secondary-range\n autoCreateSubnetworks: false\n reserved:\n type: gcp:networkconnectivity:InternalRange\n properties:\n name: reserved-primary\n network: ${default.id}\n usage: FOR_VPC\n peering: FOR_SELF\n prefixLength: 24\n targetCidrRanges:\n - 10.0.0.0/8\n reservedSecondary:\n type: gcp:networkconnectivity:InternalRange\n name: reserved_secondary\n properties:\n name: reserved-secondary\n network: ${default.id}\n usage: FOR_VPC\n peering: FOR_SELF\n prefixLength: 16\n targetCidrRanges:\n - 10.0.0.0/8\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubnetwork can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/subnetworks/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subnetwork can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default projects/{{project}}/regions/{{region}}/subnetworks/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default {{name}}\n```\n\n", + "description": "A VPC network is a virtual version of the traditional physical networks\nthat exist within and between physical data centers. A VPC network\nprovides connectivity for your Compute Engine virtual machine (VM)\ninstances, Container Engine containers, App Engine Flex services, and\nother network-related resources.\n\nEach GCP project contains one or more VPC networks. Each VPC network is a\nglobal entity spanning all GCP regions. This global VPC network allows VM\ninstances and other resources to communicate with each other via internal,\nprivate IP addresses.\n\nEach VPC network is subdivided into subnets, and each subnet is contained\nwithin a single region. You can have more than one subnet in a region for\na given VPC network. Each subnet has a contiguous private RFC1918 IP\nspace. You create instances, containers, and the like in these subnets.\nWhen you create an instance, you must create it in a subnet, and the\ninstance draws its internal IP address from that subnet.\n\nVirtual machine (VM) instances in a VPC network can communicate with\ninstances in all other subnets of the same VPC network, regardless of\nregion, using their RFC1918 private IP addresses. You can isolate portions\nof the network, even entire subnets, using firewall rules.\n\n\nTo get more information about Subnetwork, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks)\n* How-to Guides\n * [Cloud Networking](https://cloud.google.com/vpc/docs/using-vpc)\n * [Private Google Access](https://cloud.google.com/vpc/docs/configure-private-google-access)\n\n## Example Usage\n\n### Subnetwork Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n name: \"test-network\",\n autoCreateSubnetworks: false,\n});\nconst network_with_private_secondary_ip_ranges = new gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", {\n name: \"test-subnetwork\",\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: custom_test.id,\n secondaryIpRanges: [{\n rangeName: \"tf-test-secondary-range-update1\",\n ipCidrRange: \"192.168.10.0/24\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"test-network\",\n auto_create_subnetworks=False)\nnetwork_with_private_secondary_ip_ranges = gcp.compute.Subnetwork(\"network-with-private-secondary-ip-ranges\",\n name=\"test-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n secondary_ip_ranges=[{\n \"range_name\": \"tf-test-secondary-range-update1\",\n \"ip_cidr_range\": \"192.168.10.0/24\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n Name = \"test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var network_with_private_secondary_ip_ranges = new Gcp.Compute.Subnetwork(\"network-with-private-secondary-ip-ranges\", new()\n {\n Name = \"test-subnetwork\",\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = custom_test.Id,\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"tf-test-secondary-range-update1\",\n IpCidrRange = \"192.168.10.0/24\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tcustom_test, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"network-with-private-secondary-ip-ranges\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"test-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"tf-test-secondary-range-update1\"),\n\t\t\t\t\tIpCidrRange: pulumi.String(\"192.168.10.0/24\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder()\n .name(\"test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_with_private_secondary_ip_ranges = new Subnetwork(\"network-with-private-secondary-ip-ranges\", SubnetworkArgs.builder()\n .name(\"test-subnetwork\")\n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(custom_test.id())\n .secondaryIpRanges(SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"tf-test-secondary-range-update1\")\n .ipCidrRange(\"192.168.10.0/24\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-with-private-secondary-ip-ranges:\n type: gcp:compute:Subnetwork\n properties:\n name: test-subnetwork\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${[\"custom-test\"].id}\n secondaryIpRanges:\n - rangeName: tf-test-secondary-range-update1\n ipCidrRange: 192.168.10.0/24\n custom-test:\n type: gcp:compute:Network\n properties:\n name: test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Logging Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n name: \"log-test-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet_with_logging = new gcp.compute.Subnetwork(\"subnet-with-logging\", {\n name: \"log-test-subnetwork\",\n ipCidrRange: \"10.2.0.0/16\",\n region: \"us-central1\",\n network: custom_test.id,\n logConfig: {\n aggregationInterval: \"INTERVAL_10_MIN\",\n flowSampling: 0.5,\n metadata: \"INCLUDE_ALL_METADATA\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"log-test-network\",\n auto_create_subnetworks=False)\nsubnet_with_logging = gcp.compute.Subnetwork(\"subnet-with-logging\",\n name=\"log-test-subnetwork\",\n ip_cidr_range=\"10.2.0.0/16\",\n region=\"us-central1\",\n network=custom_test.id,\n log_config={\n \"aggregation_interval\": \"INTERVAL_10_MIN\",\n \"flow_sampling\": 0.5,\n \"metadata\": \"INCLUDE_ALL_METADATA\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n Name = \"log-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet_with_logging = new Gcp.Compute.Subnetwork(\"subnet-with-logging\", new()\n {\n Name = \"log-test-subnetwork\",\n IpCidrRange = \"10.2.0.0/16\",\n Region = \"us-central1\",\n Network = custom_test.Id,\n LogConfig = new Gcp.Compute.Inputs.SubnetworkLogConfigArgs\n {\n AggregationInterval = \"INTERVAL_10_MIN\",\n FlowSampling = 0.5,\n Metadata = \"INCLUDE_ALL_METADATA\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tcustom_test, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"log-test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnet-with-logging\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"log-test-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.2.0.0/16\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t\tLogConfig: \u0026compute.SubnetworkLogConfigArgs{\n\t\t\t\tAggregationInterval: pulumi.String(\"INTERVAL_10_MIN\"),\n\t\t\t\tFlowSampling: pulumi.Float64(0.5),\n\t\t\t\tMetadata: pulumi.String(\"INCLUDE_ALL_METADATA\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkLogConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder()\n .name(\"log-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet_with_logging = new Subnetwork(\"subnet-with-logging\", SubnetworkArgs.builder()\n .name(\"log-test-subnetwork\")\n .ipCidrRange(\"10.2.0.0/16\")\n .region(\"us-central1\")\n .network(custom_test.id())\n .logConfig(SubnetworkLogConfigArgs.builder()\n .aggregationInterval(\"INTERVAL_10_MIN\")\n .flowSampling(0.5)\n .metadata(\"INCLUDE_ALL_METADATA\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnet-with-logging:\n type: gcp:compute:Subnetwork\n properties:\n name: log-test-subnetwork\n ipCidrRange: 10.2.0.0/16\n region: us-central1\n network: ${[\"custom-test\"].id}\n logConfig:\n aggregationInterval: INTERVAL_10_MIN\n flowSampling: 0.5\n metadata: INCLUDE_ALL_METADATA\n custom-test:\n type: gcp:compute:Network\n properties:\n name: log-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Internal L7lb\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n name: \"l7lb-test-network\",\n autoCreateSubnetworks: false,\n});\nconst network_for_l7lb = new gcp.compute.Subnetwork(\"network-for-l7lb\", {\n name: \"l7lb-test-subnetwork\",\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-central1\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"l7lb-test-network\",\n auto_create_subnetworks=False)\nnetwork_for_l7lb = gcp.compute.Subnetwork(\"network-for-l7lb\",\n name=\"l7lb-test-subnetwork\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-central1\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\",\n network=custom_test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n Name = \"l7lb-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var network_for_l7lb = new Gcp.Compute.Subnetwork(\"network-for-l7lb\", new()\n {\n Name = \"l7lb-test-subnetwork\",\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-central1\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tcustom_test, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"l7lb-test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"network-for-l7lb\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"l7lb-test-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder()\n .name(\"l7lb-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_for_l7lb = new Subnetwork(\"network-for-l7lb\", SubnetworkArgs.builder()\n .name(\"l7lb-test-subnetwork\")\n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-central1\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .role(\"ACTIVE\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-for-l7lb:\n type: gcp:compute:Subnetwork\n properties:\n name: l7lb-test-subnetwork\n ipCidrRange: 10.0.0.0/22\n region: us-central1\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n name: l7lb-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Ipv6\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n name: \"ipv6-test-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-ipv6\", {\n name: \"ipv6-test-subnetwork\",\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-west2\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"EXTERNAL\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"ipv6-test-network\",\n auto_create_subnetworks=False)\nsubnetwork_ipv6 = gcp.compute.Subnetwork(\"subnetwork-ipv6\",\n name=\"ipv6-test-subnetwork\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-west2\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"EXTERNAL\",\n network=custom_test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n Name = \"ipv6-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-ipv6\", new()\n {\n Name = \"ipv6-test-subnetwork\",\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-west2\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"EXTERNAL\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tcustom_test, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"ipv6-test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-ipv6\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"ipv6-test-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"EXTERNAL\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder()\n .name(\"ipv6-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_ipv6 = new Subnetwork(\"subnetwork-ipv6\", SubnetworkArgs.builder()\n .name(\"ipv6-test-subnetwork\")\n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-west2\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"EXTERNAL\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-ipv6:\n type: gcp:compute:Subnetwork\n properties:\n name: ipv6-test-subnetwork\n ipCidrRange: 10.0.0.0/22\n region: us-west2\n stackType: IPV4_IPV6\n ipv6AccessType: EXTERNAL\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n name: ipv6-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Internal Ipv6\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n name: \"internal-ipv6-test-network\",\n autoCreateSubnetworks: false,\n enableUlaInternalIpv6: true,\n});\nconst subnetwork_internal_ipv6 = new gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\", {\n name: \"internal-ipv6-test-subnetwork\",\n ipCidrRange: \"10.0.0.0/22\",\n region: \"us-west2\",\n stackType: \"IPV4_IPV6\",\n ipv6AccessType: \"INTERNAL\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"internal-ipv6-test-network\",\n auto_create_subnetworks=False,\n enable_ula_internal_ipv6=True)\nsubnetwork_internal_ipv6 = gcp.compute.Subnetwork(\"subnetwork-internal-ipv6\",\n name=\"internal-ipv6-test-subnetwork\",\n ip_cidr_range=\"10.0.0.0/22\",\n region=\"us-west2\",\n stack_type=\"IPV4_IPV6\",\n ipv6_access_type=\"INTERNAL\",\n network=custom_test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n Name = \"internal-ipv6-test-network\",\n AutoCreateSubnetworks = false,\n EnableUlaInternalIpv6 = true,\n });\n\n var subnetwork_internal_ipv6 = new Gcp.Compute.Subnetwork(\"subnetwork-internal-ipv6\", new()\n {\n Name = \"internal-ipv6-test-subnetwork\",\n IpCidrRange = \"10.0.0.0/22\",\n Region = \"us-west2\",\n StackType = \"IPV4_IPV6\",\n Ipv6AccessType = \"INTERNAL\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tcustom_test, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"internal-ipv6-test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t\tEnableUlaInternalIpv6: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-internal-ipv6\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"internal-ipv6-test-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/22\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tStackType: pulumi.String(\"IPV4_IPV6\"),\n\t\t\tIpv6AccessType: pulumi.String(\"INTERNAL\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder()\n .name(\"internal-ipv6-test-network\")\n .autoCreateSubnetworks(false)\n .enableUlaInternalIpv6(true)\n .build());\n\n var subnetwork_internal_ipv6 = new Subnetwork(\"subnetwork-internal-ipv6\", SubnetworkArgs.builder()\n .name(\"internal-ipv6-test-subnetwork\")\n .ipCidrRange(\"10.0.0.0/22\")\n .region(\"us-west2\")\n .stackType(\"IPV4_IPV6\")\n .ipv6AccessType(\"INTERNAL\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-internal-ipv6:\n type: gcp:compute:Subnetwork\n properties:\n name: internal-ipv6-test-subnetwork\n ipCidrRange: 10.0.0.0/22\n region: us-west2\n stackType: IPV4_IPV6\n ipv6AccessType: INTERNAL\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n name: internal-ipv6-test-network\n autoCreateSubnetworks: false\n enableUlaInternalIpv6: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Purpose Private Nat\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst custom_test = new gcp.compute.Network(\"custom-test\", {\n name: \"subnet-purpose-test-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_purpose_private_nat = new gcp.compute.Subnetwork(\"subnetwork-purpose-private-nat\", {\n name: \"subnet-purpose-test-subnetwork\",\n region: \"us-west2\",\n ipCidrRange: \"192.168.1.0/24\",\n purpose: \"PRIVATE_NAT\",\n network: custom_test.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustom_test = gcp.compute.Network(\"custom-test\",\n name=\"subnet-purpose-test-network\",\n auto_create_subnetworks=False)\nsubnetwork_purpose_private_nat = gcp.compute.Subnetwork(\"subnetwork-purpose-private-nat\",\n name=\"subnet-purpose-test-subnetwork\",\n region=\"us-west2\",\n ip_cidr_range=\"192.168.1.0/24\",\n purpose=\"PRIVATE_NAT\",\n network=custom_test.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var custom_test = new Gcp.Compute.Network(\"custom-test\", new()\n {\n Name = \"subnet-purpose-test-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_purpose_private_nat = new Gcp.Compute.Subnetwork(\"subnetwork-purpose-private-nat\", new()\n {\n Name = \"subnet-purpose-test-subnetwork\",\n Region = \"us-west2\",\n IpCidrRange = \"192.168.1.0/24\",\n Purpose = \"PRIVATE_NAT\",\n Network = custom_test.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tcustom_test, err := compute.NewNetwork(ctx, \"custom-test\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-purpose-test-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-purpose-private-nat\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-purpose-test-subnetwork\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.1.0/24\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE_NAT\"),\n\t\t\tNetwork: custom_test.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var custom_test = new Network(\"custom-test\", NetworkArgs.builder()\n .name(\"subnet-purpose-test-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_purpose_private_nat = new Subnetwork(\"subnetwork-purpose-private-nat\", SubnetworkArgs.builder()\n .name(\"subnet-purpose-test-subnetwork\")\n .region(\"us-west2\")\n .ipCidrRange(\"192.168.1.0/24\")\n .purpose(\"PRIVATE_NAT\")\n .network(custom_test.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-purpose-private-nat:\n type: gcp:compute:Subnetwork\n properties:\n name: subnet-purpose-test-subnetwork\n region: us-west2\n ipCidrRange: 192.168.1.0/24\n purpose: PRIVATE_NAT\n network: ${[\"custom-test\"].id}\n custom-test:\n type: gcp:compute:Network\n properties:\n name: subnet-purpose-test-network\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Cidr Overlap\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst net_cidr_overlap = new gcp.compute.Network(\"net-cidr-overlap\", {\n name: \"net-cidr-overlap\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork_cidr_overlap = new gcp.compute.Subnetwork(\"subnetwork-cidr-overlap\", {\n name: \"subnet-cidr-overlap\",\n region: \"us-west2\",\n ipCidrRange: \"192.168.1.0/24\",\n allowSubnetCidrRoutesOverlap: true,\n network: net_cidr_overlap.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnet_cidr_overlap = gcp.compute.Network(\"net-cidr-overlap\",\n name=\"net-cidr-overlap\",\n auto_create_subnetworks=False)\nsubnetwork_cidr_overlap = gcp.compute.Subnetwork(\"subnetwork-cidr-overlap\",\n name=\"subnet-cidr-overlap\",\n region=\"us-west2\",\n ip_cidr_range=\"192.168.1.0/24\",\n allow_subnet_cidr_routes_overlap=True,\n network=net_cidr_overlap.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var net_cidr_overlap = new Gcp.Compute.Network(\"net-cidr-overlap\", new()\n {\n Name = \"net-cidr-overlap\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork_cidr_overlap = new Gcp.Compute.Subnetwork(\"subnetwork-cidr-overlap\", new()\n {\n Name = \"subnet-cidr-overlap\",\n Region = \"us-west2\",\n IpCidrRange = \"192.168.1.0/24\",\n AllowSubnetCidrRoutesOverlap = true,\n Network = net_cidr_overlap.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tnet_cidr_overlap, err := compute.NewNetwork(ctx, \"net-cidr-overlap\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net-cidr-overlap\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-cidr-overlap\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-cidr-overlap\"),\n\t\t\tRegion: pulumi.String(\"us-west2\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.1.0/24\"),\n\t\t\tAllowSubnetCidrRoutesOverlap: pulumi.Bool(true),\n\t\t\tNetwork: net_cidr_overlap.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var net_cidr_overlap = new Network(\"net-cidr-overlap\", NetworkArgs.builder()\n .name(\"net-cidr-overlap\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork_cidr_overlap = new Subnetwork(\"subnetwork-cidr-overlap\", SubnetworkArgs.builder()\n .name(\"subnet-cidr-overlap\")\n .region(\"us-west2\")\n .ipCidrRange(\"192.168.1.0/24\")\n .allowSubnetCidrRoutesOverlap(true)\n .network(net_cidr_overlap.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-cidr-overlap:\n type: gcp:compute:Subnetwork\n properties:\n name: subnet-cidr-overlap\n region: us-west2\n ipCidrRange: 192.168.1.0/24\n allowSubnetCidrRoutesOverlap: true\n network: ${[\"net-cidr-overlap\"].id}\n net-cidr-overlap:\n type: gcp:compute:Network\n properties:\n name: net-cidr-overlap\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Reserved Internal Range\n\n\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-reserved-internal-range\",\n autoCreateSubnetworks: false,\n});\nconst reserved = new gcp.networkconnectivity.InternalRange(\"reserved\", {\n name: \"reserved\",\n network: _default.id,\n usage: \"FOR_VPC\",\n peering: \"FOR_SELF\",\n prefixLength: 24,\n targetCidrRanges: [\"10.0.0.0/8\"],\n});\nconst subnetwork_reserved_internal_range = new gcp.compute.Subnetwork(\"subnetwork-reserved-internal-range\", {\n name: \"subnetwork-reserved-internal-range\",\n region: \"us-central1\",\n network: _default.id,\n reservedInternalRange: pulumi.interpolate`networkconnectivity.googleapis.com/${reserved.id}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network-reserved-internal-range\",\n auto_create_subnetworks=False)\nreserved = gcp.networkconnectivity.InternalRange(\"reserved\",\n name=\"reserved\",\n network=default.id,\n usage=\"FOR_VPC\",\n peering=\"FOR_SELF\",\n prefix_length=24,\n target_cidr_ranges=[\"10.0.0.0/8\"])\nsubnetwork_reserved_internal_range = gcp.compute.Subnetwork(\"subnetwork-reserved-internal-range\",\n name=\"subnetwork-reserved-internal-range\",\n region=\"us-central1\",\n network=default.id,\n reserved_internal_range=reserved.id.apply(lambda id: f\"networkconnectivity.googleapis.com/{id}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network-reserved-internal-range\",\n AutoCreateSubnetworks = false,\n });\n\n var reserved = new Gcp.NetworkConnectivity.InternalRange(\"reserved\", new()\n {\n Name = \"reserved\",\n Network = @default.Id,\n Usage = \"FOR_VPC\",\n Peering = \"FOR_SELF\",\n PrefixLength = 24,\n TargetCidrRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n });\n\n var subnetwork_reserved_internal_range = new Gcp.Compute.Subnetwork(\"subnetwork-reserved-internal-range\", new()\n {\n Name = \"subnetwork-reserved-internal-range\",\n Region = \"us-central1\",\n Network = @default.Id,\n ReservedInternalRange = reserved.Id.Apply(id =\u003e $\"networkconnectivity.googleapis.com/{id}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-reserved-internal-range\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treserved, err := networkconnectivity.NewInternalRange(ctx, \"reserved\", \u0026networkconnectivity.InternalRangeArgs{\n\t\t\tName: pulumi.String(\"reserved\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tUsage: pulumi.String(\"FOR_VPC\"),\n\t\t\tPeering: pulumi.String(\"FOR_SELF\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tTargetCidrRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-reserved-internal-range\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnetwork-reserved-internal-range\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tReservedInternalRange: reserved.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"networkconnectivity.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.InternalRange;\nimport com.pulumi.gcp.networkconnectivity.InternalRangeArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network-reserved-internal-range\")\n .autoCreateSubnetworks(false)\n .build());\n\n var reserved = new InternalRange(\"reserved\", InternalRangeArgs.builder()\n .name(\"reserved\")\n .network(default_.id())\n .usage(\"FOR_VPC\")\n .peering(\"FOR_SELF\")\n .prefixLength(24)\n .targetCidrRanges(\"10.0.0.0/8\")\n .build());\n\n var subnetwork_reserved_internal_range = new Subnetwork(\"subnetwork-reserved-internal-range\", SubnetworkArgs.builder()\n .name(\"subnetwork-reserved-internal-range\")\n .region(\"us-central1\")\n .network(default_.id())\n .reservedInternalRange(reserved.id().applyValue(id -\u003e String.format(\"networkconnectivity.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-reserved-internal-range:\n type: gcp:compute:Subnetwork\n properties:\n name: subnetwork-reserved-internal-range\n region: us-central1\n network: ${default.id}\n reservedInternalRange: networkconnectivity.googleapis.com/${reserved.id}\n default:\n type: gcp:compute:Network\n properties:\n name: network-reserved-internal-range\n autoCreateSubnetworks: false\n reserved:\n type: gcp:networkconnectivity:InternalRange\n properties:\n name: reserved\n network: ${default.id}\n usage: FOR_VPC\n peering: FOR_SELF\n prefixLength: 24\n targetCidrRanges:\n - 10.0.0.0/8\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Subnetwork Reserved Secondary Range\n\n\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-reserved-secondary-range\",\n autoCreateSubnetworks: false,\n});\nconst reserved = new gcp.networkconnectivity.InternalRange(\"reserved\", {\n name: \"reserved-primary\",\n network: _default.id,\n usage: \"FOR_VPC\",\n peering: \"FOR_SELF\",\n prefixLength: 24,\n targetCidrRanges: [\"10.0.0.0/8\"],\n});\nconst reservedSecondary = new gcp.networkconnectivity.InternalRange(\"reserved_secondary\", {\n name: \"reserved-secondary\",\n network: _default.id,\n usage: \"FOR_VPC\",\n peering: \"FOR_SELF\",\n prefixLength: 16,\n targetCidrRanges: [\"10.0.0.0/8\"],\n});\nconst subnetwork_reserved_secondary_range = new gcp.compute.Subnetwork(\"subnetwork-reserved-secondary-range\", {\n name: \"subnetwork-reserved-secondary-range\",\n region: \"us-central1\",\n network: _default.id,\n reservedInternalRange: pulumi.interpolate`networkconnectivity.googleapis.com/${reserved.id}`,\n secondaryIpRanges: [{\n rangeName: \"secondary\",\n reservedInternalRange: pulumi.interpolate`networkconnectivity.googleapis.com/${reservedSecondary.id}`,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"network-reserved-secondary-range\",\n auto_create_subnetworks=False)\nreserved = gcp.networkconnectivity.InternalRange(\"reserved\",\n name=\"reserved-primary\",\n network=default.id,\n usage=\"FOR_VPC\",\n peering=\"FOR_SELF\",\n prefix_length=24,\n target_cidr_ranges=[\"10.0.0.0/8\"])\nreserved_secondary = gcp.networkconnectivity.InternalRange(\"reserved_secondary\",\n name=\"reserved-secondary\",\n network=default.id,\n usage=\"FOR_VPC\",\n peering=\"FOR_SELF\",\n prefix_length=16,\n target_cidr_ranges=[\"10.0.0.0/8\"])\nsubnetwork_reserved_secondary_range = gcp.compute.Subnetwork(\"subnetwork-reserved-secondary-range\",\n name=\"subnetwork-reserved-secondary-range\",\n region=\"us-central1\",\n network=default.id,\n reserved_internal_range=reserved.id.apply(lambda id: f\"networkconnectivity.googleapis.com/{id}\"),\n secondary_ip_ranges=[{\n \"range_name\": \"secondary\",\n \"reserved_internal_range\": reserved_secondary.id.apply(lambda id: f\"networkconnectivity.googleapis.com/{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 @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network-reserved-secondary-range\",\n AutoCreateSubnetworks = false,\n });\n\n var reserved = new Gcp.NetworkConnectivity.InternalRange(\"reserved\", new()\n {\n Name = \"reserved-primary\",\n Network = @default.Id,\n Usage = \"FOR_VPC\",\n Peering = \"FOR_SELF\",\n PrefixLength = 24,\n TargetCidrRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n });\n\n var reservedSecondary = new Gcp.NetworkConnectivity.InternalRange(\"reserved_secondary\", new()\n {\n Name = \"reserved-secondary\",\n Network = @default.Id,\n Usage = \"FOR_VPC\",\n Peering = \"FOR_SELF\",\n PrefixLength = 16,\n TargetCidrRanges = new[]\n {\n \"10.0.0.0/8\",\n },\n });\n\n var subnetwork_reserved_secondary_range = new Gcp.Compute.Subnetwork(\"subnetwork-reserved-secondary-range\", new()\n {\n Name = \"subnetwork-reserved-secondary-range\",\n Region = \"us-central1\",\n Network = @default.Id,\n ReservedInternalRange = reserved.Id.Apply(id =\u003e $\"networkconnectivity.googleapis.com/{id}\"),\n SecondaryIpRanges = new[]\n {\n new Gcp.Compute.Inputs.SubnetworkSecondaryIpRangeArgs\n {\n RangeName = \"secondary\",\n ReservedInternalRange = reservedSecondary.Id.Apply(id =\u003e $\"networkconnectivity.googleapis.com/{id}\"),\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-reserved-secondary-range\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treserved, err := networkconnectivity.NewInternalRange(ctx, \"reserved\", \u0026networkconnectivity.InternalRangeArgs{\n\t\t\tName: pulumi.String(\"reserved-primary\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tUsage: pulumi.String(\"FOR_VPC\"),\n\t\t\tPeering: pulumi.String(\"FOR_SELF\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tTargetCidrRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treservedSecondary, err := networkconnectivity.NewInternalRange(ctx, \"reserved_secondary\", \u0026networkconnectivity.InternalRangeArgs{\n\t\t\tName: pulumi.String(\"reserved-secondary\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tUsage: pulumi.String(\"FOR_VPC\"),\n\t\t\tPeering: pulumi.String(\"FOR_SELF\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tTargetCidrRanges: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork-reserved-secondary-range\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnetwork-reserved-secondary-range\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tReservedInternalRange: reserved.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"networkconnectivity.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tSecondaryIpRanges: compute.SubnetworkSecondaryIpRangeArray{\n\t\t\t\t\u0026compute.SubnetworkSecondaryIpRangeArgs{\n\t\t\t\t\tRangeName: pulumi.String(\"secondary\"),\n\t\t\t\t\tReservedInternalRange: reservedSecondary.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"networkconnectivity.googleapis.com/%v\", id), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.InternalRange;\nimport com.pulumi.gcp.networkconnectivity.InternalRangeArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.inputs.SubnetworkSecondaryIpRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"network-reserved-secondary-range\")\n .autoCreateSubnetworks(false)\n .build());\n\n var reserved = new InternalRange(\"reserved\", InternalRangeArgs.builder()\n .name(\"reserved-primary\")\n .network(default_.id())\n .usage(\"FOR_VPC\")\n .peering(\"FOR_SELF\")\n .prefixLength(24)\n .targetCidrRanges(\"10.0.0.0/8\")\n .build());\n\n var reservedSecondary = new InternalRange(\"reservedSecondary\", InternalRangeArgs.builder()\n .name(\"reserved-secondary\")\n .network(default_.id())\n .usage(\"FOR_VPC\")\n .peering(\"FOR_SELF\")\n .prefixLength(16)\n .targetCidrRanges(\"10.0.0.0/8\")\n .build());\n\n var subnetwork_reserved_secondary_range = new Subnetwork(\"subnetwork-reserved-secondary-range\", SubnetworkArgs.builder()\n .name(\"subnetwork-reserved-secondary-range\")\n .region(\"us-central1\")\n .network(default_.id())\n .reservedInternalRange(reserved.id().applyValue(id -\u003e String.format(\"networkconnectivity.googleapis.com/%s\", id)))\n .secondaryIpRanges(SubnetworkSecondaryIpRangeArgs.builder()\n .rangeName(\"secondary\")\n .reservedInternalRange(reservedSecondary.id().applyValue(id -\u003e String.format(\"networkconnectivity.googleapis.com/%s\", id)))\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnetwork-reserved-secondary-range:\n type: gcp:compute:Subnetwork\n properties:\n name: subnetwork-reserved-secondary-range\n region: us-central1\n network: ${default.id}\n reservedInternalRange: networkconnectivity.googleapis.com/${reserved.id}\n secondaryIpRanges:\n - rangeName: secondary\n reservedInternalRange: networkconnectivity.googleapis.com/${reservedSecondary.id}\n default:\n type: gcp:compute:Network\n properties:\n name: network-reserved-secondary-range\n autoCreateSubnetworks: false\n reserved:\n type: gcp:networkconnectivity:InternalRange\n properties:\n name: reserved-primary\n network: ${default.id}\n usage: FOR_VPC\n peering: FOR_SELF\n prefixLength: 24\n targetCidrRanges:\n - 10.0.0.0/8\n reservedSecondary:\n type: gcp:networkconnectivity:InternalRange\n name: reserved_secondary\n properties:\n name: reserved-secondary\n network: ${default.id}\n usage: FOR_VPC\n peering: FOR_SELF\n prefixLength: 16\n targetCidrRanges:\n - 10.0.0.0/8\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubnetwork can be imported using any of these accepted formats:\n\n* `projects/{{project}}/regions/{{region}}/subnetworks/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Subnetwork can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default projects/{{project}}/regions/{{region}}/subnetworks/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/subnetwork:Subnetwork default {{name}}\n```\n\n", "properties": { "allowSubnetCidrRoutesOverlap": { "type": "boolean", @@ -192590,7 +192590,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_21197\",\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_52865\",\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_21197\",\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_52865\",\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_21197\",\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_52865\",\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_21197\"),\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_52865\"),\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_21197\")\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_52865\")\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_21197\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_52865\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\ttarget_vm, 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\ttarget_vmInstance, 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_21197\",\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_52865\",\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_21197\",\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_52865\",\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_21197\",\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_52865\",\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_default, 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\ttarget_vm, 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_21197\"),\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_52865\"),\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_21197\")\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_52865\")\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_21197\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_52865\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", @@ -193197,7 +193197,7 @@ } }, "gcp:compute/uRLMap:URLMap": { - "description": "UrlMaps are used to route requests to a backend service based on rules\nthat you define for the host and path of an incoming URL.\n\n\nTo get more information about UrlMap, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/urlMaps)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/url-map-concepts)\n\n## Example Usage\n\n### Url Map Bucket And Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst login = new gcp.compute.BackendService(\"login\", {\n name: \"login\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst staticBucket = new gcp.storage.Bucket(\"static\", {\n name: \"static-asset-bucket\",\n location: \"US\",\n});\nconst static = new gcp.compute.BackendBucket(\"static\", {\n name: \"static-asset-backend-bucket\",\n bucketName: staticBucket.name,\n enableCdn: true,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: static.id,\n hostRules: [\n {\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n },\n {\n hosts: [\"myothersite.com\"],\n pathMatcher: \"otherpaths\",\n },\n ],\n pathMatchers: [\n {\n name: \"mysite\",\n defaultService: static.id,\n pathRules: [\n {\n paths: [\"/home\"],\n service: static.id,\n },\n {\n paths: [\"/login\"],\n service: login.id,\n },\n {\n paths: [\"/static\"],\n service: static.id,\n },\n ],\n },\n {\n name: \"otherpaths\",\n defaultService: static.id,\n },\n ],\n tests: [{\n service: static.id,\n host: \"example.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\nlogin = gcp.compute.BackendService(\"login\",\n name=\"login\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id)\nstatic_bucket = gcp.storage.Bucket(\"static\",\n name=\"static-asset-bucket\",\n location=\"US\")\nstatic = gcp.compute.BackendBucket(\"static\",\n name=\"static-asset-backend-bucket\",\n bucket_name=static_bucket.name,\n enable_cdn=True)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=static.id,\n host_rules=[\n {\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"mysite\",\n },\n {\n \"hosts\": [\"myothersite.com\"],\n \"path_matcher\": \"otherpaths\",\n },\n ],\n path_matchers=[\n {\n \"name\": \"mysite\",\n \"default_service\": static.id,\n \"path_rules\": [\n {\n \"paths\": [\"/home\"],\n \"service\": static.id,\n },\n {\n \"paths\": [\"/login\"],\n \"service\": login.id,\n },\n {\n \"paths\": [\"/static\"],\n \"service\": static.id,\n },\n ],\n },\n {\n \"name\": \"otherpaths\",\n \"default_service\": static.id,\n },\n ],\n tests=[{\n \"service\": static.id,\n \"host\": \"example.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var login = new Gcp.Compute.BackendService(\"login\", new()\n {\n Name = \"login\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var staticBucket = new Gcp.Storage.Bucket(\"static\", new()\n {\n Name = \"static-asset-bucket\",\n Location = \"US\",\n });\n\n var @static = new Gcp.Compute.BackendBucket(\"static\", new()\n {\n Name = \"static-asset-backend-bucket\",\n BucketName = staticBucket.Name,\n EnableCdn = true,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = @static.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"myothersite.com\",\n },\n PathMatcher = \"otherpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = @static.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n Service = @static.Id,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/login\",\n },\n Service = login.Id,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/static\",\n },\n Service = @static.Id,\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"otherpaths\",\n DefaultService = @static.Id,\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = @static.Id,\n Host = \"example.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogin, err := compute.NewBackendService(ctx, \"login\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstaticBucket, err := storage.NewBucket(ctx, \"static\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstatic, err := compute.NewBackendBucket(ctx, \"static\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-backend-bucket\"),\n\t\t\tBucketName: staticBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: static.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"myothersite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"otherpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: static.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: static.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/login\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: login.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/static\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: static.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"otherpaths\"),\n\t\t\t\t\tDefaultService: static.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: static.ID(),\n\t\t\t\t\tHost: pulumi.String(\"example.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var login = new BackendService(\"login\", BackendServiceArgs.builder()\n .name(\"login\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var staticBucket = new Bucket(\"staticBucket\", BucketArgs.builder()\n .name(\"static-asset-bucket\")\n .location(\"US\")\n .build());\n\n var static_ = new BackendBucket(\"static\", BackendBucketArgs.builder()\n .name(\"static-asset-backend-bucket\")\n .bucketName(staticBucket.name())\n .enableCdn(true)\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(static_.id())\n .hostRules( \n URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build(),\n URLMapHostRuleArgs.builder()\n .hosts(\"myothersite.com\")\n .pathMatcher(\"otherpaths\")\n .build())\n .pathMatchers( \n URLMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(static_.id())\n .pathRules( \n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .service(static_.id())\n .build(),\n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/login\")\n .service(login.id())\n .build(),\n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/static\")\n .service(static_.id())\n .build())\n .build(),\n URLMapPathMatcherArgs.builder()\n .name(\"otherpaths\")\n .defaultService(static_.id())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(static_.id())\n .host(\"example.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${static.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n - hosts:\n - myothersite.com\n pathMatcher: otherpaths\n pathMatchers:\n - name: mysite\n defaultService: ${static.id}\n pathRules:\n - paths:\n - /home\n service: ${static.id}\n - paths:\n - /login\n service: ${login.id}\n - paths:\n - /static\n service: ${static.id}\n - name: otherpaths\n defaultService: ${static.id}\n tests:\n - service: ${static.id}\n host: example.com\n path: /home\n login:\n type: gcp:compute:BackendService\n properties:\n name: login\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n static:\n type: gcp:compute:BackendBucket\n properties:\n name: static-asset-backend-bucket\n bucketName: ${staticBucket.name}\n enableCdn: true\n staticBucket:\n type: gcp:storage:Bucket\n name: static\n properties:\n name: static-asset-bucket\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Route\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n requestHeadersToAdds: [{\n headerName: \"AddSomethingElse\",\n headerValue: \"MyOtherValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe3\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n ignoreCase: true,\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n urlRedirect: {\n hostRedirect: \"A host\",\n httpsRedirect: false,\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n stripQuery: true,\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe2\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddSomethingElse\",\n \"header_value\": \"MyOtherValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe3\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n \"match_rules\": [{\n \"full_path_match\": \"a full path\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n \"ignore_case\": True,\n \"metadata_filters\": [{\n \"filter_match_criteria\": \"MATCH_ANY\",\n \"filter_labels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\n }],\n }],\n \"query_parameter_matches\": [{\n \"name\": \"a query parameter\",\n \"present_match\": True,\n }],\n }],\n \"url_redirect\": {\n \"host_redirect\": \"A host\",\n \"https_redirect\": False,\n \"path_redirect\": \"some/path\",\n \"redirect_response_code\": \"TEMPORARY_REDIRECT\",\n \"strip_query\": True,\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddSomethingElse\",\n HeaderValue = \"MyOtherValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe3\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n IgnoreCase = true,\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleUrlRedirectArgs\n {\n HostRedirect = \"A host\",\n HttpsRedirect = false,\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n StripQuery = true,\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddSomethingElse\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyOtherValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tMetadataFilters: compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{\n\t\t\t\t\t\t\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\t\t\t\t\t\t\tFilterLabels: compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.URLMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"A host\"),\n\t\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(false),\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .headerAction(URLMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .requestHeadersToAdds(URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddSomethingElse\")\n .headerValue(\"MyOtherValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe3\")\n .responseHeadersToAdds(URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .ignoreCase(true)\n .metadataFilters(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .urlRedirect(URLMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .hostRedirect(\"A host\")\n .httpsRedirect(false)\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .stripQuery(true)\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n requestHeadersToAdds:\n - headerName: AddSomethingElse\n headerValue: MyOtherValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe3\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n ignoreCase: true\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n urlRedirect:\n hostRedirect: A host\n httpsRedirect: false\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n stripQuery: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Route Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n matchRules: [{\n prefixMatch: \"/someprefix\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n }],\n urlRedirect: {\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"match_rules\": [{\n \"prefix_match\": \"/someprefix\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n }],\n \"url_redirect\": {\n \"path_redirect\": \"some/path\",\n \"redirect_response_code\": \"TEMPORARY_REDIRECT\",\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/someprefix\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleUrlRedirectArgs\n {\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/someprefix\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.URLMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/someprefix\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .build())\n .urlRedirect(URLMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n matchRules:\n - prefixMatch: /someprefix\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n urlRedirect:\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Path\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n corsPolicy: {\n allowCredentials: true,\n allowHeaders: [\"Allowed content\"],\n allowMethods: [\"GET\"],\n allowOriginRegexes: [\"abc.*\"],\n allowOrigins: [\"Allowed origin\"],\n exposeHeaders: [\"Exposed header\"],\n maxAge: 30,\n disabled: false,\n },\n faultInjectionPolicy: {\n abort: {\n httpStatus: 234,\n percentage: 5.6,\n },\n delay: {\n fixedDelay: {\n seconds: \"0\",\n nanos: 50000,\n },\n percentage: 7.8,\n },\n },\n requestMirrorPolicy: {\n backendService: home.id,\n },\n retryPolicy: {\n numRetries: 4,\n perTryTimeout: {\n seconds: \"30\",\n },\n retryConditions: [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n timeout: {\n seconds: \"20\",\n nanos: 750000000,\n },\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe\"],\n requestHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [{\n \"paths\": [\"/home\"],\n \"route_action\": {\n \"cors_policy\": {\n \"allow_credentials\": True,\n \"allow_headers\": [\"Allowed content\"],\n \"allow_methods\": [\"GET\"],\n \"allow_origin_regexes\": [\"abc.*\"],\n \"allow_origins\": [\"Allowed origin\"],\n \"expose_headers\": [\"Exposed header\"],\n \"max_age\": 30,\n \"disabled\": False,\n },\n \"fault_injection_policy\": {\n \"abort\": {\n \"http_status\": 234,\n \"percentage\": 5.6,\n },\n \"delay\": {\n \"fixed_delay\": {\n \"seconds\": \"0\",\n \"nanos\": 50000,\n },\n \"percentage\": 7.8,\n },\n },\n \"request_mirror_policy\": {\n \"backend_service\": home.id,\n },\n \"retry_policy\": {\n \"num_retries\": 4,\n \"per_try_timeout\": {\n \"seconds\": \"30\",\n },\n \"retry_conditions\": [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n \"timeout\": {\n \"seconds\": \"20\",\n \"nanos\": 750000000,\n },\n \"url_rewrite\": {\n \"host_rewrite\": \"dev.example.com\",\n \"path_prefix_rewrite\": \"/v1/api/\",\n },\n \"weighted_backend_services\": [{\n \"backend_service\": home.id,\n \"weight\": 400,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionArgs\n {\n CorsPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs\n {\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"Allowed content\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowOriginRegexes = new[]\n {\n \"abc.*\",\n },\n AllowOrigins = new[]\n {\n \"Allowed origin\",\n },\n ExposeHeaders = new[]\n {\n \"Exposed header\",\n },\n MaxAge = 30,\n Disabled = false,\n },\n FaultInjectionPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs\n {\n Abort = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 234,\n Percentage = 5.6,\n },\n Delay = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs\n {\n Seconds = \"0\",\n Nanos = 50000,\n },\n Percentage = 7.8,\n },\n },\n RequestMirrorPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs\n {\n BackendService = home.Id,\n },\n RetryPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionRetryPolicyArgs\n {\n NumRetries = 4,\n PerTryTimeout = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"30\",\n },\n RetryConditions = new[]\n {\n \"5xx\",\n \"deadline-exceeded\",\n },\n },\n Timeout = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionTimeoutArgs\n {\n Seconds = \"20\",\n Nanos = 750000000,\n },\n UrlRewrite = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tCorsPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed content\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOriginRegexes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"abc.*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed origin\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Exposed header\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMaxAge: pulumi.Int(30),\n\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tFaultInjectionPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\t\t\tAbort: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(234),\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(5.6),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tDelay: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\t\t\tFixedDelay: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs{\n\t\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(50000),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(7.8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestMirrorPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRetryPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionRetryPolicyArgs{\n\t\t\t\t\t\t\t\t\tNumRetries: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tPerTryTimeout: \u0026compute.URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"30\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"deadline-exceeded\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tTimeout: \u0026compute.URLMapPathMatcherPathRuleRouteActionTimeoutArgs{\n\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"20\"),\n\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(750000000),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.URLMapPathMatcherPathRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(URLMapPathMatcherPathRuleRouteActionArgs.builder()\n .corsPolicy(URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs.builder()\n .allowCredentials(true)\n .allowHeaders(\"Allowed content\")\n .allowMethods(\"GET\")\n .allowOriginRegexes(\"abc.*\")\n .allowOrigins(\"Allowed origin\")\n .exposeHeaders(\"Exposed header\")\n .maxAge(30)\n .disabled(false)\n .build())\n .faultInjectionPolicy(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs.builder()\n .abort(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(234)\n .percentage(5.6)\n .build())\n .delay(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs.builder()\n .seconds(0)\n .nanos(50000)\n .build())\n .percentage(7.8)\n .build())\n .build())\n .requestMirrorPolicy(URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs.builder()\n .backendService(home.id())\n .build())\n .retryPolicy(URLMapPathMatcherPathRuleRouteActionRetryPolicyArgs.builder()\n .numRetries(4)\n .perTryTimeout(URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(30)\n .build())\n .retryConditions( \n \"5xx\",\n \"deadline-exceeded\")\n .build())\n .timeout(URLMapPathMatcherPathRuleRouteActionTimeoutArgs.builder()\n .seconds(20)\n .nanos(750000000)\n .build())\n .urlRewrite(URLMapPathMatcherPathRuleRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .weightedBackendServices(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe\")\n .requestHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe\")\n .responseHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n corsPolicy:\n allowCredentials: true\n allowHeaders:\n - Allowed content\n allowMethods:\n - GET\n allowOriginRegexes:\n - abc.*\n allowOrigins:\n - Allowed origin\n exposeHeaders:\n - Exposed header\n maxAge: 30\n disabled: false\n faultInjectionPolicy:\n abort:\n httpStatus: 234\n percentage: 5.6\n delay:\n fixedDelay:\n seconds: 0\n nanos: 50000\n percentage: 7.8\n requestMirrorPolicy:\n backendService: ${home.id}\n retryPolicy:\n numRetries: 4\n perTryTimeout:\n seconds: 30\n retryConditions:\n - 5xx\n - deadline-exceeded\n timeout:\n seconds: 20\n nanos: 7.5e+08\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe\n requestHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Path Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n corsPolicy: {\n allowCredentials: true,\n allowHeaders: [\"Allowed content\"],\n allowMethods: [\"GET\"],\n allowOriginRegexes: [\"abc.*\"],\n allowOrigins: [\"Allowed origin\"],\n exposeHeaders: [\"Exposed header\"],\n maxAge: 30,\n disabled: false,\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe\"],\n requestHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [{\n \"paths\": [\"/home\"],\n \"route_action\": {\n \"cors_policy\": {\n \"allow_credentials\": True,\n \"allow_headers\": [\"Allowed content\"],\n \"allow_methods\": [\"GET\"],\n \"allow_origin_regexes\": [\"abc.*\"],\n \"allow_origins\": [\"Allowed origin\"],\n \"expose_headers\": [\"Exposed header\"],\n \"max_age\": 30,\n \"disabled\": False,\n },\n \"weighted_backend_services\": [{\n \"backend_service\": home.id,\n \"weight\": 400,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionArgs\n {\n CorsPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs\n {\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"Allowed content\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowOriginRegexes = new[]\n {\n \"abc.*\",\n },\n AllowOrigins = new[]\n {\n \"Allowed origin\",\n },\n ExposeHeaders = new[]\n {\n \"Exposed header\",\n },\n MaxAge = 30,\n Disabled = false,\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tCorsPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed content\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOriginRegexes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"abc.*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed origin\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Exposed header\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMaxAge: pulumi.Int(30),\n\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(URLMapPathMatcherPathRuleRouteActionArgs.builder()\n .corsPolicy(URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs.builder()\n .allowCredentials(true)\n .allowHeaders(\"Allowed content\")\n .allowMethods(\"GET\")\n .allowOriginRegexes(\"abc.*\")\n .allowOrigins(\"Allowed origin\")\n .exposeHeaders(\"Exposed header\")\n .maxAge(30)\n .disabled(false)\n .build())\n .weightedBackendServices(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe\")\n .requestHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe\")\n .responseHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n corsPolicy:\n allowCredentials: true\n allowHeaders:\n - Allowed content\n allowMethods:\n - GET\n allowOriginRegexes:\n - abc.*\n allowOrigins:\n - Allowed origin\n exposeHeaders:\n - Exposed header\n maxAge: 30\n disabled: false\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe\n requestHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Header Based Routing\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"default\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_a = new gcp.compute.BackendService(\"service-a\", {\n name: \"service-a\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_b = new gcp.compute.BackendService(\"service-b\", {\n name: \"service-b\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"header-based routing example\",\n defaultService: _default.id,\n hostRules: [{\n hosts: [\"*\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: _default.id,\n routeRules: [\n {\n priority: 1,\n service: service_a.id,\n matchRules: [{\n prefixMatch: \"/\",\n ignoreCase: true,\n headerMatches: [{\n headerName: \"abtest\",\n exactMatch: \"a\",\n }],\n }],\n },\n {\n priority: 2,\n service: service_b.id,\n matchRules: [{\n ignoreCase: true,\n prefixMatch: \"/\",\n headerMatches: [{\n headerName: \"abtest\",\n exactMatch: \"b\",\n }],\n }],\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"default\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_a = gcp.compute.BackendService(\"service-a\",\n name=\"service-a\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_b = gcp.compute.BackendService(\"service-b\",\n name=\"service-b\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"header-based routing example\",\n default_service=default.id,\n host_rules=[{\n \"hosts\": [\"*\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default.id,\n \"route_rules\": [\n {\n \"priority\": 1,\n \"service\": service_a.id,\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n \"ignore_case\": True,\n \"header_matches\": [{\n \"header_name\": \"abtest\",\n \"exact_match\": \"a\",\n }],\n }],\n },\n {\n \"priority\": 2,\n \"service\": service_b.id,\n \"match_rules\": [{\n \"ignore_case\": True,\n \"prefix_match\": \"/\",\n \"header_matches\": [{\n \"header_name\": \"abtest\",\n \"exact_match\": \"b\",\n }],\n }],\n },\n ],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"default\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_a = new Gcp.Compute.BackendService(\"service-a\", new()\n {\n Name = \"service-a\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_b = new Gcp.Compute.BackendService(\"service-b\", new()\n {\n Name = \"service-b\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"header-based routing example\",\n DefaultService = @default.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"*\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = @default.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n Service = service_a.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n IgnoreCase = true,\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"abtest\",\n ExactMatch = \"a\",\n },\n },\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 2,\n Service = service_b.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n IgnoreCase = true,\n PrefixMatch = \"/\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"abtest\",\n ExactMatch = \"b\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"service-a\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-a\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"service-b\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-b\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"header-based routing example\"),\n\t\t\tDefaultService: _default.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: _default.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tService: service_a.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"a\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\t\t\tService: service_b.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"b\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"default\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_a = new BackendService(\"service-a\", BackendServiceArgs.builder()\n .name(\"service-a\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_b = new BackendService(\"service-b\", BackendServiceArgs.builder()\n .name(\"service-b\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"header-based routing example\")\n .defaultService(default_.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"*\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(default_.id())\n .routeRules( \n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .service(service_a.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .ignoreCase(true)\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"abtest\")\n .exactMatch(\"a\")\n .build())\n .build())\n .build(),\n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(2)\n .service(service_b.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .ignoreCase(true)\n .prefixMatch(\"/\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"abtest\")\n .exactMatch(\"b\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: header-based routing example\n defaultService: ${default.id}\n hostRules:\n - hosts:\n - '*'\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${default.id}\n routeRules:\n - priority: 1\n service: ${[\"service-a\"].id}\n matchRules:\n - prefixMatch: /\n ignoreCase: true\n headerMatches:\n - headerName: abtest\n exactMatch: a\n - priority: 2\n service: ${[\"service-b\"].id}\n matchRules:\n - ignoreCase: true\n prefixMatch: /\n headerMatches:\n - headerName: abtest\n exactMatch: b\n default:\n type: gcp:compute:BackendService\n properties:\n name: default\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-a:\n type: gcp:compute:BackendService\n properties:\n name: service-a\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-b:\n type: gcp:compute:BackendService\n properties:\n name: service-b\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Parameter Based Routing\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"default\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_a = new gcp.compute.BackendService(\"service-a\", {\n name: \"service-a\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_b = new gcp.compute.BackendService(\"service-b\", {\n name: \"service-b\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"parameter-based routing example\",\n defaultService: _default.id,\n hostRules: [{\n hosts: [\"*\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: _default.id,\n routeRules: [\n {\n priority: 1,\n service: service_a.id,\n matchRules: [{\n prefixMatch: \"/\",\n ignoreCase: true,\n queryParameterMatches: [{\n name: \"abtest\",\n exactMatch: \"a\",\n }],\n }],\n },\n {\n priority: 2,\n service: service_b.id,\n matchRules: [{\n ignoreCase: true,\n prefixMatch: \"/\",\n queryParameterMatches: [{\n name: \"abtest\",\n exactMatch: \"b\",\n }],\n }],\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"default\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_a = gcp.compute.BackendService(\"service-a\",\n name=\"service-a\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_b = gcp.compute.BackendService(\"service-b\",\n name=\"service-b\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"parameter-based routing example\",\n default_service=default.id,\n host_rules=[{\n \"hosts\": [\"*\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default.id,\n \"route_rules\": [\n {\n \"priority\": 1,\n \"service\": service_a.id,\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n \"ignore_case\": True,\n \"query_parameter_matches\": [{\n \"name\": \"abtest\",\n \"exact_match\": \"a\",\n }],\n }],\n },\n {\n \"priority\": 2,\n \"service\": service_b.id,\n \"match_rules\": [{\n \"ignore_case\": True,\n \"prefix_match\": \"/\",\n \"query_parameter_matches\": [{\n \"name\": \"abtest\",\n \"exact_match\": \"b\",\n }],\n }],\n },\n ],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"default\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_a = new Gcp.Compute.BackendService(\"service-a\", new()\n {\n Name = \"service-a\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_b = new Gcp.Compute.BackendService(\"service-b\", new()\n {\n Name = \"service-b\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"parameter-based routing example\",\n DefaultService = @default.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"*\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = @default.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n Service = service_a.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n IgnoreCase = true,\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"abtest\",\n ExactMatch = \"a\",\n },\n },\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 2,\n Service = service_b.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n IgnoreCase = true,\n PrefixMatch = \"/\",\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"abtest\",\n ExactMatch = \"b\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"service-a\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-a\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"service-b\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-b\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"parameter-based routing example\"),\n\t\t\tDefaultService: _default.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: _default.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tService: service_a.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"a\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\t\t\tService: service_b.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"b\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"default\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_a = new BackendService(\"service-a\", BackendServiceArgs.builder()\n .name(\"service-a\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_b = new BackendService(\"service-b\", BackendServiceArgs.builder()\n .name(\"service-b\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"parameter-based routing example\")\n .defaultService(default_.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"*\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(default_.id())\n .routeRules( \n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .service(service_a.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .ignoreCase(true)\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"abtest\")\n .exactMatch(\"a\")\n .build())\n .build())\n .build(),\n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(2)\n .service(service_b.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .ignoreCase(true)\n .prefixMatch(\"/\")\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"abtest\")\n .exactMatch(\"b\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: parameter-based routing example\n defaultService: ${default.id}\n hostRules:\n - hosts:\n - '*'\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${default.id}\n routeRules:\n - priority: 1\n service: ${[\"service-a\"].id}\n matchRules:\n - prefixMatch: /\n ignoreCase: true\n queryParameterMatches:\n - name: abtest\n exactMatch: a\n - priority: 2\n service: ${[\"service-b\"].id}\n matchRules:\n - ignoreCase: true\n prefixMatch: /\n queryParameterMatches:\n - name: abtest\n exactMatch: b\n default:\n type: gcp:compute:BackendService\n properties:\n name: default\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-a:\n type: gcp:compute:BackendService\n properties:\n name: service-a\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-b:\n type: gcp:compute:BackendService\n properties:\n name: service-b\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Path Template Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst cart_backend = new gcp.compute.BackendService(\"cart-backend\", {\n name: \"cart-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst user_backend = new gcp.compute.BackendService(\"user-backend\", {\n name: \"user-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst staticBucket = new gcp.storage.Bucket(\"static\", {\n name: \"static-asset-bucket\",\n location: \"US\",\n});\nconst static = new gcp.compute.BackendBucket(\"static\", {\n name: \"static-asset-backend-bucket\",\n bucketName: staticBucket.name,\n enableCdn: true,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: static.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n }],\n pathMatchers: [{\n name: \"mysite\",\n defaultService: static.id,\n routeRules: [\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n service: cart_backend.id,\n priority: 1,\n routeAction: {\n urlRewrite: {\n pathTemplateRewrite: \"/{username}-{cartid}/\",\n },\n },\n },\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n service: user_backend.id,\n priority: 2,\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ncart_backend = gcp.compute.BackendService(\"cart-backend\",\n name=\"cart-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nuser_backend = gcp.compute.BackendService(\"user-backend\",\n name=\"user-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nstatic_bucket = gcp.storage.Bucket(\"static\",\n name=\"static-asset-bucket\",\n location=\"US\")\nstatic = gcp.compute.BackendBucket(\"static\",\n name=\"static-asset-backend-bucket\",\n bucket_name=static_bucket.name,\n enable_cdn=True)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=static.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"mysite\",\n }],\n path_matchers=[{\n \"name\": \"mysite\",\n \"default_service\": static.id,\n \"route_rules\": [\n {\n \"match_rules\": [{\n \"path_template_match\": \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n \"service\": cart_backend.id,\n \"priority\": 1,\n \"route_action\": {\n \"url_rewrite\": {\n \"path_template_rewrite\": \"/{username}-{cartid}/\",\n },\n },\n },\n {\n \"match_rules\": [{\n \"path_template_match\": \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n \"service\": user_backend.id,\n \"priority\": 2,\n },\n ],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var cart_backend = new Gcp.Compute.BackendService(\"cart-backend\", new()\n {\n Name = \"cart-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var user_backend = new Gcp.Compute.BackendService(\"user-backend\", new()\n {\n Name = \"user-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var staticBucket = new Gcp.Storage.Bucket(\"static\", new()\n {\n Name = \"static-asset-bucket\",\n Location = \"US\",\n });\n\n var @static = new Gcp.Compute.BackendBucket(\"static\", new()\n {\n Name = \"static-asset-backend-bucket\",\n BucketName = staticBucket.Name,\n EnableCdn = true,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = @static.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = @static.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n },\n },\n Service = cart_backend.Id,\n Priority = 1,\n RouteAction = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleRouteActionArgs\n {\n UrlRewrite = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathTemplateRewrite = \"/{username}-{cartid}/\",\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n },\n },\n Service = user_backend.Id,\n Priority = 2,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"cart-backend\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"cart-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"user-backend\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"user-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstaticBucket, err := storage.NewBucket(ctx, \"static\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstatic, err := compute.NewBackendBucket(ctx, \"static\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-backend-bucket\"),\n\t\t\tBucketName: staticBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: static.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: static.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: cart_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tRouteAction: \u0026compute.URLMapPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.URLMapPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateRewrite: pulumi.String(\"/{username}-{cartid}/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: user_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var cart_backend = new BackendService(\"cart-backend\", BackendServiceArgs.builder()\n .name(\"cart-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var user_backend = new BackendService(\"user-backend\", BackendServiceArgs.builder()\n .name(\"user-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var staticBucket = new Bucket(\"staticBucket\", BucketArgs.builder()\n .name(\"static-asset-bucket\")\n .location(\"US\")\n .build());\n\n var static_ = new BackendBucket(\"static\", BackendBucketArgs.builder()\n .name(\"static-asset-backend-bucket\")\n .bucketName(staticBucket.name())\n .enableCdn(true)\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(static_.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(static_.id())\n .routeRules( \n URLMapPathMatcherRouteRuleArgs.builder()\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\")\n .build())\n .service(cart_backend.id())\n .priority(1)\n .routeAction(URLMapPathMatcherRouteRuleRouteActionArgs.builder()\n .urlRewrite(URLMapPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathTemplateRewrite(\"/{username}-{cartid}/\")\n .build())\n .build())\n .build(),\n URLMapPathMatcherRouteRuleArgs.builder()\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\")\n .build())\n .service(user_backend.id())\n .priority(2)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${static.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n pathMatchers:\n - name: mysite\n defaultService: ${static.id}\n routeRules:\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\n service: ${[\"cart-backend\"].id}\n priority: 1\n routeAction:\n urlRewrite:\n pathTemplateRewrite: /{username}-{cartid}/\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/*/accountinfo/*\n service: ${[\"user-backend\"].id}\n priority: 2\n cart-backend:\n type: gcp:compute:BackendService\n properties:\n name: cart-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n user-backend:\n type: gcp:compute:BackendService\n properties:\n name: user-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n static:\n type: gcp:compute:BackendBucket\n properties:\n name: static-asset-backend-bucket\n bucketName: ${staticBucket.name}\n enableCdn: true\n staticBucket:\n type: gcp:storage:Bucket\n name: static\n properties:\n name: static-asset-bucket\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Custom Error Response Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst example = new gcp.compute.BackendService(\"example\", {\n name: \"login\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst errorBucket = new gcp.storage.Bucket(\"error\", {\n name: \"static-asset-bucket\",\n location: \"US\",\n});\nconst error = new gcp.compute.BackendBucket(\"error\", {\n name: \"error-backend-bucket\",\n bucketName: errorBucket.name,\n enableCdn: true,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: example.id,\n defaultCustomErrorResponsePolicy: {\n errorResponseRules: [{\n matchResponseCodes: [\"5xx\"],\n path: \"/internal_error.html\",\n overrideResponseCode: 502,\n }],\n errorService: error.id,\n },\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n }],\n pathMatchers: [{\n name: \"mysite\",\n defaultService: example.id,\n defaultCustomErrorResponsePolicy: {\n errorResponseRules: [\n {\n matchResponseCodes: [\n \"4xx\",\n \"5xx\",\n ],\n path: \"/login_error.html\",\n overrideResponseCode: 404,\n },\n {\n matchResponseCodes: [\"503\"],\n path: \"/bad_gateway.html\",\n overrideResponseCode: 502,\n },\n ],\n errorService: error.id,\n },\n pathRules: [{\n paths: [\"/private/*\"],\n service: example.id,\n customErrorResponsePolicy: {\n errorResponseRules: [{\n matchResponseCodes: [\"4xx\"],\n path: \"/login.html\",\n overrideResponseCode: 401,\n }],\n errorService: error.id,\n },\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\nexample = gcp.compute.BackendService(\"example\",\n name=\"login\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nerror_bucket = gcp.storage.Bucket(\"error\",\n name=\"static-asset-bucket\",\n location=\"US\")\nerror = gcp.compute.BackendBucket(\"error\",\n name=\"error-backend-bucket\",\n bucket_name=error_bucket.name,\n enable_cdn=True)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=example.id,\n default_custom_error_response_policy={\n \"error_response_rules\": [{\n \"match_response_codes\": [\"5xx\"],\n \"path\": \"/internal_error.html\",\n \"override_response_code\": 502,\n }],\n \"error_service\": error.id,\n },\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"mysite\",\n }],\n path_matchers=[{\n \"name\": \"mysite\",\n \"default_service\": example.id,\n \"default_custom_error_response_policy\": {\n \"error_response_rules\": [\n {\n \"match_response_codes\": [\n \"4xx\",\n \"5xx\",\n ],\n \"path\": \"/login_error.html\",\n \"override_response_code\": 404,\n },\n {\n \"match_response_codes\": [\"503\"],\n \"path\": \"/bad_gateway.html\",\n \"override_response_code\": 502,\n },\n ],\n \"error_service\": error.id,\n },\n \"path_rules\": [{\n \"paths\": [\"/private/*\"],\n \"service\": example.id,\n \"custom_error_response_policy\": {\n \"error_response_rules\": [{\n \"match_response_codes\": [\"4xx\"],\n \"path\": \"/login.html\",\n \"override_response_code\": 401,\n }],\n \"error_service\": error.id,\n },\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var example = new Gcp.Compute.BackendService(\"example\", new()\n {\n Name = \"login\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var errorBucket = new Gcp.Storage.Bucket(\"error\", new()\n {\n Name = \"static-asset-bucket\",\n Location = \"US\",\n });\n\n var error = new Gcp.Compute.BackendBucket(\"error\", new()\n {\n Name = \"error-backend-bucket\",\n BucketName = errorBucket.Name,\n EnableCdn = true,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = example.Id,\n DefaultCustomErrorResponsePolicy = new Gcp.Compute.Inputs.URLMapDefaultCustomErrorResponsePolicyArgs\n {\n ErrorResponseRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"5xx\",\n },\n Path = \"/internal_error.html\",\n OverrideResponseCode = 502,\n },\n },\n ErrorService = error.Id,\n },\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = example.Id,\n DefaultCustomErrorResponsePolicy = new Gcp.Compute.Inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs\n {\n ErrorResponseRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"4xx\",\n \"5xx\",\n },\n Path = \"/login_error.html\",\n OverrideResponseCode = 404,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"503\",\n },\n Path = \"/bad_gateway.html\",\n OverrideResponseCode = 502,\n },\n },\n ErrorService = error.Id,\n },\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/private/*\",\n },\n Service = example.Id,\n CustomErrorResponsePolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleCustomErrorResponsePolicyArgs\n {\n ErrorResponseRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"4xx\",\n },\n Path = \"/login.html\",\n OverrideResponseCode = 401,\n },\n },\n ErrorService = error.Id,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := compute.NewBackendService(ctx, \"example\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terrorBucket, err := storage.NewBucket(ctx, \"error\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terror, err := compute.NewBackendBucket(ctx, \"error\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"error-backend-bucket\"),\n\t\t\tBucketName: errorBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: example.ID(),\n\t\t\tDefaultCustomErrorResponsePolicy: \u0026compute.URLMapDefaultCustomErrorResponsePolicyArgs{\n\t\t\t\tErrorResponseRules: compute.URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArray{\n\t\t\t\t\t\u0026compute.URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPath: pulumi.String(\"/internal_error.html\"),\n\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(502),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tErrorService: error.ID(),\n\t\t\t},\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: example.ID(),\n\t\t\t\t\tDefaultCustomErrorResponsePolicy: \u0026compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs{\n\t\t\t\t\t\tErrorResponseRules: compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArray{\n\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"4xx\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/login_error.html\"),\n\t\t\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(404),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"503\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/bad_gateway.html\"),\n\t\t\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(502),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tErrorService: error.ID(),\n\t\t\t\t\t},\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/private/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: example.ID(),\n\t\t\t\t\t\t\tCustomErrorResponsePolicy: \u0026compute.URLMapPathMatcherPathRuleCustomErrorResponsePolicyArgs{\n\t\t\t\t\t\t\t\tErrorResponseRules: compute.URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"4xx\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"/login.html\"),\n\t\t\t\t\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(401),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tErrorService: error.ID(),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapDefaultCustomErrorResponsePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var example = new BackendService(\"example\", BackendServiceArgs.builder()\n .name(\"login\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var errorBucket = new Bucket(\"errorBucket\", BucketArgs.builder()\n .name(\"static-asset-bucket\")\n .location(\"US\")\n .build());\n\n var error = new BackendBucket(\"error\", BackendBucketArgs.builder()\n .name(\"error-backend-bucket\")\n .bucketName(errorBucket.name())\n .enableCdn(true)\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(example.id())\n .defaultCustomErrorResponsePolicy(URLMapDefaultCustomErrorResponsePolicyArgs.builder()\n .errorResponseRules(URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes(\"5xx\")\n .path(\"/internal_error.html\")\n .overrideResponseCode(502)\n .build())\n .errorService(error.id())\n .build())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(example.id())\n .defaultCustomErrorResponsePolicy(URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs.builder()\n .errorResponseRules( \n URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes( \n \"4xx\",\n \"5xx\")\n .path(\"/login_error.html\")\n .overrideResponseCode(404)\n .build(),\n URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes(\"503\")\n .path(\"/bad_gateway.html\")\n .overrideResponseCode(502)\n .build())\n .errorService(error.id())\n .build())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/private/*\")\n .service(example.id())\n .customErrorResponsePolicy(URLMapPathMatcherPathRuleCustomErrorResponsePolicyArgs.builder()\n .errorResponseRules(URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes(\"4xx\")\n .path(\"/login.html\")\n .overrideResponseCode(401)\n .build())\n .errorService(error.id())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${example.id}\n defaultCustomErrorResponsePolicy:\n errorResponseRules:\n - matchResponseCodes:\n - 5xx\n path: /internal_error.html\n overrideResponseCode: 502\n errorService: ${error.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n pathMatchers:\n - name: mysite\n defaultService: ${example.id}\n defaultCustomErrorResponsePolicy:\n errorResponseRules:\n - matchResponseCodes:\n - 4xx\n - 5xx\n path: /login_error.html\n overrideResponseCode: 404\n - matchResponseCodes:\n - '503'\n path: /bad_gateway.html\n overrideResponseCode: 502\n errorService: ${error.id}\n pathRules:\n - paths:\n - /private/*\n service: ${example.id}\n customErrorResponsePolicy:\n errorResponseRules:\n - matchResponseCodes:\n - 4xx\n path: /login.html\n overrideResponseCode: 401\n errorService: ${error.id}\n example:\n type: gcp:compute:BackendService\n properties:\n name: login\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n error:\n type: gcp:compute:BackendBucket\n properties:\n name: error-backend-bucket\n bucketName: ${errorBucket.name}\n enableCdn: true\n errorBucket:\n type: gcp:storage:Bucket\n name: error\n properties:\n name: static-asset-bucket\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUrlMap can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/urlMaps/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, UrlMap can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/uRLMap:URLMap default projects/{{project}}/global/urlMaps/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/uRLMap:URLMap default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/uRLMap:URLMap default {{name}}\n```\n\n", + "description": "UrlMaps are used to route requests to a backend service based on rules\nthat you define for the host and path of an incoming URL.\n\n\nTo get more information about UrlMap, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/urlMaps)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/load-balancing/docs/url-map-concepts)\n\n## Example Usage\n\n### Url Map Bucket And Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst login = new gcp.compute.BackendService(\"login\", {\n name: \"login\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n});\nconst staticBucket = new gcp.storage.Bucket(\"static\", {\n name: \"static-asset-bucket\",\n location: \"US\",\n});\nconst static = new gcp.compute.BackendBucket(\"static\", {\n name: \"static-asset-backend-bucket\",\n bucketName: staticBucket.name,\n enableCdn: true,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: static.id,\n hostRules: [\n {\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n },\n {\n hosts: [\"myothersite.com\"],\n pathMatcher: \"otherpaths\",\n },\n ],\n pathMatchers: [\n {\n name: \"mysite\",\n defaultService: static.id,\n pathRules: [\n {\n paths: [\"/home\"],\n service: static.id,\n },\n {\n paths: [\"/login\"],\n service: login.id,\n },\n {\n paths: [\"/static\"],\n service: static.id,\n },\n ],\n },\n {\n name: \"otherpaths\",\n defaultService: static.id,\n },\n ],\n tests: [{\n service: static.id,\n host: \"example.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\nlogin = gcp.compute.BackendService(\"login\",\n name=\"login\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id)\nstatic_bucket = gcp.storage.Bucket(\"static\",\n name=\"static-asset-bucket\",\n location=\"US\")\nstatic = gcp.compute.BackendBucket(\"static\",\n name=\"static-asset-backend-bucket\",\n bucket_name=static_bucket.name,\n enable_cdn=True)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=static.id,\n host_rules=[\n {\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"mysite\",\n },\n {\n \"hosts\": [\"myothersite.com\"],\n \"path_matcher\": \"otherpaths\",\n },\n ],\n path_matchers=[\n {\n \"name\": \"mysite\",\n \"default_service\": static.id,\n \"path_rules\": [\n {\n \"paths\": [\"/home\"],\n \"service\": static.id,\n },\n {\n \"paths\": [\"/login\"],\n \"service\": login.id,\n },\n {\n \"paths\": [\"/static\"],\n \"service\": static.id,\n },\n ],\n },\n {\n \"name\": \"otherpaths\",\n \"default_service\": static.id,\n },\n ],\n tests=[{\n \"service\": static.id,\n \"host\": \"example.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var login = new Gcp.Compute.BackendService(\"login\", new()\n {\n Name = \"login\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n });\n\n var staticBucket = new Gcp.Storage.Bucket(\"static\", new()\n {\n Name = \"static-asset-bucket\",\n Location = \"US\",\n });\n\n var @static = new Gcp.Compute.BackendBucket(\"static\", new()\n {\n Name = \"static-asset-backend-bucket\",\n BucketName = staticBucket.Name,\n EnableCdn = true,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = @static.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"myothersite.com\",\n },\n PathMatcher = \"otherpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = @static.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n Service = @static.Id,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/login\",\n },\n Service = login.Id,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/static\",\n },\n Service = @static.Id,\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"otherpaths\",\n DefaultService = @static.Id,\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = @static.Id,\n Host = \"example.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_default, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlogin, err := compute.NewBackendService(ctx, \"login\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstaticBucket, err := storage.NewBucket(ctx, \"static\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstatic, err := compute.NewBackendBucket(ctx, \"static\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-backend-bucket\"),\n\t\t\tBucketName: staticBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: static.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"myothersite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"otherpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: static.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: static.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/login\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: login.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/static\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: static.ID(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"otherpaths\"),\n\t\t\t\t\tDefaultService: static.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: static.ID(),\n\t\t\t\t\tHost: pulumi.String(\"example.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var login = new BackendService(\"login\", BackendServiceArgs.builder()\n .name(\"login\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .build());\n\n var staticBucket = new Bucket(\"staticBucket\", BucketArgs.builder()\n .name(\"static-asset-bucket\")\n .location(\"US\")\n .build());\n\n var static_ = new BackendBucket(\"static\", BackendBucketArgs.builder()\n .name(\"static-asset-backend-bucket\")\n .bucketName(staticBucket.name())\n .enableCdn(true)\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(static_.id())\n .hostRules( \n URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build(),\n URLMapHostRuleArgs.builder()\n .hosts(\"myothersite.com\")\n .pathMatcher(\"otherpaths\")\n .build())\n .pathMatchers( \n URLMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(static_.id())\n .pathRules( \n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .service(static_.id())\n .build(),\n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/login\")\n .service(login.id())\n .build(),\n URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/static\")\n .service(static_.id())\n .build())\n .build(),\n URLMapPathMatcherArgs.builder()\n .name(\"otherpaths\")\n .defaultService(static_.id())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(static_.id())\n .host(\"example.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${static.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n - hosts:\n - myothersite.com\n pathMatcher: otherpaths\n pathMatchers:\n - name: mysite\n defaultService: ${static.id}\n pathRules:\n - paths:\n - /home\n service: ${static.id}\n - paths:\n - /login\n service: ${login.id}\n - paths:\n - /static\n service: ${static.id}\n - name: otherpaths\n defaultService: ${static.id}\n tests:\n - service: ${static.id}\n host: example.com\n path: /home\n login:\n type: gcp:compute:BackendService\n properties:\n name: login\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n static:\n type: gcp:compute:BackendBucket\n properties:\n name: static-asset-backend-bucket\n bucketName: ${staticBucket.name}\n enableCdn: true\n staticBucket:\n type: gcp:storage:Bucket\n name: static\n properties:\n name: static-asset-bucket\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Route\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe2\"],\n requestHeadersToAdds: [{\n headerName: \"AddSomethingElse\",\n headerValue: \"MyOtherValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe3\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n matchRules: [{\n fullPathMatch: \"a full path\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n ignoreCase: true,\n metadataFilters: [{\n filterMatchCriteria: \"MATCH_ANY\",\n filterLabels: [{\n name: \"PLANET\",\n value: \"MARS\",\n }],\n }],\n queryParameterMatches: [{\n name: \"a query parameter\",\n presentMatch: true,\n }],\n }],\n urlRedirect: {\n hostRedirect: \"A host\",\n httpsRedirect: false,\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n stripQuery: true,\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe2\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddSomethingElse\",\n \"header_value\": \"MyOtherValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe3\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n \"match_rules\": [{\n \"full_path_match\": \"a full path\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n \"ignore_case\": True,\n \"metadata_filters\": [{\n \"filter_match_criteria\": \"MATCH_ANY\",\n \"filter_labels\": [{\n \"name\": \"PLANET\",\n \"value\": \"MARS\",\n }],\n }],\n \"query_parameter_matches\": [{\n \"name\": \"a query parameter\",\n \"present_match\": True,\n }],\n }],\n \"url_redirect\": {\n \"host_redirect\": \"A host\",\n \"https_redirect\": False,\n \"path_redirect\": \"some/path\",\n \"redirect_response_code\": \"TEMPORARY_REDIRECT\",\n \"strip_query\": True,\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe2\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddSomethingElse\",\n HeaderValue = \"MyOtherValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe3\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n FullPathMatch = \"a full path\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n IgnoreCase = true,\n MetadataFilters = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs\n {\n FilterMatchCriteria = \"MATCH_ANY\",\n FilterLabels = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs\n {\n Name = \"PLANET\",\n Value = \"MARS\",\n },\n },\n },\n },\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"a query parameter\",\n PresentMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleUrlRedirectArgs\n {\n HostRedirect = \"A host\",\n HttpsRedirect = false,\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n StripQuery = true,\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherRouteRuleHeaderActionArgs{\n\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe2\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddSomethingElse\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyOtherValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe3\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tFullPathMatch: pulumi.String(\"a full path\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tMetadataFilters: compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs{\n\t\t\t\t\t\t\t\t\t\t\tFilterMatchCriteria: pulumi.String(\"MATCH_ANY\"),\n\t\t\t\t\t\t\t\t\t\t\tFilterLabels: compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"PLANET\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tValue: pulumi.String(\"MARS\"),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"a query parameter\"),\n\t\t\t\t\t\t\t\t\t\t\tPresentMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.URLMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tHostRedirect: pulumi.String(\"A host\"),\n\t\t\t\t\t\t\t\tHttpsRedirect: pulumi.Bool(false),\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\t\t\t\tStripQuery: pulumi.Bool(true),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .headerAction(URLMapPathMatcherRouteRuleHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe2\")\n .requestHeadersToAdds(URLMapPathMatcherRouteRuleHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddSomethingElse\")\n .headerValue(\"MyOtherValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe3\")\n .responseHeadersToAdds(URLMapPathMatcherRouteRuleHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .fullPathMatch(\"a full path\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .ignoreCase(true)\n .metadataFilters(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterArgs.builder()\n .filterMatchCriteria(\"MATCH_ANY\")\n .filterLabels(URLMapPathMatcherRouteRuleMatchRuleMetadataFilterFilterLabelArgs.builder()\n .name(\"PLANET\")\n .value(\"MARS\")\n .build())\n .build())\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"a query parameter\")\n .presentMatch(true)\n .build())\n .build())\n .urlRedirect(URLMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .hostRedirect(\"A host\")\n .httpsRedirect(false)\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .stripQuery(true)\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe2\n requestHeadersToAdds:\n - headerName: AddSomethingElse\n headerValue: MyOtherValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe3\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n matchRules:\n - fullPathMatch: a full path\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n ignoreCase: true\n metadataFilters:\n - filterMatchCriteria: MATCH_ANY\n filterLabels:\n - name: PLANET\n value: MARS\n queryParameterMatches:\n - name: a query parameter\n presentMatch: true\n urlRedirect:\n hostRedirect: A host\n httpsRedirect: false\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n stripQuery: true\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Route Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n routeRules: [{\n priority: 1,\n matchRules: [{\n prefixMatch: \"/someprefix\",\n headerMatches: [{\n headerName: \"someheader\",\n exactMatch: \"match this exactly\",\n invertMatch: true,\n }],\n }],\n urlRedirect: {\n pathRedirect: \"some/path\",\n redirectResponseCode: \"TEMPORARY_REDIRECT\",\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"route_rules\": [{\n \"priority\": 1,\n \"match_rules\": [{\n \"prefix_match\": \"/someprefix\",\n \"header_matches\": [{\n \"header_name\": \"someheader\",\n \"exact_match\": \"match this exactly\",\n \"invert_match\": True,\n }],\n }],\n \"url_redirect\": {\n \"path_redirect\": \"some/path\",\n \"redirect_response_code\": \"TEMPORARY_REDIRECT\",\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/someprefix\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"someheader\",\n ExactMatch = \"match this exactly\",\n InvertMatch = true,\n },\n },\n },\n },\n UrlRedirect = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleUrlRedirectArgs\n {\n PathRedirect = \"some/path\",\n RedirectResponseCode = \"TEMPORARY_REDIRECT\",\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/someprefix\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"someheader\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"match this exactly\"),\n\t\t\t\t\t\t\t\t\t\t\tInvertMatch: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tUrlRedirect: \u0026compute.URLMapPathMatcherRouteRuleUrlRedirectArgs{\n\t\t\t\t\t\t\t\tPathRedirect: pulumi.String(\"some/path\"),\n\t\t\t\t\t\t\t\tRedirectResponseCode: pulumi.String(\"TEMPORARY_REDIRECT\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .routeRules(URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/someprefix\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"someheader\")\n .exactMatch(\"match this exactly\")\n .invertMatch(true)\n .build())\n .build())\n .urlRedirect(URLMapPathMatcherRouteRuleUrlRedirectArgs.builder()\n .pathRedirect(\"some/path\")\n .redirectResponseCode(\"TEMPORARY_REDIRECT\")\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n routeRules:\n - priority: 1\n matchRules:\n - prefixMatch: /someprefix\n headerMatches:\n - headerName: someheader\n exactMatch: match this exactly\n invertMatch: true\n urlRedirect:\n pathRedirect: some/path\n redirectResponseCode: TEMPORARY_REDIRECT\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Path\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n corsPolicy: {\n allowCredentials: true,\n allowHeaders: [\"Allowed content\"],\n allowMethods: [\"GET\"],\n allowOriginRegexes: [\"abc.*\"],\n allowOrigins: [\"Allowed origin\"],\n exposeHeaders: [\"Exposed header\"],\n maxAge: 30,\n disabled: false,\n },\n faultInjectionPolicy: {\n abort: {\n httpStatus: 234,\n percentage: 5.6,\n },\n delay: {\n fixedDelay: {\n seconds: \"0\",\n nanos: 50000,\n },\n percentage: 7.8,\n },\n },\n requestMirrorPolicy: {\n backendService: home.id,\n },\n retryPolicy: {\n numRetries: 4,\n perTryTimeout: {\n seconds: \"30\",\n },\n retryConditions: [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n timeout: {\n seconds: \"20\",\n nanos: 750000000,\n },\n urlRewrite: {\n hostRewrite: \"dev.example.com\",\n pathPrefixRewrite: \"/v1/api/\",\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe\"],\n requestHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [{\n \"paths\": [\"/home\"],\n \"route_action\": {\n \"cors_policy\": {\n \"allow_credentials\": True,\n \"allow_headers\": [\"Allowed content\"],\n \"allow_methods\": [\"GET\"],\n \"allow_origin_regexes\": [\"abc.*\"],\n \"allow_origins\": [\"Allowed origin\"],\n \"expose_headers\": [\"Exposed header\"],\n \"max_age\": 30,\n \"disabled\": False,\n },\n \"fault_injection_policy\": {\n \"abort\": {\n \"http_status\": 234,\n \"percentage\": 5.6,\n },\n \"delay\": {\n \"fixed_delay\": {\n \"seconds\": \"0\",\n \"nanos\": 50000,\n },\n \"percentage\": 7.8,\n },\n },\n \"request_mirror_policy\": {\n \"backend_service\": home.id,\n },\n \"retry_policy\": {\n \"num_retries\": 4,\n \"per_try_timeout\": {\n \"seconds\": \"30\",\n },\n \"retry_conditions\": [\n \"5xx\",\n \"deadline-exceeded\",\n ],\n },\n \"timeout\": {\n \"seconds\": \"20\",\n \"nanos\": 750000000,\n },\n \"url_rewrite\": {\n \"host_rewrite\": \"dev.example.com\",\n \"path_prefix_rewrite\": \"/v1/api/\",\n },\n \"weighted_backend_services\": [{\n \"backend_service\": home.id,\n \"weight\": 400,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionArgs\n {\n CorsPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs\n {\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"Allowed content\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowOriginRegexes = new[]\n {\n \"abc.*\",\n },\n AllowOrigins = new[]\n {\n \"Allowed origin\",\n },\n ExposeHeaders = new[]\n {\n \"Exposed header\",\n },\n MaxAge = 30,\n Disabled = false,\n },\n FaultInjectionPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs\n {\n Abort = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs\n {\n HttpStatus = 234,\n Percentage = 5.6,\n },\n Delay = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs\n {\n FixedDelay = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs\n {\n Seconds = \"0\",\n Nanos = 50000,\n },\n Percentage = 7.8,\n },\n },\n RequestMirrorPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs\n {\n BackendService = home.Id,\n },\n RetryPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionRetryPolicyArgs\n {\n NumRetries = 4,\n PerTryTimeout = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs\n {\n Seconds = \"30\",\n },\n RetryConditions = new[]\n {\n \"5xx\",\n \"deadline-exceeded\",\n },\n },\n Timeout = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionTimeoutArgs\n {\n Seconds = \"20\",\n Nanos = 750000000,\n },\n UrlRewrite = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionUrlRewriteArgs\n {\n HostRewrite = \"dev.example.com\",\n PathPrefixRewrite = \"/v1/api/\",\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tCorsPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed content\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOriginRegexes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"abc.*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed origin\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Exposed header\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMaxAge: pulumi.Int(30),\n\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tFaultInjectionPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs{\n\t\t\t\t\t\t\t\t\tAbort: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs{\n\t\t\t\t\t\t\t\t\t\tHttpStatus: pulumi.Int(234),\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(5.6),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tDelay: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs{\n\t\t\t\t\t\t\t\t\t\tFixedDelay: \u0026compute.URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs{\n\t\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"0\"),\n\t\t\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(50000),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tPercentage: pulumi.Float64(7.8),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRequestMirrorPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs{\n\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tRetryPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionRetryPolicyArgs{\n\t\t\t\t\t\t\t\t\tNumRetries: pulumi.Int(4),\n\t\t\t\t\t\t\t\t\tPerTryTimeout: \u0026compute.URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs{\n\t\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"30\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tRetryConditions: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"deadline-exceeded\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tTimeout: \u0026compute.URLMapPathMatcherPathRuleRouteActionTimeoutArgs{\n\t\t\t\t\t\t\t\t\tSeconds: pulumi.String(\"20\"),\n\t\t\t\t\t\t\t\t\tNanos: pulumi.Int(750000000),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.URLMapPathMatcherPathRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tHostRewrite: pulumi.String(\"dev.example.com\"),\n\t\t\t\t\t\t\t\t\tPathPrefixRewrite: pulumi.String(\"/v1/api/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(URLMapPathMatcherPathRuleRouteActionArgs.builder()\n .corsPolicy(URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs.builder()\n .allowCredentials(true)\n .allowHeaders(\"Allowed content\")\n .allowMethods(\"GET\")\n .allowOriginRegexes(\"abc.*\")\n .allowOrigins(\"Allowed origin\")\n .exposeHeaders(\"Exposed header\")\n .maxAge(30)\n .disabled(false)\n .build())\n .faultInjectionPolicy(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyArgs.builder()\n .abort(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyAbortArgs.builder()\n .httpStatus(234)\n .percentage(5.6)\n .build())\n .delay(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayArgs.builder()\n .fixedDelay(URLMapPathMatcherPathRuleRouteActionFaultInjectionPolicyDelayFixedDelayArgs.builder()\n .seconds(0)\n .nanos(50000)\n .build())\n .percentage(7.8)\n .build())\n .build())\n .requestMirrorPolicy(URLMapPathMatcherPathRuleRouteActionRequestMirrorPolicyArgs.builder()\n .backendService(home.id())\n .build())\n .retryPolicy(URLMapPathMatcherPathRuleRouteActionRetryPolicyArgs.builder()\n .numRetries(4)\n .perTryTimeout(URLMapPathMatcherPathRuleRouteActionRetryPolicyPerTryTimeoutArgs.builder()\n .seconds(30)\n .build())\n .retryConditions( \n \"5xx\",\n \"deadline-exceeded\")\n .build())\n .timeout(URLMapPathMatcherPathRuleRouteActionTimeoutArgs.builder()\n .seconds(20)\n .nanos(750000000)\n .build())\n .urlRewrite(URLMapPathMatcherPathRuleRouteActionUrlRewriteArgs.builder()\n .hostRewrite(\"dev.example.com\")\n .pathPrefixRewrite(\"/v1/api/\")\n .build())\n .weightedBackendServices(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe\")\n .requestHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe\")\n .responseHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n corsPolicy:\n allowCredentials: true\n allowHeaders:\n - Allowed content\n allowMethods:\n - GET\n allowOriginRegexes:\n - abc.*\n allowOrigins:\n - Allowed origin\n exposeHeaders:\n - Exposed header\n maxAge: 30\n disabled: false\n faultInjectionPolicy:\n abort:\n httpStatus: 234\n percentage: 5.6\n delay:\n fixedDelay:\n seconds: 0\n nanos: 50000\n percentage: 7.8\n requestMirrorPolicy:\n backendService: ${home.id}\n retryPolicy:\n numRetries: 4\n perTryTimeout:\n seconds: 30\n retryConditions:\n - 5xx\n - deadline-exceeded\n timeout:\n seconds: 20\n nanos: 7.5e+08\n urlRewrite:\n hostRewrite: dev.example.com\n pathPrefixRewrite: /v1/api/\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe\n requestHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Traffic Director Path Partial\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HealthCheck(\"default\", {\n name: \"health-check\",\n httpHealthCheck: {\n port: 80,\n },\n});\nconst home = new gcp.compute.BackendService(\"home\", {\n name: \"home\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: _default.id,\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: home.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: home.id,\n pathRules: [{\n paths: [\"/home\"],\n routeAction: {\n corsPolicy: {\n allowCredentials: true,\n allowHeaders: [\"Allowed content\"],\n allowMethods: [\"GET\"],\n allowOriginRegexes: [\"abc.*\"],\n allowOrigins: [\"Allowed origin\"],\n exposeHeaders: [\"Exposed header\"],\n maxAge: 30,\n disabled: false,\n },\n weightedBackendServices: [{\n backendService: home.id,\n weight: 400,\n headerAction: {\n requestHeadersToRemoves: [\"RemoveMe\"],\n requestHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: true,\n }],\n responseHeadersToRemoves: [\"RemoveMe\"],\n responseHeadersToAdds: [{\n headerName: \"AddMe\",\n headerValue: \"MyValue\",\n replace: false,\n }],\n },\n }],\n },\n }],\n }],\n tests: [{\n service: home.id,\n host: \"hi.com\",\n path: \"/home\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HealthCheck(\"default\",\n name=\"health-check\",\n http_health_check={\n \"port\": 80,\n })\nhome = gcp.compute.BackendService(\"home\",\n name=\"home\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default.id,\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\")\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=home.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": home.id,\n \"path_rules\": [{\n \"paths\": [\"/home\"],\n \"route_action\": {\n \"cors_policy\": {\n \"allow_credentials\": True,\n \"allow_headers\": [\"Allowed content\"],\n \"allow_methods\": [\"GET\"],\n \"allow_origin_regexes\": [\"abc.*\"],\n \"allow_origins\": [\"Allowed origin\"],\n \"expose_headers\": [\"Exposed header\"],\n \"max_age\": 30,\n \"disabled\": False,\n },\n \"weighted_backend_services\": [{\n \"backend_service\": home.id,\n \"weight\": 400,\n \"header_action\": {\n \"request_headers_to_removes\": [\"RemoveMe\"],\n \"request_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": True,\n }],\n \"response_headers_to_removes\": [\"RemoveMe\"],\n \"response_headers_to_adds\": [{\n \"header_name\": \"AddMe\",\n \"header_value\": \"MyValue\",\n \"replace\": False,\n }],\n },\n }],\n },\n }],\n }],\n tests=[{\n \"service\": home.id,\n \"host\": \"hi.com\",\n \"path\": \"/home\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var home = new Gcp.Compute.BackendService(\"home\", new()\n {\n Name = \"home\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = @default.Id,\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = home.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = home.Id,\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/home\",\n },\n RouteAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionArgs\n {\n CorsPolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs\n {\n AllowCredentials = true,\n AllowHeaders = new[]\n {\n \"Allowed content\",\n },\n AllowMethods = new[]\n {\n \"GET\",\n },\n AllowOriginRegexes = new[]\n {\n \"abc.*\",\n },\n AllowOrigins = new[]\n {\n \"Allowed origin\",\n },\n ExposeHeaders = new[]\n {\n \"Exposed header\",\n },\n MaxAge = 30,\n Disabled = false,\n },\n WeightedBackendServices = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs\n {\n BackendService = home.Id,\n Weight = 400,\n HeaderAction = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs\n {\n RequestHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n RequestHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = true,\n },\n },\n ResponseHeadersToRemoves = new[]\n {\n \"RemoveMe\",\n },\n ResponseHeadersToAdds = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs\n {\n HeaderName = \"AddMe\",\n HeaderValue = \"MyValue\",\n Replace = false,\n },\n },\n },\n },\n },\n },\n },\n },\n },\n },\n Tests = new[]\n {\n new Gcp.Compute.Inputs.URLMapTestArgs\n {\n Service = home.Id,\n Host = \"hi.com\",\n Path = \"/home\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\thome, err := compute.NewBackendService(ctx, \"home\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"home\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: _default.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: home.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: home.ID(),\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/home\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tRouteAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tCorsPolicy: \u0026compute.URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs{\n\t\t\t\t\t\t\t\t\tAllowCredentials: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tAllowHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed content\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowMethods: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"GET\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOriginRegexes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"abc.*\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tAllowOrigins: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Allowed origin\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tExposeHeaders: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\tpulumi.String(\"Exposed header\"),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\tMaxAge: pulumi.Int(30),\n\t\t\t\t\t\t\t\t\tDisabled: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tWeightedBackendServices: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs{\n\t\t\t\t\t\t\t\t\t\tBackendService: home.ID(),\n\t\t\t\t\t\t\t\t\t\tWeight: pulumi.Int(400),\n\t\t\t\t\t\t\t\t\t\tHeaderAction: \u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs{\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tRequestHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToRemoves: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"RemoveMe\"),\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\tResponseHeadersToAdds: compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArray{\n\t\t\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs{\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"AddMe\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tHeaderValue: pulumi.String(\"MyValue\"),\n\t\t\t\t\t\t\t\t\t\t\t\t\tReplace: pulumi.Bool(false),\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tTests: compute.URLMapTestArray{\n\t\t\t\t\u0026compute.URLMapTestArgs{\n\t\t\t\t\tService: home.ID(),\n\t\t\t\t\tHost: pulumi.String(\"hi.com\"),\n\t\t\t\t\tPath: pulumi.String(\"/home\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapTestArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HealthCheck(\"default\", HealthCheckArgs.builder()\n .name(\"health-check\")\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .port(80)\n .build())\n .build());\n\n var home = new BackendService(\"home\", BackendServiceArgs.builder()\n .name(\"home\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(default_.id())\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(home.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(home.id())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/home\")\n .routeAction(URLMapPathMatcherPathRuleRouteActionArgs.builder()\n .corsPolicy(URLMapPathMatcherPathRuleRouteActionCorsPolicyArgs.builder()\n .allowCredentials(true)\n .allowHeaders(\"Allowed content\")\n .allowMethods(\"GET\")\n .allowOriginRegexes(\"abc.*\")\n .allowOrigins(\"Allowed origin\")\n .exposeHeaders(\"Exposed header\")\n .maxAge(30)\n .disabled(false)\n .build())\n .weightedBackendServices(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceArgs.builder()\n .backendService(home.id())\n .weight(400)\n .headerAction(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionArgs.builder()\n .requestHeadersToRemoves(\"RemoveMe\")\n .requestHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionRequestHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(true)\n .build())\n .responseHeadersToRemoves(\"RemoveMe\")\n .responseHeadersToAdds(URLMapPathMatcherPathRuleRouteActionWeightedBackendServiceHeaderActionResponseHeadersToAddArgs.builder()\n .headerName(\"AddMe\")\n .headerValue(\"MyValue\")\n .replace(false)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build())\n .tests(URLMapTestArgs.builder()\n .service(home.id())\n .host(\"hi.com\")\n .path(\"/home\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${home.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${home.id}\n pathRules:\n - paths:\n - /home\n routeAction:\n corsPolicy:\n allowCredentials: true\n allowHeaders:\n - Allowed content\n allowMethods:\n - GET\n allowOriginRegexes:\n - abc.*\n allowOrigins:\n - Allowed origin\n exposeHeaders:\n - Exposed header\n maxAge: 30\n disabled: false\n weightedBackendServices:\n - backendService: ${home.id}\n weight: 400\n headerAction:\n requestHeadersToRemoves:\n - RemoveMe\n requestHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: true\n responseHeadersToRemoves:\n - RemoveMe\n responseHeadersToAdds:\n - headerName: AddMe\n headerValue: MyValue\n replace: false\n tests:\n - service: ${home.id}\n host: hi.com\n path: /home\n home:\n type: gcp:compute:BackendService\n properties:\n name: home\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${default.id}\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n default:\n type: gcp:compute:HealthCheck\n properties:\n name: health-check\n httpHealthCheck:\n port: 80\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Header Based Routing\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"default\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_a = new gcp.compute.BackendService(\"service-a\", {\n name: \"service-a\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_b = new gcp.compute.BackendService(\"service-b\", {\n name: \"service-b\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"header-based routing example\",\n defaultService: _default.id,\n hostRules: [{\n hosts: [\"*\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: _default.id,\n routeRules: [\n {\n priority: 1,\n service: service_a.id,\n matchRules: [{\n prefixMatch: \"/\",\n ignoreCase: true,\n headerMatches: [{\n headerName: \"abtest\",\n exactMatch: \"a\",\n }],\n }],\n },\n {\n priority: 2,\n service: service_b.id,\n matchRules: [{\n ignoreCase: true,\n prefixMatch: \"/\",\n headerMatches: [{\n headerName: \"abtest\",\n exactMatch: \"b\",\n }],\n }],\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"default\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_a = gcp.compute.BackendService(\"service-a\",\n name=\"service-a\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_b = gcp.compute.BackendService(\"service-b\",\n name=\"service-b\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"header-based routing example\",\n default_service=default.id,\n host_rules=[{\n \"hosts\": [\"*\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default.id,\n \"route_rules\": [\n {\n \"priority\": 1,\n \"service\": service_a.id,\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n \"ignore_case\": True,\n \"header_matches\": [{\n \"header_name\": \"abtest\",\n \"exact_match\": \"a\",\n }],\n }],\n },\n {\n \"priority\": 2,\n \"service\": service_b.id,\n \"match_rules\": [{\n \"ignore_case\": True,\n \"prefix_match\": \"/\",\n \"header_matches\": [{\n \"header_name\": \"abtest\",\n \"exact_match\": \"b\",\n }],\n }],\n },\n ],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"default\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_a = new Gcp.Compute.BackendService(\"service-a\", new()\n {\n Name = \"service-a\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_b = new Gcp.Compute.BackendService(\"service-b\", new()\n {\n Name = \"service-b\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"header-based routing example\",\n DefaultService = @default.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"*\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = @default.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n Service = service_a.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n IgnoreCase = true,\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"abtest\",\n ExactMatch = \"a\",\n },\n },\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 2,\n Service = service_b.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n IgnoreCase = true,\n PrefixMatch = \"/\",\n HeaderMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs\n {\n HeaderName = \"abtest\",\n ExactMatch = \"b\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservice_a, err := compute.NewBackendService(ctx, \"service-a\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-a\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservice_b, err := compute.NewBackendService(ctx, \"service-b\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-b\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"header-based routing example\"),\n\t\t\tDefaultService: _default.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: _default.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tService: service_a.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"a\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\t\t\tService: service_b.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tHeaderMatches: compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tHeaderName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"b\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"default\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_a = new BackendService(\"service-a\", BackendServiceArgs.builder()\n .name(\"service-a\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_b = new BackendService(\"service-b\", BackendServiceArgs.builder()\n .name(\"service-b\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"header-based routing example\")\n .defaultService(default_.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"*\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(default_.id())\n .routeRules( \n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .service(service_a.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .ignoreCase(true)\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"abtest\")\n .exactMatch(\"a\")\n .build())\n .build())\n .build(),\n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(2)\n .service(service_b.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .ignoreCase(true)\n .prefixMatch(\"/\")\n .headerMatches(URLMapPathMatcherRouteRuleMatchRuleHeaderMatchArgs.builder()\n .headerName(\"abtest\")\n .exactMatch(\"b\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: header-based routing example\n defaultService: ${default.id}\n hostRules:\n - hosts:\n - '*'\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${default.id}\n routeRules:\n - priority: 1\n service: ${[\"service-a\"].id}\n matchRules:\n - prefixMatch: /\n ignoreCase: true\n headerMatches:\n - headerName: abtest\n exactMatch: a\n - priority: 2\n service: ${[\"service-b\"].id}\n matchRules:\n - ignoreCase: true\n prefixMatch: /\n headerMatches:\n - headerName: abtest\n exactMatch: b\n default:\n type: gcp:compute:BackendService\n properties:\n name: default\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-a:\n type: gcp:compute:BackendService\n properties:\n name: service-a\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-b:\n type: gcp:compute:BackendService\n properties:\n name: service-b\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Parameter Based Routing\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"default\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_a = new gcp.compute.BackendService(\"service-a\", {\n name: \"service-a\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst service_b = new gcp.compute.BackendService(\"service-b\", {\n name: \"service-b\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"parameter-based routing example\",\n defaultService: _default.id,\n hostRules: [{\n hosts: [\"*\"],\n pathMatcher: \"allpaths\",\n }],\n pathMatchers: [{\n name: \"allpaths\",\n defaultService: _default.id,\n routeRules: [\n {\n priority: 1,\n service: service_a.id,\n matchRules: [{\n prefixMatch: \"/\",\n ignoreCase: true,\n queryParameterMatches: [{\n name: \"abtest\",\n exactMatch: \"a\",\n }],\n }],\n },\n {\n priority: 2,\n service: service_b.id,\n matchRules: [{\n ignoreCase: true,\n prefixMatch: \"/\",\n queryParameterMatches: [{\n name: \"abtest\",\n exactMatch: \"b\",\n }],\n }],\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"default\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_a = gcp.compute.BackendService(\"service-a\",\n name=\"service-a\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nservice_b = gcp.compute.BackendService(\"service-b\",\n name=\"service-b\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n health_checks=default_http_health_check.id)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"parameter-based routing example\",\n default_service=default.id,\n host_rules=[{\n \"hosts\": [\"*\"],\n \"path_matcher\": \"allpaths\",\n }],\n path_matchers=[{\n \"name\": \"allpaths\",\n \"default_service\": default.id,\n \"route_rules\": [\n {\n \"priority\": 1,\n \"service\": service_a.id,\n \"match_rules\": [{\n \"prefix_match\": \"/\",\n \"ignore_case\": True,\n \"query_parameter_matches\": [{\n \"name\": \"abtest\",\n \"exact_match\": \"a\",\n }],\n }],\n },\n {\n \"priority\": 2,\n \"service\": service_b.id,\n \"match_rules\": [{\n \"ignore_case\": True,\n \"prefix_match\": \"/\",\n \"query_parameter_matches\": [{\n \"name\": \"abtest\",\n \"exact_match\": \"b\",\n }],\n }],\n },\n ],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"default\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_a = new Gcp.Compute.BackendService(\"service-a\", new()\n {\n Name = \"service-a\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var service_b = new Gcp.Compute.BackendService(\"service-b\", new()\n {\n Name = \"service-b\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"parameter-based routing example\",\n DefaultService = @default.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"*\",\n },\n PathMatcher = \"allpaths\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"allpaths\",\n DefaultService = @default.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 1,\n Service = service_a.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PrefixMatch = \"/\",\n IgnoreCase = true,\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"abtest\",\n ExactMatch = \"a\",\n },\n },\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n Priority = 2,\n Service = service_b.Id,\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n IgnoreCase = true,\n PrefixMatch = \"/\",\n QueryParameterMatches = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs\n {\n Name = \"abtest\",\n ExactMatch = \"b\",\n },\n },\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservice_a, err := compute.NewBackendService(ctx, \"service-a\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-a\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tservice_b, err := compute.NewBackendService(ctx, \"service-b\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"service-b\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"parameter-based routing example\"),\n\t\t\tDefaultService: _default.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"allpaths\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"allpaths\"),\n\t\t\t\t\tDefaultService: _default.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tService: service_a.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"a\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\t\t\tService: service_b.ID(),\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tIgnoreCase: pulumi.Bool(true),\n\t\t\t\t\t\t\t\t\tPrefixMatch: pulumi.String(\"/\"),\n\t\t\t\t\t\t\t\t\tQueryParameterMatches: compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArray{\n\t\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs{\n\t\t\t\t\t\t\t\t\t\t\tName: pulumi.String(\"abtest\"),\n\t\t\t\t\t\t\t\t\t\t\tExactMatch: pulumi.String(\"b\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"default\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_a = new BackendService(\"service-a\", BackendServiceArgs.builder()\n .name(\"service-a\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var service_b = new BackendService(\"service-b\", BackendServiceArgs.builder()\n .name(\"service-b\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"parameter-based routing example\")\n .defaultService(default_.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"*\")\n .pathMatcher(\"allpaths\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"allpaths\")\n .defaultService(default_.id())\n .routeRules( \n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(1)\n .service(service_a.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .prefixMatch(\"/\")\n .ignoreCase(true)\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"abtest\")\n .exactMatch(\"a\")\n .build())\n .build())\n .build(),\n URLMapPathMatcherRouteRuleArgs.builder()\n .priority(2)\n .service(service_b.id())\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .ignoreCase(true)\n .prefixMatch(\"/\")\n .queryParameterMatches(URLMapPathMatcherRouteRuleMatchRuleQueryParameterMatchArgs.builder()\n .name(\"abtest\")\n .exactMatch(\"b\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: parameter-based routing example\n defaultService: ${default.id}\n hostRules:\n - hosts:\n - '*'\n pathMatcher: allpaths\n pathMatchers:\n - name: allpaths\n defaultService: ${default.id}\n routeRules:\n - priority: 1\n service: ${[\"service-a\"].id}\n matchRules:\n - prefixMatch: /\n ignoreCase: true\n queryParameterMatches:\n - name: abtest\n exactMatch: a\n - priority: 2\n service: ${[\"service-b\"].id}\n matchRules:\n - ignoreCase: true\n prefixMatch: /\n queryParameterMatches:\n - name: abtest\n exactMatch: b\n default:\n type: gcp:compute:BackendService\n properties:\n name: default\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-a:\n type: gcp:compute:BackendService\n properties:\n name: service-a\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n service-b:\n type: gcp:compute:BackendService\n properties:\n name: service-b\n portName: http\n protocol: HTTP\n timeoutSec: 10\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Path Template Match\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst cart_backend = new gcp.compute.BackendService(\"cart-backend\", {\n name: \"cart-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst user_backend = new gcp.compute.BackendService(\"user-backend\", {\n name: \"user-service\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst staticBucket = new gcp.storage.Bucket(\"static\", {\n name: \"static-asset-bucket\",\n location: \"US\",\n});\nconst static = new gcp.compute.BackendBucket(\"static\", {\n name: \"static-asset-backend-bucket\",\n bucketName: staticBucket.name,\n enableCdn: true,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: static.id,\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n }],\n pathMatchers: [{\n name: \"mysite\",\n defaultService: static.id,\n routeRules: [\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n service: cart_backend.id,\n priority: 1,\n routeAction: {\n urlRewrite: {\n pathTemplateRewrite: \"/{username}-{cartid}/\",\n },\n },\n },\n {\n matchRules: [{\n pathTemplateMatch: \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n service: user_backend.id,\n priority: 2,\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ncart_backend = gcp.compute.BackendService(\"cart-backend\",\n name=\"cart-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nuser_backend = gcp.compute.BackendService(\"user-backend\",\n name=\"user-service\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nstatic_bucket = gcp.storage.Bucket(\"static\",\n name=\"static-asset-bucket\",\n location=\"US\")\nstatic = gcp.compute.BackendBucket(\"static\",\n name=\"static-asset-backend-bucket\",\n bucket_name=static_bucket.name,\n enable_cdn=True)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=static.id,\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"mysite\",\n }],\n path_matchers=[{\n \"name\": \"mysite\",\n \"default_service\": static.id,\n \"route_rules\": [\n {\n \"match_rules\": [{\n \"path_template_match\": \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n }],\n \"service\": cart_backend.id,\n \"priority\": 1,\n \"route_action\": {\n \"url_rewrite\": {\n \"path_template_rewrite\": \"/{username}-{cartid}/\",\n },\n },\n },\n {\n \"match_rules\": [{\n \"path_template_match\": \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n }],\n \"service\": user_backend.id,\n \"priority\": 2,\n },\n ],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var cart_backend = new Gcp.Compute.BackendService(\"cart-backend\", new()\n {\n Name = \"cart-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var user_backend = new Gcp.Compute.BackendService(\"user-backend\", new()\n {\n Name = \"user-service\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var staticBucket = new Gcp.Storage.Bucket(\"static\", new()\n {\n Name = \"static-asset-bucket\",\n Location = \"US\",\n });\n\n var @static = new Gcp.Compute.BackendBucket(\"static\", new()\n {\n Name = \"static-asset-backend-bucket\",\n BucketName = staticBucket.Name,\n EnableCdn = true,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = @static.Id,\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = @static.Id,\n RouteRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\",\n },\n },\n Service = cart_backend.Id,\n Priority = 1,\n RouteAction = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleRouteActionArgs\n {\n UrlRewrite = new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleRouteActionUrlRewriteArgs\n {\n PathTemplateRewrite = \"/{username}-{cartid}/\",\n },\n },\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleArgs\n {\n MatchRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherRouteRuleMatchRuleArgs\n {\n PathTemplateMatch = \"/xyzwebservices/v2/xyz/users/*/accountinfo/*\",\n },\n },\n Service = user_backend.Id,\n Priority = 2,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_default, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcart_backend, err := compute.NewBackendService(ctx, \"cart-backend\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"cart-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser_backend, err := compute.NewBackendService(ctx, \"user-backend\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"user-service\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstaticBucket, err := storage.NewBucket(ctx, \"static\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstatic, err := compute.NewBackendBucket(ctx, \"static\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-backend-bucket\"),\n\t\t\tBucketName: staticBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: static.ID(),\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: static.ID(),\n\t\t\t\t\tRouteRules: compute.URLMapPathMatcherRouteRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: cart_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(1),\n\t\t\t\t\t\t\tRouteAction: \u0026compute.URLMapPathMatcherRouteRuleRouteActionArgs{\n\t\t\t\t\t\t\t\tUrlRewrite: \u0026compute.URLMapPathMatcherRouteRuleRouteActionUrlRewriteArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateRewrite: pulumi.String(\"/{username}-{cartid}/\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleArgs{\n\t\t\t\t\t\t\tMatchRules: compute.URLMapPathMatcherRouteRuleMatchRuleArray{\n\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherRouteRuleMatchRuleArgs{\n\t\t\t\t\t\t\t\t\tPathTemplateMatch: pulumi.String(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: user_backend.ID(),\n\t\t\t\t\t\t\tPriority: pulumi.Int(2),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var cart_backend = new BackendService(\"cart-backend\", BackendServiceArgs.builder()\n .name(\"cart-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var user_backend = new BackendService(\"user-backend\", BackendServiceArgs.builder()\n .name(\"user-service\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var staticBucket = new Bucket(\"staticBucket\", BucketArgs.builder()\n .name(\"static-asset-bucket\")\n .location(\"US\")\n .build());\n\n var static_ = new BackendBucket(\"static\", BackendBucketArgs.builder()\n .name(\"static-asset-backend-bucket\")\n .bucketName(staticBucket.name())\n .enableCdn(true)\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(static_.id())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(static_.id())\n .routeRules( \n URLMapPathMatcherRouteRuleArgs.builder()\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\")\n .build())\n .service(cart_backend.id())\n .priority(1)\n .routeAction(URLMapPathMatcherRouteRuleRouteActionArgs.builder()\n .urlRewrite(URLMapPathMatcherRouteRuleRouteActionUrlRewriteArgs.builder()\n .pathTemplateRewrite(\"/{username}-{cartid}/\")\n .build())\n .build())\n .build(),\n URLMapPathMatcherRouteRuleArgs.builder()\n .matchRules(URLMapPathMatcherRouteRuleMatchRuleArgs.builder()\n .pathTemplateMatch(\"/xyzwebservices/v2/xyz/users/*/accountinfo/*\")\n .build())\n .service(user_backend.id())\n .priority(2)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${static.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n pathMatchers:\n - name: mysite\n defaultService: ${static.id}\n routeRules:\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/{username=*}/carts/{cartid=**}\n service: ${[\"cart-backend\"].id}\n priority: 1\n routeAction:\n urlRewrite:\n pathTemplateRewrite: /{username}-{cartid}/\n - matchRules:\n - pathTemplateMatch: /xyzwebservices/v2/xyz/users/*/accountinfo/*\n service: ${[\"user-backend\"].id}\n priority: 2\n cart-backend:\n type: gcp:compute:BackendService\n properties:\n name: cart-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n user-backend:\n type: gcp:compute:BackendService\n properties:\n name: user-service\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n static:\n type: gcp:compute:BackendBucket\n properties:\n name: static-asset-backend-bucket\n bucketName: ${staticBucket.name}\n enableCdn: true\n staticBucket:\n type: gcp:storage:Bucket\n name: static\n properties:\n name: static-asset-bucket\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Url Map Custom Error Response Policy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst example = new gcp.compute.BackendService(\"example\", {\n name: \"login\",\n portName: \"http\",\n protocol: \"HTTP\",\n timeoutSec: 10,\n loadBalancingScheme: \"EXTERNAL_MANAGED\",\n healthChecks: _default.id,\n});\nconst errorBucket = new gcp.storage.Bucket(\"error\", {\n name: \"static-asset-bucket\",\n location: \"US\",\n});\nconst error = new gcp.compute.BackendBucket(\"error\", {\n name: \"error-backend-bucket\",\n bucketName: errorBucket.name,\n enableCdn: true,\n});\nconst urlmap = new gcp.compute.URLMap(\"urlmap\", {\n name: \"urlmap\",\n description: \"a description\",\n defaultService: example.id,\n defaultCustomErrorResponsePolicy: {\n errorResponseRules: [{\n matchResponseCodes: [\"5xx\"],\n path: \"/internal_error.html\",\n overrideResponseCode: 502,\n }],\n errorService: error.id,\n },\n hostRules: [{\n hosts: [\"mysite.com\"],\n pathMatcher: \"mysite\",\n }],\n pathMatchers: [{\n name: \"mysite\",\n defaultService: example.id,\n defaultCustomErrorResponsePolicy: {\n errorResponseRules: [\n {\n matchResponseCodes: [\n \"4xx\",\n \"5xx\",\n ],\n path: \"/login_error.html\",\n overrideResponseCode: 404,\n },\n {\n matchResponseCodes: [\"503\"],\n path: \"/bad_gateway.html\",\n overrideResponseCode: 502,\n },\n ],\n errorService: error.id,\n },\n pathRules: [{\n paths: [\"/private/*\"],\n service: example.id,\n customErrorResponsePolicy: {\n errorResponseRules: [{\n matchResponseCodes: [\"4xx\"],\n path: \"/login.html\",\n overrideResponseCode: 401,\n }],\n errorService: error.id,\n },\n }],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.HttpHealthCheck(\"default\",\n name=\"health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\nexample = gcp.compute.BackendService(\"example\",\n name=\"login\",\n port_name=\"http\",\n protocol=\"HTTP\",\n timeout_sec=10,\n load_balancing_scheme=\"EXTERNAL_MANAGED\",\n health_checks=default.id)\nerror_bucket = gcp.storage.Bucket(\"error\",\n name=\"static-asset-bucket\",\n location=\"US\")\nerror = gcp.compute.BackendBucket(\"error\",\n name=\"error-backend-bucket\",\n bucket_name=error_bucket.name,\n enable_cdn=True)\nurlmap = gcp.compute.URLMap(\"urlmap\",\n name=\"urlmap\",\n description=\"a description\",\n default_service=example.id,\n default_custom_error_response_policy={\n \"error_response_rules\": [{\n \"match_response_codes\": [\"5xx\"],\n \"path\": \"/internal_error.html\",\n \"override_response_code\": 502,\n }],\n \"error_service\": error.id,\n },\n host_rules=[{\n \"hosts\": [\"mysite.com\"],\n \"path_matcher\": \"mysite\",\n }],\n path_matchers=[{\n \"name\": \"mysite\",\n \"default_service\": example.id,\n \"default_custom_error_response_policy\": {\n \"error_response_rules\": [\n {\n \"match_response_codes\": [\n \"4xx\",\n \"5xx\",\n ],\n \"path\": \"/login_error.html\",\n \"override_response_code\": 404,\n },\n {\n \"match_response_codes\": [\"503\"],\n \"path\": \"/bad_gateway.html\",\n \"override_response_code\": 502,\n },\n ],\n \"error_service\": error.id,\n },\n \"path_rules\": [{\n \"paths\": [\"/private/*\"],\n \"service\": example.id,\n \"custom_error_response_policy\": {\n \"error_response_rules\": [{\n \"match_response_codes\": [\"4xx\"],\n \"path\": \"/login.html\",\n \"override_response_code\": 401,\n }],\n \"error_service\": error.id,\n },\n }],\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var example = new Gcp.Compute.BackendService(\"example\", new()\n {\n Name = \"login\",\n PortName = \"http\",\n Protocol = \"HTTP\",\n TimeoutSec = 10,\n LoadBalancingScheme = \"EXTERNAL_MANAGED\",\n HealthChecks = @default.Id,\n });\n\n var errorBucket = new Gcp.Storage.Bucket(\"error\", new()\n {\n Name = \"static-asset-bucket\",\n Location = \"US\",\n });\n\n var error = new Gcp.Compute.BackendBucket(\"error\", new()\n {\n Name = \"error-backend-bucket\",\n BucketName = errorBucket.Name,\n EnableCdn = true,\n });\n\n var urlmap = new Gcp.Compute.URLMap(\"urlmap\", new()\n {\n Name = \"urlmap\",\n Description = \"a description\",\n DefaultService = example.Id,\n DefaultCustomErrorResponsePolicy = new Gcp.Compute.Inputs.URLMapDefaultCustomErrorResponsePolicyArgs\n {\n ErrorResponseRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"5xx\",\n },\n Path = \"/internal_error.html\",\n OverrideResponseCode = 502,\n },\n },\n ErrorService = error.Id,\n },\n HostRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapHostRuleArgs\n {\n Hosts = new[]\n {\n \"mysite.com\",\n },\n PathMatcher = \"mysite\",\n },\n },\n PathMatchers = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherArgs\n {\n Name = \"mysite\",\n DefaultService = example.Id,\n DefaultCustomErrorResponsePolicy = new Gcp.Compute.Inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs\n {\n ErrorResponseRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"4xx\",\n \"5xx\",\n },\n Path = \"/login_error.html\",\n OverrideResponseCode = 404,\n },\n new Gcp.Compute.Inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"503\",\n },\n Path = \"/bad_gateway.html\",\n OverrideResponseCode = 502,\n },\n },\n ErrorService = error.Id,\n },\n PathRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleArgs\n {\n Paths = new[]\n {\n \"/private/*\",\n },\n Service = example.Id,\n CustomErrorResponsePolicy = new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleCustomErrorResponsePolicyArgs\n {\n ErrorResponseRules = new[]\n {\n new Gcp.Compute.Inputs.URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArgs\n {\n MatchResponseCodes = new[]\n {\n \"4xx\",\n },\n Path = \"/login.html\",\n OverrideResponseCode = 401,\n },\n },\n ErrorService = error.Id,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_default, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample, err := compute.NewBackendService(ctx, \"example\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"login\"),\n\t\t\tPortName: pulumi.String(\"http\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tTimeoutSec: pulumi.Int(10),\n\t\t\tLoadBalancingScheme: pulumi.String(\"EXTERNAL_MANAGED\"),\n\t\t\tHealthChecks: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terrorBucket, err := storage.NewBucket(ctx, \"error\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"static-asset-bucket\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terror, err := compute.NewBackendBucket(ctx, \"error\", \u0026compute.BackendBucketArgs{\n\t\t\tName: pulumi.String(\"error-backend-bucket\"),\n\t\t\tBucketName: errorBucket.Name,\n\t\t\tEnableCdn: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewURLMap(ctx, \"urlmap\", \u0026compute.URLMapArgs{\n\t\t\tName: pulumi.String(\"urlmap\"),\n\t\t\tDescription: pulumi.String(\"a description\"),\n\t\t\tDefaultService: example.ID(),\n\t\t\tDefaultCustomErrorResponsePolicy: \u0026compute.URLMapDefaultCustomErrorResponsePolicyArgs{\n\t\t\t\tErrorResponseRules: compute.URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArray{\n\t\t\t\t\t\u0026compute.URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPath: pulumi.String(\"/internal_error.html\"),\n\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(502),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tErrorService: error.ID(),\n\t\t\t},\n\t\t\tHostRules: compute.URLMapHostRuleArray{\n\t\t\t\t\u0026compute.URLMapHostRuleArgs{\n\t\t\t\t\tHosts: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"mysite.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tPathMatcher: pulumi.String(\"mysite\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tPathMatchers: compute.URLMapPathMatcherArray{\n\t\t\t\t\u0026compute.URLMapPathMatcherArgs{\n\t\t\t\t\tName: pulumi.String(\"mysite\"),\n\t\t\t\t\tDefaultService: example.ID(),\n\t\t\t\t\tDefaultCustomErrorResponsePolicy: \u0026compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs{\n\t\t\t\t\t\tErrorResponseRules: compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArray{\n\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"4xx\"),\n\t\t\t\t\t\t\t\t\tpulumi.String(\"5xx\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/login_error.html\"),\n\t\t\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(404),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"503\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tPath: pulumi.String(\"/bad_gateway.html\"),\n\t\t\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(502),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tErrorService: error.ID(),\n\t\t\t\t\t},\n\t\t\t\t\tPathRules: compute.URLMapPathMatcherPathRuleArray{\n\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleArgs{\n\t\t\t\t\t\t\tPaths: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"/private/*\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tService: example.ID(),\n\t\t\t\t\t\t\tCustomErrorResponsePolicy: \u0026compute.URLMapPathMatcherPathRuleCustomErrorResponsePolicyArgs{\n\t\t\t\t\t\t\t\tErrorResponseRules: compute.URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArray{\n\t\t\t\t\t\t\t\t\t\u0026compute.URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArgs{\n\t\t\t\t\t\t\t\t\t\tMatchResponseCodes: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\t\t\tpulumi.String(\"4xx\"),\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tPath: pulumi.String(\"/login.html\"),\n\t\t\t\t\t\t\t\t\t\tOverrideResponseCode: pulumi.Int(401),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tErrorService: error.ID(),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.compute.BackendBucket;\nimport com.pulumi.gcp.compute.BackendBucketArgs;\nimport com.pulumi.gcp.compute.URLMap;\nimport com.pulumi.gcp.compute.URLMapArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapDefaultCustomErrorResponsePolicyArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapHostRuleArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherArgs;\nimport com.pulumi.gcp.compute.inputs.URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HttpHealthCheck(\"default\", HttpHealthCheckArgs.builder()\n .name(\"health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var example = new BackendService(\"example\", BackendServiceArgs.builder()\n .name(\"login\")\n .portName(\"http\")\n .protocol(\"HTTP\")\n .timeoutSec(10)\n .loadBalancingScheme(\"EXTERNAL_MANAGED\")\n .healthChecks(default_.id())\n .build());\n\n var errorBucket = new Bucket(\"errorBucket\", BucketArgs.builder()\n .name(\"static-asset-bucket\")\n .location(\"US\")\n .build());\n\n var error = new BackendBucket(\"error\", BackendBucketArgs.builder()\n .name(\"error-backend-bucket\")\n .bucketName(errorBucket.name())\n .enableCdn(true)\n .build());\n\n var urlmap = new URLMap(\"urlmap\", URLMapArgs.builder()\n .name(\"urlmap\")\n .description(\"a description\")\n .defaultService(example.id())\n .defaultCustomErrorResponsePolicy(URLMapDefaultCustomErrorResponsePolicyArgs.builder()\n .errorResponseRules(URLMapDefaultCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes(\"5xx\")\n .path(\"/internal_error.html\")\n .overrideResponseCode(502)\n .build())\n .errorService(error.id())\n .build())\n .hostRules(URLMapHostRuleArgs.builder()\n .hosts(\"mysite.com\")\n .pathMatcher(\"mysite\")\n .build())\n .pathMatchers(URLMapPathMatcherArgs.builder()\n .name(\"mysite\")\n .defaultService(example.id())\n .defaultCustomErrorResponsePolicy(URLMapPathMatcherDefaultCustomErrorResponsePolicyArgs.builder()\n .errorResponseRules( \n URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes( \n \"4xx\",\n \"5xx\")\n .path(\"/login_error.html\")\n .overrideResponseCode(404)\n .build(),\n URLMapPathMatcherDefaultCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes(\"503\")\n .path(\"/bad_gateway.html\")\n .overrideResponseCode(502)\n .build())\n .errorService(error.id())\n .build())\n .pathRules(URLMapPathMatcherPathRuleArgs.builder()\n .paths(\"/private/*\")\n .service(example.id())\n .customErrorResponsePolicy(URLMapPathMatcherPathRuleCustomErrorResponsePolicyArgs.builder()\n .errorResponseRules(URLMapPathMatcherPathRuleCustomErrorResponsePolicyErrorResponseRuleArgs.builder()\n .matchResponseCodes(\"4xx\")\n .path(\"/login.html\")\n .overrideResponseCode(401)\n .build())\n .errorService(error.id())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n urlmap:\n type: gcp:compute:URLMap\n properties:\n name: urlmap\n description: a description\n defaultService: ${example.id}\n defaultCustomErrorResponsePolicy:\n errorResponseRules:\n - matchResponseCodes:\n - 5xx\n path: /internal_error.html\n overrideResponseCode: 502\n errorService: ${error.id}\n hostRules:\n - hosts:\n - mysite.com\n pathMatcher: mysite\n pathMatchers:\n - name: mysite\n defaultService: ${example.id}\n defaultCustomErrorResponsePolicy:\n errorResponseRules:\n - matchResponseCodes:\n - 4xx\n - 5xx\n path: /login_error.html\n overrideResponseCode: 404\n - matchResponseCodes:\n - '503'\n path: /bad_gateway.html\n overrideResponseCode: 502\n errorService: ${error.id}\n pathRules:\n - paths:\n - /private/*\n service: ${example.id}\n customErrorResponsePolicy:\n errorResponseRules:\n - matchResponseCodes:\n - 4xx\n path: /login.html\n overrideResponseCode: 401\n errorService: ${error.id}\n example:\n type: gcp:compute:BackendService\n properties:\n name: login\n portName: http\n protocol: HTTP\n timeoutSec: 10\n loadBalancingScheme: EXTERNAL_MANAGED\n healthChecks: ${default.id}\n default:\n type: gcp:compute:HttpHealthCheck\n properties:\n name: health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n error:\n type: gcp:compute:BackendBucket\n properties:\n name: error-backend-bucket\n bucketName: ${errorBucket.name}\n enableCdn: true\n errorBucket:\n type: gcp:storage:Bucket\n name: error\n properties:\n name: static-asset-bucket\n location: US\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nUrlMap can be imported using any of these accepted formats:\n\n* `projects/{{project}}/global/urlMaps/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, UrlMap can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:compute/uRLMap:URLMap default projects/{{project}}/global/urlMaps/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/uRLMap:URLMap default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:compute/uRLMap:URLMap default {{name}}\n```\n\n", "properties": { "creationTimestamp": { "type": "string", @@ -195537,7 +195537,7 @@ } }, "gcp:container/cluster:Cluster": { - "description": "Manages a Google Kubernetes Engine (GKE) cluster.\n\nTo get more information about GKE clusters, see:\n * [The API reference](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters)\n * How-to guides\n * [GKE overview](https://cloud.google.com/kubernetes-engine/docs/concepts/kubernetes-engine-overview)\n * [About cluster configuration choices](https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters)\n\n\u003e On version 5.0.0+ of the provider, you must explicitly set `deletion_protection = false`\nand run `pulumi up` to write the field to state in order to destroy a cluster.\n\n\u003e All arguments and attributes (including certificate outputs) will be stored in the raw state as\nplaintext. [Read more about secrets in state](https://www.pulumi.com/docs/intro/concepts/programming-model/#secrets).\n\n## Example Usage\n\n### With A Separately Managed Node Pool (Recommended)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"my-gke-cluster\",\n location: \"us-central1\",\n removeDefaultNodePool: true,\n initialNodeCount: 1,\n});\nconst primaryPreemptibleNodes = new gcp.container.NodePool(\"primary_preemptible_nodes\", {\n name: \"my-node-pool\",\n location: \"us-central1\",\n cluster: primary.name,\n nodeCount: 1,\n nodeConfig: {\n preemptible: true,\n machineType: \"e2-medium\",\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"my-gke-cluster\",\n location=\"us-central1\",\n remove_default_node_pool=True,\n initial_node_count=1)\nprimary_preemptible_nodes = gcp.container.NodePool(\"primary_preemptible_nodes\",\n name=\"my-node-pool\",\n location=\"us-central1\",\n cluster=primary.name,\n node_count=1,\n node_config={\n \"preemptible\": True,\n \"machine_type\": \"e2-medium\",\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"my-gke-cluster\",\n Location = \"us-central1\",\n RemoveDefaultNodePool = true,\n InitialNodeCount = 1,\n });\n\n var primaryPreemptibleNodes = new Gcp.Container.NodePool(\"primary_preemptible_nodes\", new()\n {\n Name = \"my-node-pool\",\n Location = \"us-central1\",\n Cluster = primary.Name,\n NodeCount = 1,\n NodeConfig = new Gcp.Container.Inputs.NodePoolNodeConfigArgs\n {\n Preemptible = true,\n MachineType = \"e2-medium\",\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-gke-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRemoveDefaultNodePool: pulumi.Bool(true),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewNodePool(ctx, \"primary_preemptible_nodes\", \u0026container.NodePoolArgs{\n\t\t\tName: pulumi.String(\"my-node-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCluster: primary.Name,\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tNodeConfig: \u0026container.NodePoolNodeConfigArgs{\n\t\t\t\tPreemptible: pulumi.Bool(true),\n\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.NodePool;\nimport com.pulumi.gcp.container.NodePoolArgs;\nimport com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"my-gke-cluster\")\n .location(\"us-central1\")\n .removeDefaultNodePool(true)\n .initialNodeCount(1)\n .build());\n\n var primaryPreemptibleNodes = new NodePool(\"primaryPreemptibleNodes\", NodePoolArgs.builder()\n .name(\"my-node-pool\")\n .location(\"us-central1\")\n .cluster(primary.name())\n .nodeCount(1)\n .nodeConfig(NodePoolNodeConfigArgs.builder()\n .preemptible(true)\n .machineType(\"e2-medium\")\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: my-gke-cluster\n location: us-central1\n removeDefaultNodePool: true\n initialNodeCount: 1\n primaryPreemptibleNodes:\n type: gcp:container:NodePool\n name: primary_preemptible_nodes\n properties:\n name: my-node-pool\n location: us-central1\n cluster: ${primary.name}\n nodeCount: 1\n nodeConfig:\n preemptible: true\n machineType: e2-medium\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **Note:** It is recommended that node pools be created and managed as separate resources as in the example above.\nThis allows node pools to be added and removed without recreating the cluster. Node pools defined directly in the\n`gcp.container.Cluster` resource cannot be removed without re-creating the cluster.\n\n### With The Default Node Pool\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"marcellus-wallace\",\n location: \"us-central1-a\",\n initialNodeCount: 3,\n nodeConfig: {\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n labels: {\n foo: \"bar\",\n },\n tags: [\n \"foo\",\n \"bar\",\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"marcellus-wallace\",\n location=\"us-central1-a\",\n initial_node_count=3,\n node_config={\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n \"labels\": {\n \"foo\": \"bar\",\n },\n \"tags\": [\n \"foo\",\n \"bar\",\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"marcellus-wallace\",\n Location = \"us-central1-a\",\n InitialNodeCount = 3,\n NodeConfig = new Gcp.Container.Inputs.ClusterNodeConfigArgs\n {\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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 = container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"marcellus-wallace\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(3),\n\t\t\tNodeConfig: \u0026container.ClusterNodeConfigArgs{\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterNodeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"marcellus-wallace\")\n .location(\"us-central1-a\")\n .initialNodeCount(3)\n .nodeConfig(ClusterNodeConfigArgs.builder()\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .tags( \n \"foo\",\n \"bar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: marcellus-wallace\n location: us-central1-a\n initialNodeCount: 3\n nodeConfig:\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n labels:\n foo: bar\n tags:\n - foo\n - bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Autopilot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"marcellus-wallace\",\n location: \"us-central1-a\",\n enableAutopilot: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"marcellus-wallace\",\n location=\"us-central1-a\",\n enable_autopilot=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"marcellus-wallace\",\n Location = \"us-central1-a\",\n EnableAutopilot = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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 = container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"marcellus-wallace\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tEnableAutopilot: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"marcellus-wallace\")\n .location(\"us-central1-a\")\n .enableAutopilot(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: marcellus-wallace\n location: us-central1-a\n enableAutopilot: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGKE clusters can be imported using the `project` , `location`, and `name`. If the project is omitted, the default\n\nprovider value will be used. Examples:\n\n* `projects/{{project_id}}/locations/{{location}}/clusters/{{cluster_id}}`\n\n* `{{project_id}}/{{location}}/{{cluster_id}}`\n\n* `{{location}}/{{cluster_id}}`\n\nWhen using the `pulumi import` command, GKE clusters can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/cluster:Cluster default projects/{{project_id}}/locations/{{location}}/clusters/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:container/cluster:Cluster default {{project_id}}/{{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:container/cluster:Cluster default {{location}}/{{cluster_id}}\n```\n\nFor example, the following fields will show diffs if set in config:\n\n- `min_master_version`\n\n- `remove_default_node_pool`\n\n", + "description": "Manages a Google Kubernetes Engine (GKE) cluster.\n\nTo get more information about GKE clusters, see:\n * [The API reference](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters)\n * How-to guides\n * [GKE overview](https://cloud.google.com/kubernetes-engine/docs/concepts/kubernetes-engine-overview)\n * [About cluster configuration choices](https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters)\n\n\u003e On version 5.0.0+ of the provider, you must explicitly set `deletion_protection = false`\nand run `pulumi up` to write the field to state in order to destroy a cluster.\n\n\u003e All arguments and attributes (including certificate outputs) will be stored in the raw state as\nplaintext. [Read more about secrets in state](https://www.pulumi.com/docs/intro/concepts/programming-model/#secrets).\n\n## Example Usage\n\n### With A Separately Managed Node Pool (Recommended)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"my-gke-cluster\",\n location: \"us-central1\",\n removeDefaultNodePool: true,\n initialNodeCount: 1,\n});\nconst primaryPreemptibleNodes = new gcp.container.NodePool(\"primary_preemptible_nodes\", {\n name: \"my-node-pool\",\n location: \"us-central1\",\n cluster: primary.name,\n nodeCount: 1,\n nodeConfig: {\n preemptible: true,\n machineType: \"e2-medium\",\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"my-gke-cluster\",\n location=\"us-central1\",\n remove_default_node_pool=True,\n initial_node_count=1)\nprimary_preemptible_nodes = gcp.container.NodePool(\"primary_preemptible_nodes\",\n name=\"my-node-pool\",\n location=\"us-central1\",\n cluster=primary.name,\n node_count=1,\n node_config={\n \"preemptible\": True,\n \"machine_type\": \"e2-medium\",\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"my-gke-cluster\",\n Location = \"us-central1\",\n RemoveDefaultNodePool = true,\n InitialNodeCount = 1,\n });\n\n var primaryPreemptibleNodes = new Gcp.Container.NodePool(\"primary_preemptible_nodes\", new()\n {\n Name = \"my-node-pool\",\n Location = \"us-central1\",\n Cluster = primary.Name,\n NodeCount = 1,\n NodeConfig = new Gcp.Container.Inputs.NodePoolNodeConfigArgs\n {\n Preemptible = true,\n MachineType = \"e2-medium\",\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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 := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-gke-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRemoveDefaultNodePool: pulumi.Bool(true),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewNodePool(ctx, \"primary_preemptible_nodes\", \u0026container.NodePoolArgs{\n\t\t\tName: pulumi.String(\"my-node-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tCluster: primary.Name,\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tNodeConfig: \u0026container.NodePoolNodeConfigArgs{\n\t\t\t\tPreemptible: pulumi.Bool(true),\n\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.NodePool;\nimport com.pulumi.gcp.container.NodePoolArgs;\nimport com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"my-gke-cluster\")\n .location(\"us-central1\")\n .removeDefaultNodePool(true)\n .initialNodeCount(1)\n .build());\n\n var primaryPreemptibleNodes = new NodePool(\"primaryPreemptibleNodes\", NodePoolArgs.builder()\n .name(\"my-node-pool\")\n .location(\"us-central1\")\n .cluster(primary.name())\n .nodeCount(1)\n .nodeConfig(NodePoolNodeConfigArgs.builder()\n .preemptible(true)\n .machineType(\"e2-medium\")\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: my-gke-cluster\n location: us-central1\n removeDefaultNodePool: true\n initialNodeCount: 1\n primaryPreemptibleNodes:\n type: gcp:container:NodePool\n name: primary_preemptible_nodes\n properties:\n name: my-node-pool\n location: us-central1\n cluster: ${primary.name}\n nodeCount: 1\n nodeConfig:\n preemptible: true\n machineType: e2-medium\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n\u003e **Note:** It is recommended that node pools be created and managed as separate resources as in the example above.\nThis allows node pools to be added and removed without recreating the cluster. Node pools defined directly in the\n`gcp.container.Cluster` resource cannot be removed without re-creating the cluster.\n\n### With The Default Node Pool\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"marcellus-wallace\",\n location: \"us-central1-a\",\n initialNodeCount: 3,\n nodeConfig: {\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n labels: {\n foo: \"bar\",\n },\n tags: [\n \"foo\",\n \"bar\",\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"marcellus-wallace\",\n location=\"us-central1-a\",\n initial_node_count=3,\n node_config={\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n \"labels\": {\n \"foo\": \"bar\",\n },\n \"tags\": [\n \"foo\",\n \"bar\",\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"marcellus-wallace\",\n Location = \"us-central1-a\",\n InitialNodeCount = 3,\n NodeConfig = new Gcp.Container.Inputs.ClusterNodeConfigArgs\n {\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Tags = new[]\n {\n \"foo\",\n \"bar\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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 := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"marcellus-wallace\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(3),\n\t\t\tNodeConfig: \u0026container.ClusterNodeConfigArgs{\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t\t},\n\t\t\t\tTags: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"foo\"),\n\t\t\t\t\tpulumi.String(\"bar\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterNodeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"marcellus-wallace\")\n .location(\"us-central1-a\")\n .initialNodeCount(3)\n .nodeConfig(ClusterNodeConfigArgs.builder()\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .labels(Map.of(\"foo\", \"bar\"))\n .tags( \n \"foo\",\n \"bar\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: marcellus-wallace\n location: us-central1-a\n initialNodeCount: 3\n nodeConfig:\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n labels:\n foo: bar\n tags:\n - foo\n - bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Autopilot\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"marcellus-wallace\",\n location: \"us-central1-a\",\n enableAutopilot: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"marcellus-wallace\",\n location=\"us-central1-a\",\n enable_autopilot=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"marcellus-wallace\",\n Location = \"us-central1-a\",\n EnableAutopilot = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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 = container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"marcellus-wallace\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tEnableAutopilot: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"marcellus-wallace\")\n .location(\"us-central1-a\")\n .enableAutopilot(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: marcellus-wallace\n location: us-central1-a\n enableAutopilot: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGKE clusters can be imported using the `project` , `location`, and `name`. If the project is omitted, the default\n\nprovider value will be used. Examples:\n\n* `projects/{{project_id}}/locations/{{location}}/clusters/{{cluster_id}}`\n\n* `{{project_id}}/{{location}}/{{cluster_id}}`\n\n* `{{location}}/{{cluster_id}}`\n\nWhen using the `pulumi import` command, GKE clusters can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/cluster:Cluster default projects/{{project_id}}/locations/{{location}}/clusters/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:container/cluster:Cluster default {{project_id}}/{{location}}/{{cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:container/cluster:Cluster default {{location}}/{{cluster_id}}\n```\n\nFor example, the following fields will show diffs if set in config:\n\n- `min_master_version`\n\n- `remove_default_node_pool`\n\n", "properties": { "addonsConfig": { "$ref": "#/types/gcp:container/ClusterAddonsConfig:ClusterAddonsConfig", @@ -196634,7 +196634,7 @@ } }, "gcp:container/nodePool:NodePool": { - "description": "Manages a node pool in a Google Kubernetes Engine (GKE) cluster separately from\nthe cluster control plane. For more information see [the official documentation](https://cloud.google.com/container-engine/docs/node-pools)\nand [the API reference](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters.nodePools).\n\n## Example Usage\n\n### Using A Separately Managed Node Pool (Recommended)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"my-gke-cluster\",\n location: \"us-central1\",\n removeDefaultNodePool: true,\n initialNodeCount: 1,\n});\nconst primaryPreemptibleNodes = new gcp.container.NodePool(\"primary_preemptible_nodes\", {\n name: \"my-node-pool\",\n cluster: primary.id,\n nodeCount: 1,\n nodeConfig: {\n preemptible: true,\n machineType: \"e2-medium\",\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"my-gke-cluster\",\n location=\"us-central1\",\n remove_default_node_pool=True,\n initial_node_count=1)\nprimary_preemptible_nodes = gcp.container.NodePool(\"primary_preemptible_nodes\",\n name=\"my-node-pool\",\n cluster=primary.id,\n node_count=1,\n node_config={\n \"preemptible\": True,\n \"machine_type\": \"e2-medium\",\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"my-gke-cluster\",\n Location = \"us-central1\",\n RemoveDefaultNodePool = true,\n InitialNodeCount = 1,\n });\n\n var primaryPreemptibleNodes = new Gcp.Container.NodePool(\"primary_preemptible_nodes\", new()\n {\n Name = \"my-node-pool\",\n Cluster = primary.Id,\n NodeCount = 1,\n NodeConfig = new Gcp.Container.Inputs.NodePoolNodeConfigArgs\n {\n Preemptible = true,\n MachineType = \"e2-medium\",\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-gke-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRemoveDefaultNodePool: pulumi.Bool(true),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewNodePool(ctx, \"primary_preemptible_nodes\", \u0026container.NodePoolArgs{\n\t\t\tName: pulumi.String(\"my-node-pool\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tNodeConfig: \u0026container.NodePoolNodeConfigArgs{\n\t\t\t\tPreemptible: pulumi.Bool(true),\n\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.NodePool;\nimport com.pulumi.gcp.container.NodePoolArgs;\nimport com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"my-gke-cluster\")\n .location(\"us-central1\")\n .removeDefaultNodePool(true)\n .initialNodeCount(1)\n .build());\n\n var primaryPreemptibleNodes = new NodePool(\"primaryPreemptibleNodes\", NodePoolArgs.builder()\n .name(\"my-node-pool\")\n .cluster(primary.id())\n .nodeCount(1)\n .nodeConfig(NodePoolNodeConfigArgs.builder()\n .preemptible(true)\n .machineType(\"e2-medium\")\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: my-gke-cluster\n location: us-central1\n removeDefaultNodePool: true\n initialNodeCount: 1\n primaryPreemptibleNodes:\n type: gcp:container:NodePool\n name: primary_preemptible_nodes\n properties:\n name: my-node-pool\n cluster: ${primary.id}\n nodeCount: 1\n nodeConfig:\n preemptible: true\n machineType: e2-medium\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### 2 Node Pools, 1 Separately Managed + The Default Node Pool\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"marcellus-wallace\",\n location: \"us-central1-a\",\n initialNodeCount: 3,\n nodeLocations: [\"us-central1-c\"],\n nodeConfig: {\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n guestAccelerators: [{\n type: \"nvidia-tesla-k80\",\n count: 1,\n }],\n },\n});\nconst np = new gcp.container.NodePool(\"np\", {\n name: \"my-node-pool\",\n cluster: primary.id,\n nodeConfig: {\n machineType: \"e2-medium\",\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"marcellus-wallace\",\n location=\"us-central1-a\",\n initial_node_count=3,\n node_locations=[\"us-central1-c\"],\n node_config={\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n \"guest_accelerators\": [{\n \"type\": \"nvidia-tesla-k80\",\n \"count\": 1,\n }],\n })\nnp = gcp.container.NodePool(\"np\",\n name=\"my-node-pool\",\n cluster=primary.id,\n node_config={\n \"machine_type\": \"e2-medium\",\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"marcellus-wallace\",\n Location = \"us-central1-a\",\n InitialNodeCount = 3,\n NodeLocations = new[]\n {\n \"us-central1-c\",\n },\n NodeConfig = new Gcp.Container.Inputs.ClusterNodeConfigArgs\n {\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n GuestAccelerators = new[]\n {\n new Gcp.Container.Inputs.ClusterNodeConfigGuestAcceleratorArgs\n {\n Type = \"nvidia-tesla-k80\",\n Count = 1,\n },\n },\n },\n });\n\n var np = new Gcp.Container.NodePool(\"np\", new()\n {\n Name = \"my-node-pool\",\n Cluster = primary.Id,\n NodeConfig = new Gcp.Container.Inputs.NodePoolNodeConfigArgs\n {\n MachineType = \"e2-medium\",\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"marcellus-wallace\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(3),\n\t\t\tNodeLocations: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-c\"),\n\t\t\t},\n\t\t\tNodeConfig: \u0026container.ClusterNodeConfigArgs{\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t\tGuestAccelerators: container.ClusterNodeConfigGuestAcceleratorArray{\n\t\t\t\t\t\u0026container.ClusterNodeConfigGuestAcceleratorArgs{\n\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-k80\"),\n\t\t\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewNodePool(ctx, \"np\", \u0026container.NodePoolArgs{\n\t\t\tName: pulumi.String(\"my-node-pool\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tNodeConfig: \u0026container.NodePoolNodeConfigArgs{\n\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterNodeConfigArgs;\nimport com.pulumi.gcp.container.NodePool;\nimport com.pulumi.gcp.container.NodePoolArgs;\nimport com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"marcellus-wallace\")\n .location(\"us-central1-a\")\n .initialNodeCount(3)\n .nodeLocations(\"us-central1-c\")\n .nodeConfig(ClusterNodeConfigArgs.builder()\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .guestAccelerators(ClusterNodeConfigGuestAcceleratorArgs.builder()\n .type(\"nvidia-tesla-k80\")\n .count(1)\n .build())\n .build())\n .build());\n\n var np = new NodePool(\"np\", NodePoolArgs.builder()\n .name(\"my-node-pool\")\n .cluster(primary.id())\n .nodeConfig(NodePoolNodeConfigArgs.builder()\n .machineType(\"e2-medium\")\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n np:\n type: gcp:container:NodePool\n properties:\n name: my-node-pool\n cluster: ${primary.id}\n nodeConfig:\n machineType: e2-medium\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n primary:\n type: gcp:container:Cluster\n properties:\n name: marcellus-wallace\n location: us-central1-a\n initialNodeCount: 3\n nodeLocations:\n - us-central1-c\n nodeConfig:\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n guestAccelerators:\n - type: nvidia-tesla-k80\n count: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNode pools can be imported using the `project`, `location`, `cluster` and `name`. If\n\nthe project is omitted, the project value in the provider configuration will be used. Examples:\n\n* `{{project_id}}/{{location}}/{{cluster_id}}/{{pool_id}}`\n\n* `{{location}}/{{cluster_id}}/{{pool_id}}`\n\nWhen using the `pulumi import` command, node pools can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/nodePool:NodePool default {{project_id}}/{{location}}/{{cluster_id}}/{{pool_id}}\n```\n\n```sh\n$ pulumi import gcp:container/nodePool:NodePool default {{location}}/{{cluster_id}}/{{pool_id}}\n```\n\n", + "description": "Manages a node pool in a Google Kubernetes Engine (GKE) cluster separately from\nthe cluster control plane. For more information see [the official documentation](https://cloud.google.com/container-engine/docs/node-pools)\nand [the API reference](https://cloud.google.com/kubernetes-engine/docs/reference/rest/v1beta1/projects.locations.clusters.nodePools).\n\n## Example Usage\n\n### Using A Separately Managed Node Pool (Recommended)\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"my-gke-cluster\",\n location: \"us-central1\",\n removeDefaultNodePool: true,\n initialNodeCount: 1,\n});\nconst primaryPreemptibleNodes = new gcp.container.NodePool(\"primary_preemptible_nodes\", {\n name: \"my-node-pool\",\n cluster: primary.id,\n nodeCount: 1,\n nodeConfig: {\n preemptible: true,\n machineType: \"e2-medium\",\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"my-gke-cluster\",\n location=\"us-central1\",\n remove_default_node_pool=True,\n initial_node_count=1)\nprimary_preemptible_nodes = gcp.container.NodePool(\"primary_preemptible_nodes\",\n name=\"my-node-pool\",\n cluster=primary.id,\n node_count=1,\n node_config={\n \"preemptible\": True,\n \"machine_type\": \"e2-medium\",\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"my-gke-cluster\",\n Location = \"us-central1\",\n RemoveDefaultNodePool = true,\n InitialNodeCount = 1,\n });\n\n var primaryPreemptibleNodes = new Gcp.Container.NodePool(\"primary_preemptible_nodes\", new()\n {\n Name = \"my-node-pool\",\n Cluster = primary.Id,\n NodeCount = 1,\n NodeConfig = new Gcp.Container.Inputs.NodePoolNodeConfigArgs\n {\n Preemptible = true,\n MachineType = \"e2-medium\",\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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 := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-gke-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRemoveDefaultNodePool: pulumi.Bool(true),\n\t\t\tInitialNodeCount: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewNodePool(ctx, \"primary_preemptible_nodes\", \u0026container.NodePoolArgs{\n\t\t\tName: pulumi.String(\"my-node-pool\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tNodeCount: pulumi.Int(1),\n\t\t\tNodeConfig: \u0026container.NodePoolNodeConfigArgs{\n\t\t\t\tPreemptible: pulumi.Bool(true),\n\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.NodePool;\nimport com.pulumi.gcp.container.NodePoolArgs;\nimport com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"my-gke-cluster\")\n .location(\"us-central1\")\n .removeDefaultNodePool(true)\n .initialNodeCount(1)\n .build());\n\n var primaryPreemptibleNodes = new NodePool(\"primaryPreemptibleNodes\", NodePoolArgs.builder()\n .name(\"my-node-pool\")\n .cluster(primary.id())\n .nodeCount(1)\n .nodeConfig(NodePoolNodeConfigArgs.builder()\n .preemptible(true)\n .machineType(\"e2-medium\")\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n primary:\n type: gcp:container:Cluster\n properties:\n name: my-gke-cluster\n location: us-central1\n removeDefaultNodePool: true\n initialNodeCount: 1\n primaryPreemptibleNodes:\n type: gcp:container:NodePool\n name: primary_preemptible_nodes\n properties:\n name: my-node-pool\n cluster: ${primary.id}\n nodeCount: 1\n nodeConfig:\n preemptible: true\n machineType: e2-medium\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### 2 Node Pools, 1 Separately Managed + The Default Node Pool\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.serviceaccount.Account(\"default\", {\n accountId: \"service-account-id\",\n displayName: \"Service Account\",\n});\nconst primary = new gcp.container.Cluster(\"primary\", {\n name: \"marcellus-wallace\",\n location: \"us-central1-a\",\n initialNodeCount: 3,\n nodeLocations: [\"us-central1-c\"],\n nodeConfig: {\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n guestAccelerators: [{\n type: \"nvidia-tesla-k80\",\n count: 1,\n }],\n },\n});\nconst np = new gcp.container.NodePool(\"np\", {\n name: \"my-node-pool\",\n cluster: primary.id,\n nodeConfig: {\n machineType: \"e2-medium\",\n serviceAccount: _default.email,\n oauthScopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.serviceaccount.Account(\"default\",\n account_id=\"service-account-id\",\n display_name=\"Service Account\")\nprimary = gcp.container.Cluster(\"primary\",\n name=\"marcellus-wallace\",\n location=\"us-central1-a\",\n initial_node_count=3,\n node_locations=[\"us-central1-c\"],\n node_config={\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n \"guest_accelerators\": [{\n \"type\": \"nvidia-tesla-k80\",\n \"count\": 1,\n }],\n })\nnp = gcp.container.NodePool(\"np\",\n name=\"my-node-pool\",\n cluster=primary.id,\n node_config={\n \"machine_type\": \"e2-medium\",\n \"service_account\": default.email,\n \"oauth_scopes\": [\"https://www.googleapis.com/auth/cloud-platform\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceAccount.Account(\"default\", new()\n {\n AccountId = \"service-account-id\",\n DisplayName = \"Service Account\",\n });\n\n var primary = new Gcp.Container.Cluster(\"primary\", new()\n {\n Name = \"marcellus-wallace\",\n Location = \"us-central1-a\",\n InitialNodeCount = 3,\n NodeLocations = new[]\n {\n \"us-central1-c\",\n },\n NodeConfig = new Gcp.Container.Inputs.ClusterNodeConfigArgs\n {\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n GuestAccelerators = new[]\n {\n new Gcp.Container.Inputs.ClusterNodeConfigGuestAcceleratorArgs\n {\n Type = \"nvidia-tesla-k80\",\n Count = 1,\n },\n },\n },\n });\n\n var np = new Gcp.Container.NodePool(\"np\", new()\n {\n Name = \"my-node-pool\",\n Cluster = primary.Id,\n NodeConfig = new Gcp.Container.Inputs.NodePoolNodeConfigArgs\n {\n MachineType = \"e2-medium\",\n ServiceAccount = @default.Email,\n OauthScopes = new[]\n {\n \"https://www.googleapis.com/auth/cloud-platform\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/container\"\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 := serviceaccount.NewAccount(ctx, \"default\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"service-account-id\"),\n\t\t\tDisplayName: pulumi.String(\"Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimary, err := container.NewCluster(ctx, \"primary\", \u0026container.ClusterArgs{\n\t\t\tName: pulumi.String(\"marcellus-wallace\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tInitialNodeCount: pulumi.Int(3),\n\t\t\tNodeLocations: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"us-central1-c\"),\n\t\t\t},\n\t\t\tNodeConfig: \u0026container.ClusterNodeConfigArgs{\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t\tGuestAccelerators: container.ClusterNodeConfigGuestAcceleratorArray{\n\t\t\t\t\t\u0026container.ClusterNodeConfigGuestAcceleratorArgs{\n\t\t\t\t\t\tType: pulumi.String(\"nvidia-tesla-k80\"),\n\t\t\t\t\t\tCount: pulumi.Int(1),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = container.NewNodePool(ctx, \"np\", \u0026container.NodePoolArgs{\n\t\t\tName: pulumi.String(\"my-node-pool\"),\n\t\t\tCluster: primary.ID(),\n\t\t\tNodeConfig: \u0026container.NodePoolNodeConfigArgs{\n\t\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\t\tServiceAccount: _default.Email,\n\t\t\t\tOauthScopes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"https://www.googleapis.com/auth/cloud-platform\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.container.Cluster;\nimport com.pulumi.gcp.container.ClusterArgs;\nimport com.pulumi.gcp.container.inputs.ClusterNodeConfigArgs;\nimport com.pulumi.gcp.container.NodePool;\nimport com.pulumi.gcp.container.NodePoolArgs;\nimport com.pulumi.gcp.container.inputs.NodePoolNodeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Account(\"default\", AccountArgs.builder()\n .accountId(\"service-account-id\")\n .displayName(\"Service Account\")\n .build());\n\n var primary = new Cluster(\"primary\", ClusterArgs.builder()\n .name(\"marcellus-wallace\")\n .location(\"us-central1-a\")\n .initialNodeCount(3)\n .nodeLocations(\"us-central1-c\")\n .nodeConfig(ClusterNodeConfigArgs.builder()\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .guestAccelerators(ClusterNodeConfigGuestAcceleratorArgs.builder()\n .type(\"nvidia-tesla-k80\")\n .count(1)\n .build())\n .build())\n .build());\n\n var np = new NodePool(\"np\", NodePoolArgs.builder()\n .name(\"my-node-pool\")\n .cluster(primary.id())\n .nodeConfig(NodePoolNodeConfigArgs.builder()\n .machineType(\"e2-medium\")\n .serviceAccount(default_.email())\n .oauthScopes(\"https://www.googleapis.com/auth/cloud-platform\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:serviceaccount:Account\n properties:\n accountId: service-account-id\n displayName: Service Account\n np:\n type: gcp:container:NodePool\n properties:\n name: my-node-pool\n cluster: ${primary.id}\n nodeConfig:\n machineType: e2-medium\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n primary:\n type: gcp:container:Cluster\n properties:\n name: marcellus-wallace\n location: us-central1-a\n initialNodeCount: 3\n nodeLocations:\n - us-central1-c\n nodeConfig:\n serviceAccount: ${default.email}\n oauthScopes:\n - https://www.googleapis.com/auth/cloud-platform\n guestAccelerators:\n - type: nvidia-tesla-k80\n count: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNode pools can be imported using the `project`, `location`, `cluster` and `name`. If\n\nthe project is omitted, the project value in the provider configuration will be used. Examples:\n\n* `{{project_id}}/{{location}}/{{cluster_id}}/{{pool_id}}`\n\n* `{{location}}/{{cluster_id}}/{{pool_id}}`\n\nWhen using the `pulumi import` command, node pools can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:container/nodePool:NodePool default {{project_id}}/{{location}}/{{cluster_id}}/{{pool_id}}\n```\n\n```sh\n$ pulumi import gcp:container/nodePool:NodePool default {{location}}/{{cluster_id}}/{{pool_id}}\n```\n\n", "properties": { "autoscaling": { "$ref": "#/types/gcp:container/NodePoolAutoscaling:NodePoolAutoscaling", @@ -197553,7 +197553,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, \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_85840\",\n settings: {\n initialUser: {\n user: \"alloyuser_60302\",\n password: \"alloypass_22811\",\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_85840\",\n \"settings\": {\n \"initial_user\": {\n \"user\": \"alloyuser_60302\",\n \"password\": \"alloypass_22811\",\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_85840\",\n Settings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsArgs\n {\n InitialUser = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsInitialUserArgs\n {\n User = \"alloyuser_60302\",\n Password = \"alloypass_22811\",\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_85840\"),\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_60302\"),\n\t\t\t\t\t\tPassword: pulumi.String(\"alloypass_22811\"),\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_85840\")\n .settings(ConnectionProfileAlloydbSettingsArgs.builder()\n .initialUser(ConnectionProfileAlloydbSettingsInitialUserArgs.builder()\n .user(\"alloyuser_60302\")\n .password(\"alloypass_22811\")\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_85840\n settings:\n initialUser:\n user: alloyuser_60302\n password: alloypass_22811\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", + "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_85840\",\n settings: {\n initialUser: {\n user: \"alloyuser_60302\",\n password: \"alloypass_22811\",\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_85840\",\n \"settings\": {\n \"initial_user\": {\n \"user\": \"alloyuser_60302\",\n \"password\": \"alloypass_22811\",\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_85840\",\n Settings = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsArgs\n {\n InitialUser = new Gcp.DatabaseMigrationService.Inputs.ConnectionProfileAlloydbSettingsInitialUserArgs\n {\n User = \"alloyuser_60302\",\n Password = \"alloypass_22811\",\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_default, 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_85840\"),\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_60302\"),\n\t\t\t\t\t\tPassword: pulumi.String(\"alloypass_22811\"),\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_85840\")\n .settings(ConnectionProfileAlloydbSettingsArgs.builder()\n .initialUser(ConnectionProfileAlloydbSettingsInitialUserArgs.builder()\n .user(\"alloyuser_60302\")\n .password(\"alloypass_22811\")\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_85840\n settings:\n initialUser:\n user: alloyuser_60302\n password: alloypass_22811\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_default, 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", @@ -197793,7 +197793,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, \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", + "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_default, 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_default, 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", @@ -201893,7 +201893,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, \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", + "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", @@ -202728,7 +202728,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: \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", + "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_default, 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", @@ -206348,7 +206348,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_72490\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleTask = new gcp.dataplex.Task(\"example\", {\n taskId: \"tf-test-task_89605\",\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_72490\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_task = gcp.dataplex.Task(\"example\",\n task_id=\"tf-test-task_89605\",\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_72490\",\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_89605\",\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_72490\"),\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_89605\"),\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_72490\")\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_89605\")\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_72490\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_89605\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_56730\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleSpark = new gcp.dataplex.Lake(\"example_spark\", {\n name: \"tf-test-lake_95154\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleSparkTask = new gcp.dataplex.Task(\"example_spark\", {\n taskId: \"tf-test-task_64336\",\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_56730\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_spark = gcp.dataplex.Lake(\"example_spark\",\n name=\"tf-test-lake_95154\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_spark_task = gcp.dataplex.Task(\"example_spark\",\n task_id=\"tf-test-task_64336\",\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_56730\",\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_95154\",\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_64336\",\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_56730\"),\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_95154\"),\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_64336\"),\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_56730\")\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_95154\")\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_64336\")\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_56730\n autoCreateSubnetworks: true\n exampleSpark:\n type: gcp:dataplex:Lake\n name: example_spark\n properties:\n name: tf-test-lake_95154\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_64336\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_34962\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleNotebook = new gcp.dataplex.Lake(\"example_notebook\", {\n name: \"tf-test-lake_74000\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleNotebookTask = new gcp.dataplex.Task(\"example_notebook\", {\n taskId: \"tf-test-task_75125\",\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_34962\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_notebook = gcp.dataplex.Lake(\"example_notebook\",\n name=\"tf-test-lake_74000\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_notebook_task = gcp.dataplex.Task(\"example_notebook\",\n task_id=\"tf-test-task_75125\",\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_34962\",\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_74000\",\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_75125\",\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_34962\"),\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_74000\"),\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_75125\"),\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_34962\")\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_74000\")\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_75125\")\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_34962\n autoCreateSubnetworks: true\n exampleNotebook:\n type: gcp:dataplex:Lake\n name: example_notebook\n properties:\n name: tf-test-lake_74000\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_75125\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_72490\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleTask = new gcp.dataplex.Task(\"example\", {\n taskId: \"tf-test-task_89605\",\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_72490\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_task = gcp.dataplex.Task(\"example\",\n task_id=\"tf-test-task_89605\",\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_72490\",\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_89605\",\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_72490\"),\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_89605\"),\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_72490\")\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_89605\")\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_72490\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_89605\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_56730\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleSpark = new gcp.dataplex.Lake(\"example_spark\", {\n name: \"tf-test-lake_95154\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleSparkTask = new gcp.dataplex.Task(\"example_spark\", {\n taskId: \"tf-test-task_64336\",\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_56730\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_spark = gcp.dataplex.Lake(\"example_spark\",\n name=\"tf-test-lake_95154\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_spark_task = gcp.dataplex.Task(\"example_spark\",\n task_id=\"tf-test-task_64336\",\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_56730\",\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_95154\",\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_64336\",\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_default, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_56730\"),\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_95154\"),\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_64336\"),\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_56730\")\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_95154\")\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_64336\")\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_56730\n autoCreateSubnetworks: true\n exampleSpark:\n type: gcp:dataplex:Lake\n name: example_spark\n properties:\n name: tf-test-lake_95154\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_64336\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_34962\",\n autoCreateSubnetworks: true,\n});\nconst project = gcp.organizations.getProject({});\nconst exampleNotebook = new gcp.dataplex.Lake(\"example_notebook\", {\n name: \"tf-test-lake_74000\",\n location: \"us-central1\",\n project: \"my-project-name\",\n});\nconst exampleNotebookTask = new gcp.dataplex.Task(\"example_notebook\", {\n taskId: \"tf-test-task_75125\",\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_34962\",\n auto_create_subnetworks=True)\nproject = gcp.organizations.get_project()\nexample_notebook = gcp.dataplex.Lake(\"example_notebook\",\n name=\"tf-test-lake_74000\",\n location=\"us-central1\",\n project=\"my-project-name\")\nexample_notebook_task = gcp.dataplex.Task(\"example_notebook\",\n task_id=\"tf-test-task_75125\",\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_34962\",\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_74000\",\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_75125\",\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_default, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-workstation-cluster_34962\"),\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_74000\"),\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_75125\"),\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_34962\")\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_74000\")\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_75125\")\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_34962\n autoCreateSubnetworks: true\n exampleNotebook:\n type: gcp:dataplex:Lake\n name: example_notebook\n properties:\n name: tf-test-lake_74000\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_75125\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", @@ -208306,7 +208306,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_default, 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", @@ -211694,7 +211694,7 @@ } }, "gcp:datastream/connectionProfile:ConnectionProfile": { - "description": "A set of reusable connection configurations to be used as a source or destination for a stream.\n\n\nTo get more information about ConnectionProfile, see:\n\n* [API documentation](https://cloud.google.com/datastream/docs/reference/rest/v1/projects.locations.connectionProfiles)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/datastream/docs/create-connection-profiles)\n\n\n\n## Example Usage\n\n### Datastream Connection Profile Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n gcsProfile: {\n bucket: \"my-bucket\",\n rootPath: \"/path\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n gcs_profile={\n \"bucket\": \"my-bucket\",\n \"root_path\": \"/path\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n GcsProfile = new Gcp.Datastream.Inputs.ConnectionProfileGcsProfileArgs\n {\n Bucket = \"my-bucket\",\n RootPath = \"/path\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tGcsProfile: \u0026datastream.ConnectionProfileGcsProfileArgs{\n\t\t\t\tBucket: pulumi.String(\"my-bucket\"),\n\t\t\t\tRootPath: pulumi.String(\"/path\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileGcsProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .gcsProfile(ConnectionProfileGcsProfileArgs.builder()\n .bucket(\"my-bucket\")\n .rootPath(\"/path\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n gcsProfile:\n bucket: my-bucket\n rootPath: /path\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Postgresql Private Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst privateConnection = new gcp.datastream.PrivateConnection(\"private_connection\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n privateConnectionId: \"my-connection\",\n labels: {\n key: \"value\",\n },\n vpcPeeringConfig: {\n vpc: _default.id,\n subnet: \"10.0.0.0/29\",\n },\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"POSTGRES_14\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst defaultConnectionProfile = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n postgresqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n privateConnectivity: {\n privateConnection: privateConnection.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\nprivate_connection = gcp.datastream.PrivateConnection(\"private_connection\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n private_connection_id=\"my-connection\",\n labels={\n \"key\": \"value\",\n },\n vpc_peering_config={\n \"vpc\": default.id,\n \"subnet\": \"10.0.0.0/29\",\n })\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"POSTGRES_14\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\ndefault_connection_profile = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n postgresql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n },\n private_connectivity={\n \"private_connection\": private_connection.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var privateConnection = new Gcp.Datastream.PrivateConnection(\"private_connection\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n PrivateConnectionId = \"my-connection\",\n Labels = \n {\n { \"key\", \"value\" },\n },\n VpcPeeringConfig = new Gcp.Datastream.Inputs.PrivateConnectionVpcPeeringConfigArgs\n {\n Vpc = @default.Id,\n Subnet = \"10.0.0.0/29\",\n },\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"POSTGRES_14\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var defaultConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n PostgresqlProfile = new Gcp.Datastream.Inputs.ConnectionProfilePostgresqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n PrivateConnectivity = new Gcp.Datastream.Inputs.ConnectionProfilePrivateConnectivityArgs\n {\n PrivateConnection = privateConnection.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\t_, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateConnection, err := datastream.NewPrivateConnection(ctx, \"private_connection\", \u0026datastream.PrivateConnectionArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t\tVpcPeeringConfig: \u0026datastream.PrivateConnectionVpcPeeringConfigArgs{\n\t\t\t\tVpc: _default.ID(),\n\t\t\t\tSubnet: pulumi.String(\"10.0.0.0/29\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_14\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tPostgresqlProfile: \u0026datastream.ConnectionProfilePostgresqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t\tPrivateConnectivity: \u0026datastream.ConnectionProfilePrivateConnectivityArgs{\n\t\t\t\tPrivateConnection: privateConnection.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.datastream.PrivateConnection;\nimport com.pulumi.gcp.datastream.PrivateConnectionArgs;\nimport com.pulumi.gcp.datastream.inputs.PrivateConnectionVpcPeeringConfigArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePostgresqlProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePrivateConnectivityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var privateConnection = new PrivateConnection(\"privateConnection\", PrivateConnectionArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .privateConnectionId(\"my-connection\")\n .labels(Map.of(\"key\", \"value\"))\n .vpcPeeringConfig(PrivateConnectionVpcPeeringConfigArgs.builder()\n .vpc(default_.id())\n .subnet(\"10.0.0.0/29\")\n .build())\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"POSTGRES_14\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var defaultConnectionProfile = new ConnectionProfile(\"defaultConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .postgresqlProfile(ConnectionProfilePostgresqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .privateConnectivity(ConnectionProfilePrivateConnectivityArgs.builder()\n .privateConnection(privateConnection.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n privateConnection:\n type: gcp:datastream:PrivateConnection\n name: private_connection\n properties:\n displayName: Connection profile\n location: us-central1\n privateConnectionId: my-connection\n labels:\n key: value\n vpcPeeringConfig:\n vpc: ${default.id}\n subnet: 10.0.0.0/29\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: POSTGRES_14\n region: us-central1\n settings:\n tier: db-f1-micro\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n defaultConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: default\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n postgresqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n privateConnectivity:\n privateConnection: ${privateConnection.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n gcsProfile: {\n bucket: \"my-bucket\",\n rootPath: \"/path\",\n },\n forwardSshConnectivity: {\n hostname: \"google.com\",\n username: \"my-user\",\n port: 8022,\n password: \"swordfish\",\n },\n labels: {\n key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n gcs_profile={\n \"bucket\": \"my-bucket\",\n \"root_path\": \"/path\",\n },\n forward_ssh_connectivity={\n \"hostname\": \"google.com\",\n \"username\": \"my-user\",\n \"port\": 8022,\n \"password\": \"swordfish\",\n },\n labels={\n \"key\": \"value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n GcsProfile = new Gcp.Datastream.Inputs.ConnectionProfileGcsProfileArgs\n {\n Bucket = \"my-bucket\",\n RootPath = \"/path\",\n },\n ForwardSshConnectivity = new Gcp.Datastream.Inputs.ConnectionProfileForwardSshConnectivityArgs\n {\n Hostname = \"google.com\",\n Username = \"my-user\",\n Port = 8022,\n Password = \"swordfish\",\n },\n Labels = \n {\n { \"key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tGcsProfile: \u0026datastream.ConnectionProfileGcsProfileArgs{\n\t\t\t\tBucket: pulumi.String(\"my-bucket\"),\n\t\t\t\tRootPath: pulumi.String(\"/path\"),\n\t\t\t},\n\t\t\tForwardSshConnectivity: \u0026datastream.ConnectionProfileForwardSshConnectivityArgs{\n\t\t\t\tHostname: pulumi.String(\"google.com\"),\n\t\t\t\tUsername: pulumi.String(\"my-user\"),\n\t\t\t\tPort: pulumi.Int(8022),\n\t\t\t\tPassword: pulumi.String(\"swordfish\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileGcsProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileForwardSshConnectivityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .gcsProfile(ConnectionProfileGcsProfileArgs.builder()\n .bucket(\"my-bucket\")\n .rootPath(\"/path\")\n .build())\n .forwardSshConnectivity(ConnectionProfileForwardSshConnectivityArgs.builder()\n .hostname(\"google.com\")\n .username(\"my-user\")\n .port(8022)\n .password(\"swordfish\")\n .build())\n .labels(Map.of(\"key\", \"value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n gcsProfile:\n bucket: my-bucket\n rootPath: /path\n forwardSshConnectivity:\n hostname: google.com\n username: my-user\n port: 8022\n password: swordfish\n labels:\n key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Postgres\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"POSTGRES_14\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n postgresqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"POSTGRES_14\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n postgresql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"POSTGRES_14\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n PostgresqlProfile = new Gcp.Datastream.Inputs.ConnectionProfilePostgresqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_14\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tPostgresqlProfile: \u0026datastream.ConnectionProfilePostgresqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePostgresqlProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"POSTGRES_14\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var default_ = new ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .postgresqlProfile(ConnectionProfilePostgresqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: POSTGRES_14\n region: us-central1\n settings:\n tier: db-f1-micro\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n postgresqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Sql Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"sql-server\",\n databaseVersion: \"SQLSERVER_2019_STANDARD\",\n region: \"us-central1\",\n rootPassword: \"root-password\",\n deletionProtection: true,\n settings: {\n tier: \"db-custom-2-4096\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n});\nconst db = new gcp.sql.Database(\"db\", {\n name: \"db\",\n instance: instance.name,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"password\",\n});\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"SQL Server Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n sqlServerProfile: {\n hostname: instance.publicIpAddress,\n port: 1433,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"sql-server\",\n database_version=\"SQLSERVER_2019_STANDARD\",\n region=\"us-central1\",\n root_password=\"root-password\",\n deletion_protection=True,\n settings={\n \"tier\": \"db-custom-2-4096\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n })\ndb = gcp.sql.Database(\"db\",\n name=\"db\",\n instance=instance.name)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"password\")\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"SQL Server Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n sql_server_profile={\n \"hostname\": instance.public_ip_address,\n \"port\": 1433,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"sql-server\",\n DatabaseVersion = \"SQLSERVER_2019_STANDARD\",\n Region = \"us-central1\",\n RootPassword = \"root-password\",\n DeletionProtection = true,\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-4096\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Name = \"db\",\n Instance = instance.Name,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"password\",\n });\n\n var @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"SQL Server Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n SqlServerProfile = new Gcp.Datastream.Inputs.ConnectionProfileSqlServerProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Port = 1433,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tName: pulumi.String(\"db\"),\n\t\t\tInstance: instance.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tSqlServerProfile: \u0026datastream.ConnectionProfileSqlServerProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tPort: pulumi.Int(1433),\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileSqlServerProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"sql-server\")\n .databaseVersion(\"SQLSERVER_2019_STANDARD\")\n .region(\"us-central1\")\n .rootPassword(\"root-password\")\n .deletionProtection(true)\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-4096\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .name(\"db\")\n .instance(instance.name())\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"password\")\n .build());\n\n var default_ = new ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"SQL Server Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .sqlServerProfile(ConnectionProfileSqlServerProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .port(1433)\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: sql-server\n databaseVersion: SQLSERVER_2019_STANDARD\n region: us-central1\n rootPassword: root-password\n deletionProtection: true\n settings:\n tier: db-custom-2-4096\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n db:\n type: gcp:sql:Database\n properties:\n name: db\n instance: ${instance.name}\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: password\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: SQL Server Source\n location: us-central1\n connectionProfileId: source-profile\n sqlServerProfile:\n hostname: ${instance.publicIpAddress}\n port: 1433\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnectionProfile can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}`\n\n* `{{project}}/{{location}}/{{connection_profile_id}}`\n\n* `{{location}}/{{connection_profile_id}}`\n\nWhen using the `pulumi import` command, ConnectionProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datastream/connectionProfile:ConnectionProfile default projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/connectionProfile:ConnectionProfile default {{project}}/{{location}}/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/connectionProfile:ConnectionProfile default {{location}}/{{connection_profile_id}}\n```\n\n", + "description": "A set of reusable connection configurations to be used as a source or destination for a stream.\n\n\nTo get more information about ConnectionProfile, see:\n\n* [API documentation](https://cloud.google.com/datastream/docs/reference/rest/v1/projects.locations.connectionProfiles)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/datastream/docs/create-connection-profiles)\n\n\n\n## Example Usage\n\n### Datastream Connection Profile Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n gcsProfile: {\n bucket: \"my-bucket\",\n rootPath: \"/path\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n gcs_profile={\n \"bucket\": \"my-bucket\",\n \"root_path\": \"/path\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n GcsProfile = new Gcp.Datastream.Inputs.ConnectionProfileGcsProfileArgs\n {\n Bucket = \"my-bucket\",\n RootPath = \"/path\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tGcsProfile: \u0026datastream.ConnectionProfileGcsProfileArgs{\n\t\t\t\tBucket: pulumi.String(\"my-bucket\"),\n\t\t\t\tRootPath: pulumi.String(\"/path\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileGcsProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .gcsProfile(ConnectionProfileGcsProfileArgs.builder()\n .bucket(\"my-bucket\")\n .rootPath(\"/path\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n gcsProfile:\n bucket: my-bucket\n rootPath: /path\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Postgresql Private Connection\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst _default = new gcp.compute.Network(\"default\", {name: \"my-network\"});\nconst privateConnection = new gcp.datastream.PrivateConnection(\"private_connection\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n privateConnectionId: \"my-connection\",\n labels: {\n key: \"value\",\n },\n vpcPeeringConfig: {\n vpc: _default.id,\n subnet: \"10.0.0.0/29\",\n },\n});\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"POSTGRES_14\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst defaultConnectionProfile = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n postgresqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n privateConnectivity: {\n privateConnection: privateConnection.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ndefault = gcp.compute.Network(\"default\", name=\"my-network\")\nprivate_connection = gcp.datastream.PrivateConnection(\"private_connection\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n private_connection_id=\"my-connection\",\n labels={\n \"key\": \"value\",\n },\n vpc_peering_config={\n \"vpc\": default.id,\n \"subnet\": \"10.0.0.0/29\",\n })\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"POSTGRES_14\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\ndefault_connection_profile = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n postgresql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n },\n private_connectivity={\n \"private_connection\": private_connection.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n });\n\n var privateConnection = new Gcp.Datastream.PrivateConnection(\"private_connection\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n PrivateConnectionId = \"my-connection\",\n Labels = \n {\n { \"key\", \"value\" },\n },\n VpcPeeringConfig = new Gcp.Datastream.Inputs.PrivateConnectionVpcPeeringConfigArgs\n {\n Vpc = @default.Id,\n Subnet = \"10.0.0.0/29\",\n },\n });\n\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"POSTGRES_14\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var defaultConnectionProfile = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n PostgresqlProfile = new Gcp.Datastream.Inputs.ConnectionProfilePostgresqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n PrivateConnectivity = new Gcp.Datastream.Inputs.ConnectionProfilePrivateConnectivityArgs\n {\n PrivateConnection = privateConnection.Id,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\t_default, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateConnection, err := datastream.NewPrivateConnection(ctx, \"private_connection\", \u0026datastream.PrivateConnectionArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t\tVpcPeeringConfig: \u0026datastream.PrivateConnectionVpcPeeringConfigArgs{\n\t\t\t\tVpc: _default.ID(),\n\t\t\t\tSubnet: pulumi.String(\"10.0.0.0/29\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_14\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tPostgresqlProfile: \u0026datastream.ConnectionProfilePostgresqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t\tPrivateConnectivity: \u0026datastream.ConnectionProfilePrivateConnectivityArgs{\n\t\t\t\tPrivateConnection: privateConnection.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.datastream.PrivateConnection;\nimport com.pulumi.gcp.datastream.PrivateConnectionArgs;\nimport com.pulumi.gcp.datastream.inputs.PrivateConnectionVpcPeeringConfigArgs;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePostgresqlProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePrivateConnectivityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"my-network\")\n .build());\n\n var privateConnection = new PrivateConnection(\"privateConnection\", PrivateConnectionArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .privateConnectionId(\"my-connection\")\n .labels(Map.of(\"key\", \"value\"))\n .vpcPeeringConfig(PrivateConnectionVpcPeeringConfigArgs.builder()\n .vpc(default_.id())\n .subnet(\"10.0.0.0/29\")\n .build())\n .build());\n\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"POSTGRES_14\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var defaultConnectionProfile = new ConnectionProfile(\"defaultConnectionProfile\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .postgresqlProfile(ConnectionProfilePostgresqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .privateConnectivity(ConnectionProfilePrivateConnectivityArgs.builder()\n .privateConnection(privateConnection.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n privateConnection:\n type: gcp:datastream:PrivateConnection\n name: private_connection\n properties:\n displayName: Connection profile\n location: us-central1\n privateConnectionId: my-connection\n labels:\n key: value\n vpcPeeringConfig:\n vpc: ${default.id}\n subnet: 10.0.0.0/29\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: POSTGRES_14\n region: us-central1\n settings:\n tier: db-f1-micro\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n defaultConnectionProfile:\n type: gcp:datastream:ConnectionProfile\n name: default\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n postgresqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n privateConnectivity:\n privateConnection: ${privateConnection.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n gcsProfile: {\n bucket: \"my-bucket\",\n rootPath: \"/path\",\n },\n forwardSshConnectivity: {\n hostname: \"google.com\",\n username: \"my-user\",\n port: 8022,\n password: \"swordfish\",\n },\n labels: {\n key: \"value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n gcs_profile={\n \"bucket\": \"my-bucket\",\n \"root_path\": \"/path\",\n },\n forward_ssh_connectivity={\n \"hostname\": \"google.com\",\n \"username\": \"my-user\",\n \"port\": 8022,\n \"password\": \"swordfish\",\n },\n labels={\n \"key\": \"value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n GcsProfile = new Gcp.Datastream.Inputs.ConnectionProfileGcsProfileArgs\n {\n Bucket = \"my-bucket\",\n RootPath = \"/path\",\n },\n ForwardSshConnectivity = new Gcp.Datastream.Inputs.ConnectionProfileForwardSshConnectivityArgs\n {\n Hostname = \"google.com\",\n Username = \"my-user\",\n Port = 8022,\n Password = \"swordfish\",\n },\n Labels = \n {\n { \"key\", \"value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_, err := datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tGcsProfile: \u0026datastream.ConnectionProfileGcsProfileArgs{\n\t\t\t\tBucket: pulumi.String(\"my-bucket\"),\n\t\t\t\tRootPath: pulumi.String(\"/path\"),\n\t\t\t},\n\t\t\tForwardSshConnectivity: \u0026datastream.ConnectionProfileForwardSshConnectivityArgs{\n\t\t\t\tHostname: pulumi.String(\"google.com\"),\n\t\t\t\tUsername: pulumi.String(\"my-user\"),\n\t\t\t\tPort: pulumi.Int(8022),\n\t\t\t\tPassword: pulumi.String(\"swordfish\"),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"key\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileGcsProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileForwardSshConnectivityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .gcsProfile(ConnectionProfileGcsProfileArgs.builder()\n .bucket(\"my-bucket\")\n .rootPath(\"/path\")\n .build())\n .forwardSshConnectivity(ConnectionProfileForwardSshConnectivityArgs.builder()\n .hostname(\"google.com\")\n .username(\"my-user\")\n .port(8022)\n .password(\"swordfish\")\n .build())\n .labels(Map.of(\"key\", \"value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n gcsProfile:\n bucket: my-bucket\n rootPath: /path\n forwardSshConnectivity:\n hostname: google.com\n username: my-user\n port: 8022\n password: swordfish\n labels:\n key: value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Postgres\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as random from \"@pulumi/random\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"my-instance\",\n databaseVersion: \"POSTGRES_14\",\n region: \"us-central1\",\n settings: {\n tier: \"db-f1-micro\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n deletionProtection: true,\n});\nconst db = new gcp.sql.Database(\"db\", {\n instance: instance.name,\n name: \"db\",\n});\nconst pwd = new random.RandomPassword(\"pwd\", {\n length: 16,\n special: false,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: pwd.result,\n});\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"Connection profile\",\n location: \"us-central1\",\n connectionProfileId: \"my-profile\",\n postgresqlProfile: {\n hostname: instance.publicIpAddress,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_random as random\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"my-instance\",\n database_version=\"POSTGRES_14\",\n region=\"us-central1\",\n settings={\n \"tier\": \"db-f1-micro\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n },\n deletion_protection=True)\ndb = gcp.sql.Database(\"db\",\n instance=instance.name,\n name=\"db\")\npwd = random.RandomPassword(\"pwd\",\n length=16,\n special=False)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=pwd.result)\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"Connection profile\",\n location=\"us-central1\",\n connection_profile_id=\"my-profile\",\n postgresql_profile={\n \"hostname\": instance.public_ip_address,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Random = Pulumi.Random;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"my-instance\",\n DatabaseVersion = \"POSTGRES_14\",\n Region = \"us-central1\",\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-f1-micro\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n DeletionProtection = true,\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Instance = instance.Name,\n Name = \"db\",\n });\n\n var pwd = new Random.RandomPassword(\"pwd\", new()\n {\n Length = 16,\n Special = false,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = pwd.Result,\n });\n\n var @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"Connection profile\",\n Location = \"us-central1\",\n ConnectionProfileId = \"my-profile\",\n PostgresqlProfile = new Gcp.Datastream.Inputs.ConnectionProfilePostgresqlProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tinstance, err := sql.NewDatabaseInstance(ctx, \"instance\", \u0026sql.DatabaseInstanceArgs{\n\t\t\tName: pulumi.String(\"my-instance\"),\n\t\t\tDatabaseVersion: pulumi.String(\"POSTGRES_14\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSettings: \u0026sql.DatabaseInstanceSettingsArgs{\n\t\t\t\tTier: pulumi.String(\"db-f1-micro\"),\n\t\t\t\tIpConfiguration: \u0026sql.DatabaseInstanceSettingsIpConfigurationArgs{\n\t\t\t\t\tAuthorizedNetworks: sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArray{\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.71.242.81\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.28.29\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.6.157\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.67.234.134\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026sql.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs{\n\t\t\t\t\t\t\tValue: pulumi.String(\"34.72.239.218\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tInstance: instance.Name,\n\t\t\tName: pulumi.String(\"db\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpwd, err := random.NewRandomPassword(ctx, \"pwd\", \u0026random.RandomPasswordArgs{\n\t\t\tLength: pulumi.Int(16),\n\t\t\tSpecial: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pwd.Result,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"Connection profile\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"my-profile\"),\n\t\t\tPostgresqlProfile: \u0026datastream.ConnectionProfilePostgresqlProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.random.RandomPassword;\nimport com.pulumi.random.RandomPasswordArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfilePostgresqlProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"my-instance\")\n .databaseVersion(\"POSTGRES_14\")\n .region(\"us-central1\")\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-f1-micro\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .instance(instance.name())\n .name(\"db\")\n .build());\n\n var pwd = new RandomPassword(\"pwd\", RandomPasswordArgs.builder()\n .length(16)\n .special(false)\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(pwd.result())\n .build());\n\n var default_ = new ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"Connection profile\")\n .location(\"us-central1\")\n .connectionProfileId(\"my-profile\")\n .postgresqlProfile(ConnectionProfilePostgresqlProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: my-instance\n databaseVersion: POSTGRES_14\n region: us-central1\n settings:\n tier: db-f1-micro\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n deletionProtection: true\n db:\n type: gcp:sql:Database\n properties:\n instance: ${instance.name}\n name: db\n pwd:\n type: random:RandomPassword\n properties:\n length: 16\n special: false\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: ${pwd.result}\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: Connection profile\n location: us-central1\n connectionProfileId: my-profile\n postgresqlProfile:\n hostname: ${instance.publicIpAddress}\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Datastream Connection Profile Sql Server\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst instance = new gcp.sql.DatabaseInstance(\"instance\", {\n name: \"sql-server\",\n databaseVersion: \"SQLSERVER_2019_STANDARD\",\n region: \"us-central1\",\n rootPassword: \"root-password\",\n deletionProtection: true,\n settings: {\n tier: \"db-custom-2-4096\",\n ipConfiguration: {\n authorizedNetworks: [\n {\n value: \"34.71.242.81\",\n },\n {\n value: \"34.72.28.29\",\n },\n {\n value: \"34.67.6.157\",\n },\n {\n value: \"34.67.234.134\",\n },\n {\n value: \"34.72.239.218\",\n },\n ],\n },\n },\n});\nconst db = new gcp.sql.Database(\"db\", {\n name: \"db\",\n instance: instance.name,\n});\nconst user = new gcp.sql.User(\"user\", {\n name: \"user\",\n instance: instance.name,\n password: \"password\",\n});\nconst _default = new gcp.datastream.ConnectionProfile(\"default\", {\n displayName: \"SQL Server Source\",\n location: \"us-central1\",\n connectionProfileId: \"source-profile\",\n sqlServerProfile: {\n hostname: instance.publicIpAddress,\n port: 1433,\n username: user.name,\n password: user.password,\n database: db.name,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ninstance = gcp.sql.DatabaseInstance(\"instance\",\n name=\"sql-server\",\n database_version=\"SQLSERVER_2019_STANDARD\",\n region=\"us-central1\",\n root_password=\"root-password\",\n deletion_protection=True,\n settings={\n \"tier\": \"db-custom-2-4096\",\n \"ip_configuration\": {\n \"authorized_networks\": [\n {\n \"value\": \"34.71.242.81\",\n },\n {\n \"value\": \"34.72.28.29\",\n },\n {\n \"value\": \"34.67.6.157\",\n },\n {\n \"value\": \"34.67.234.134\",\n },\n {\n \"value\": \"34.72.239.218\",\n },\n ],\n },\n })\ndb = gcp.sql.Database(\"db\",\n name=\"db\",\n instance=instance.name)\nuser = gcp.sql.User(\"user\",\n name=\"user\",\n instance=instance.name,\n password=\"password\")\ndefault = gcp.datastream.ConnectionProfile(\"default\",\n display_name=\"SQL Server Source\",\n location=\"us-central1\",\n connection_profile_id=\"source-profile\",\n sql_server_profile={\n \"hostname\": instance.public_ip_address,\n \"port\": 1433,\n \"username\": user.name,\n \"password\": user.password,\n \"database\": db.name,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var instance = new Gcp.Sql.DatabaseInstance(\"instance\", new()\n {\n Name = \"sql-server\",\n DatabaseVersion = \"SQLSERVER_2019_STANDARD\",\n Region = \"us-central1\",\n RootPassword = \"root-password\",\n DeletionProtection = true,\n Settings = new Gcp.Sql.Inputs.DatabaseInstanceSettingsArgs\n {\n Tier = \"db-custom-2-4096\",\n IpConfiguration = new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationArgs\n {\n AuthorizedNetworks = new[]\n {\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.71.242.81\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.28.29\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.6.157\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.67.234.134\",\n },\n new Gcp.Sql.Inputs.DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs\n {\n Value = \"34.72.239.218\",\n },\n },\n },\n },\n });\n\n var db = new Gcp.Sql.Database(\"db\", new()\n {\n Name = \"db\",\n Instance = instance.Name,\n });\n\n var user = new Gcp.Sql.User(\"user\", new()\n {\n Name = \"user\",\n Instance = instance.Name,\n Password = \"password\",\n });\n\n var @default = new Gcp.Datastream.ConnectionProfile(\"default\", new()\n {\n DisplayName = \"SQL Server Source\",\n Location = \"us-central1\",\n ConnectionProfileId = \"source-profile\",\n SqlServerProfile = new Gcp.Datastream.Inputs.ConnectionProfileSqlServerProfileArgs\n {\n Hostname = instance.PublicIpAddress,\n Port = 1433,\n Username = user.Name,\n Password = user.Password,\n Database = db.Name,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdb, err := sql.NewDatabase(ctx, \"db\", \u0026sql.DatabaseArgs{\n\t\t\tName: pulumi.String(\"db\"),\n\t\t\tInstance: instance.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tuser, err := sql.NewUser(ctx, \"user\", \u0026sql.UserArgs{\n\t\t\tName: pulumi.String(\"user\"),\n\t\t\tInstance: instance.Name,\n\t\t\tPassword: pulumi.String(\"password\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = datastream.NewConnectionProfile(ctx, \"default\", \u0026datastream.ConnectionProfileArgs{\n\t\t\tDisplayName: pulumi.String(\"SQL Server Source\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionProfileId: pulumi.String(\"source-profile\"),\n\t\t\tSqlServerProfile: \u0026datastream.ConnectionProfileSqlServerProfileArgs{\n\t\t\t\tHostname: instance.PublicIpAddress,\n\t\t\t\tPort: pulumi.Int(1433),\n\t\t\t\tUsername: user.Name,\n\t\t\t\tPassword: user.Password,\n\t\t\t\tDatabase: db.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.sql.DatabaseInstance;\nimport com.pulumi.gcp.sql.DatabaseInstanceArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsArgs;\nimport com.pulumi.gcp.sql.inputs.DatabaseInstanceSettingsIpConfigurationArgs;\nimport com.pulumi.gcp.sql.Database;\nimport com.pulumi.gcp.sql.DatabaseArgs;\nimport com.pulumi.gcp.sql.User;\nimport com.pulumi.gcp.sql.UserArgs;\nimport com.pulumi.gcp.datastream.ConnectionProfile;\nimport com.pulumi.gcp.datastream.ConnectionProfileArgs;\nimport com.pulumi.gcp.datastream.inputs.ConnectionProfileSqlServerProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var instance = new DatabaseInstance(\"instance\", DatabaseInstanceArgs.builder()\n .name(\"sql-server\")\n .databaseVersion(\"SQLSERVER_2019_STANDARD\")\n .region(\"us-central1\")\n .rootPassword(\"root-password\")\n .deletionProtection(true)\n .settings(DatabaseInstanceSettingsArgs.builder()\n .tier(\"db-custom-2-4096\")\n .ipConfiguration(DatabaseInstanceSettingsIpConfigurationArgs.builder()\n .authorizedNetworks( \n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.71.242.81\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.28.29\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.6.157\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.67.234.134\")\n .build(),\n DatabaseInstanceSettingsIpConfigurationAuthorizedNetworkArgs.builder()\n .value(\"34.72.239.218\")\n .build())\n .build())\n .build())\n .build());\n\n var db = new Database(\"db\", DatabaseArgs.builder()\n .name(\"db\")\n .instance(instance.name())\n .build());\n\n var user = new User(\"user\", UserArgs.builder()\n .name(\"user\")\n .instance(instance.name())\n .password(\"password\")\n .build());\n\n var default_ = new ConnectionProfile(\"default\", ConnectionProfileArgs.builder()\n .displayName(\"SQL Server Source\")\n .location(\"us-central1\")\n .connectionProfileId(\"source-profile\")\n .sqlServerProfile(ConnectionProfileSqlServerProfileArgs.builder()\n .hostname(instance.publicIpAddress())\n .port(1433)\n .username(user.name())\n .password(user.password())\n .database(db.name())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:sql:DatabaseInstance\n properties:\n name: sql-server\n databaseVersion: SQLSERVER_2019_STANDARD\n region: us-central1\n rootPassword: root-password\n deletionProtection: true\n settings:\n tier: db-custom-2-4096\n ipConfiguration:\n authorizedNetworks:\n - value: 34.71.242.81\n - value: 34.72.28.29\n - value: 34.67.6.157\n - value: 34.67.234.134\n - value: 34.72.239.218\n db:\n type: gcp:sql:Database\n properties:\n name: db\n instance: ${instance.name}\n user:\n type: gcp:sql:User\n properties:\n name: user\n instance: ${instance.name}\n password: password\n default:\n type: gcp:datastream:ConnectionProfile\n properties:\n displayName: SQL Server Source\n location: us-central1\n connectionProfileId: source-profile\n sqlServerProfile:\n hostname: ${instance.publicIpAddress}\n port: 1433\n username: ${user.name}\n password: ${user.password}\n database: ${db.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConnectionProfile can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}`\n\n* `{{project}}/{{location}}/{{connection_profile_id}}`\n\n* `{{location}}/{{connection_profile_id}}`\n\nWhen using the `pulumi import` command, ConnectionProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:datastream/connectionProfile:ConnectionProfile default projects/{{project}}/locations/{{location}}/connectionProfiles/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/connectionProfile:ConnectionProfile default {{project}}/{{location}}/{{connection_profile_id}}\n```\n\n```sh\n$ pulumi import gcp:datastream/connectionProfile:ConnectionProfile default {{location}}/{{connection_profile_id}}\n```\n\n", "properties": { "bigqueryProfile": { "$ref": "#/types/gcp:datastream/ConnectionProfileBigqueryProfile:ConnectionProfileBigqueryProfile", @@ -212537,7 +212537,7 @@ } }, "gcp:developerconnect/connection:Connection": { - "description": "A connection for GitHub, GitHub Enterprise, GitLab, and GitLab Enterprise.\n\n\n\n## Example Usage\n\n### Developer Connect Connection New\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Setup permissions. Only needed once per project\nconst devconnect_p4sa = new gcp.projects.ServiceIdentity(\"devconnect-p4sa\", {service: \"developerconnect.googleapis.com\"});\nconst devconnect_secret = new gcp.projects.IAMMember(\"devconnect-secret\", {\n project: \"my-project-name\",\n role: \"roles/secretmanager.admin\",\n member: devconnect_p4sa.member,\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection-new\",\n githubConfig: {\n githubApp: \"FIREBASE\",\n },\n}, {\n dependsOn: [devconnect_secret],\n});\nexport const nextSteps = my_connection.installationStates;\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Setup permissions. Only needed once per project\ndevconnect_p4sa = gcp.projects.ServiceIdentity(\"devconnect-p4sa\", service=\"developerconnect.googleapis.com\")\ndevconnect_secret = gcp.projects.IAMMember(\"devconnect-secret\",\n project=\"my-project-name\",\n role=\"roles/secretmanager.admin\",\n member=devconnect_p4sa.member)\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection-new\",\n github_config={\n \"github_app\": \"FIREBASE\",\n },\n opts = pulumi.ResourceOptions(depends_on=[devconnect_secret]))\npulumi.export(\"nextSteps\", my_connection.installation_states)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Setup permissions. Only needed once per project\n var devconnect_p4sa = new Gcp.Projects.ServiceIdentity(\"devconnect-p4sa\", new()\n {\n Service = \"developerconnect.googleapis.com\",\n });\n\n var devconnect_secret = new Gcp.Projects.IAMMember(\"devconnect-secret\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/secretmanager.admin\",\n Member = devconnect_p4sa.Member,\n });\n\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection-new\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"FIREBASE\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n devconnect_secret,\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"nextSteps\"] = my_connection.InstallationStates,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Setup permissions. Only needed once per project\n\t\t_, err := projects.NewServiceIdentity(ctx, \"devconnect-p4sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"developerconnect.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"devconnect-secret\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.admin\"),\n\t\t\tMember: devconnect_p4sa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection-new\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"FIREBASE\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdevconnect_secret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"nextSteps\", my_connection.InstallationStates)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Setup permissions. Only needed once per project\n var devconnect_p4sa = new ServiceIdentity(\"devconnect-p4sa\", ServiceIdentityArgs.builder()\n .service(\"developerconnect.googleapis.com\")\n .build());\n\n var devconnect_secret = new IAMMember(\"devconnect-secret\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/secretmanager.admin\")\n .member(devconnect_p4sa.member())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection-new\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"FIREBASE\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(devconnect_secret)\n .build());\n\n ctx.export(\"nextSteps\", my_connection.installationStates());\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection-new\n githubConfig:\n githubApp: FIREBASE\n options:\n dependsOn:\n - ${[\"devconnect-secret\"]}\n # Setup permissions. Only needed once per project\n devconnect-p4sa:\n type: gcp:projects:ServiceIdentity\n properties:\n service: developerconnect.googleapis.com\n devconnect-secret:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/secretmanager.admin\n member: ${[\"devconnect-p4sa\"].member}\noutputs:\n nextSteps: ${[\"my-connection\"].installationStates}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Existing Credentials\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection-cred\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/your-project/secrets/your-secret-id/versions/latest\",\n },\n },\n});\nexport const nextSteps = my_connection.installationStates;\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection-cred\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/your-project/secrets/your-secret-id/versions/latest\",\n },\n })\npulumi.export(\"nextSteps\", my_connection.installation_states)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection-cred\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/your-project/secrets/your-secret-id/versions/latest\",\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"nextSteps\"] = my_connection.InstallationStates,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection-cred\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/your-project/secrets/your-secret-id/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"nextSteps\", my_connection.InstallationStates)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection-cred\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/your-project/secrets/your-secret-id/versions/latest\")\n .build())\n .build())\n .build());\n\n ctx.export(\"nextSteps\", my_connection.installationStates());\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection-cred\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n authorizerCredential:\n oauthTokenSecretVersion: projects/your-project/secrets/your-secret-id/versions/latest\noutputs:\n nextSteps: ${[\"my-connection\"].installationStates}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Existing Installation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst devconnect_p4sa = new gcp.projects.ServiceIdentity(\"devconnect-p4sa\", {service: \"developerconnect.googleapis.com\"});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicyOutput({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [devconnect_p4sa.member],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"my-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n appInstallationId: \"123123\",\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\ndevconnect_p4sa = gcp.projects.ServiceIdentity(\"devconnect-p4sa\", service=\"developerconnect.googleapis.com\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy_output(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [devconnect_p4sa.member],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"my-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"app_installation_id\": \"123123\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": github_token_secret_version.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var devconnect_p4sa = new Gcp.Projects.ServiceIdentity(\"devconnect-p4sa\", new()\n {\n Service = \"developerconnect.googleapis.com\",\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n devconnect_p4sa.Member,\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"my-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AppInstallationId = \"123123\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"github-token-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"my-github-token.txt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"github-token-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: github_token_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewServiceIdentity(ctx, \"devconnect-p4sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"developerconnect.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor := organizations.LookupIAMPolicyOutput(ctx, organizations.GetIAMPolicyOutputArgs{\n\t\t\tBindings: organizations.GetIAMPolicyBindingArray{\n\t\t\t\t\u0026organizations.GetIAMPolicyBindingArgs{\n\t\t\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\t\t\tMembers: pulumi.StringArray{\n\t\t\t\t\t\tdevconnect_p4sa.Member,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.ApplyT(func(p4sa_secretAccessor organizations.GetIAMPolicyResult) (*string, error) {\n\t\t\t\treturn \u0026p4sa_secretAccessor.PolicyData, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"123123\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: github_token_secret_version.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n var devconnect_p4sa = new ServiceIdentity(\"devconnect-p4sa\", ServiceIdentityArgs.builder()\n .service(\"developerconnect.googleapis.com\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(devconnect_p4sa.member())\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.applyValue(p4sa_secretAccessor -\u003e p4sa_secretAccessor.policyData()))\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n function: std:file\n arguments:\n input: my-github-token.txt\n return: result\n devconnect-p4sa:\n type: gcp:projects:ServiceIdentity\n properties:\n service: developerconnect.googleapis.com\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: my-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n function: gcp:organizations:getIAMPolicy\n arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - ${[\"devconnect-p4sa\"].member}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Github\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n authorizerCredential:\n oauthTokenSecretVersion: projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Github Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"my-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n appInstallationId: \"123123\",\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"my-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"app_installation_id\": \"123123\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": github_token_secret_version.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"my-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AppInstallationId = \"123123\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"github-token-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"github-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"my-github-token.txt\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"github-token-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: github_token_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"123123\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: github_token_secret_version.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n function: std:file\n arguments:\n input: my-github-token.txt\n return: result\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: my-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n function: gcp:organizations:getIAMPolicy\n arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.proctor-staging-test.com\",\n appId: \"864434\",\n privateKeySecretVersion: \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\",\n webhookSecretSecretVersion: \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\",\n appInstallationId: \"837537\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection\",\n github_enterprise_config={\n \"host_uri\": \"https://ghe.proctor-staging-test.com\",\n \"app_id\": \"864434\",\n \"private_key_secret_version\": \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\",\n \"webhook_secret_secret_version\": \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\",\n \"app_installation_id\": \"837537\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GithubEnterpriseConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.proctor-staging-test.com\",\n AppId = \"864434\",\n PrivateKeySecretVersion = \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\",\n WebhookSecretSecretVersion = \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\",\n AppInstallationId = \"837537\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection\"),\n\t\t\tGithubEnterpriseConfig: \u0026developerconnect.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.proctor-staging-test.com\"),\n\t\t\t\tAppId: pulumi.String(\"864434\"),\n\t\t\t\tPrivateKeySecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\"),\n\t\t\t\tWebhookSecretSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"837537\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubEnterpriseConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.proctor-staging-test.com\")\n .appId(864434)\n .privateKeySecretVersion(\"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\")\n .webhookSecretSecretVersion(\"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\")\n .appInstallationId(837537)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.proctor-staging-test.com\n appId: 864434\n privateKeySecretVersion: projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\n webhookSecretSecretVersion: projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\n appInstallationId: 837537\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Github Enterprise Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst private_key_secret = new gcp.secretmanager.Secret(\"private-key-secret\", {\n secretId: \"ghe-pk-secret\",\n replication: {\n auto: {},\n },\n});\nconst private_key_secret_version = new gcp.secretmanager.SecretVersion(\"private-key-secret-version\", {\n secret: private_key_secret.id,\n secretData: std.file({\n input: \"private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n});\nconst webhook_secret_secret = new gcp.secretmanager.Secret(\"webhook-secret-secret\", {\n secretId: \"ghe-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst webhook_secret_secret_version = new gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\", {\n secret: webhook_secret_secret.id,\n secretData: \"\u003cwebhook-secret-data\u003e\",\n});\nconst p4sa-secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n }],\n});\nconst policy_pk = new gcp.secretmanager.SecretIamPolicy(\"policy-pk\", {\n secretId: private_key_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst policy_whs = new gcp.secretmanager.SecretIamPolicy(\"policy-whs\", {\n secretId: webhook_secret_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"my-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.com\",\n privateKeySecretVersion: private_key_secret_version.id,\n webhookSecretSecretVersion: webhook_secret_secret_version.id,\n appId: \"100\",\n appInstallationId: \"123123\",\n },\n}, {\n dependsOn: [\n policy_pk,\n policy_whs,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nprivate_key_secret = gcp.secretmanager.Secret(\"private-key-secret\",\n secret_id=\"ghe-pk-secret\",\n replication={\n \"auto\": {},\n })\nprivate_key_secret_version = gcp.secretmanager.SecretVersion(\"private-key-secret-version\",\n secret=private_key_secret.id,\n secret_data=std.file(input=\"private-key.pem\").result)\nwebhook_secret_secret = gcp.secretmanager.Secret(\"webhook-secret-secret\",\n secret_id=\"ghe-token-secret\",\n replication={\n \"auto\": {},\n })\nwebhook_secret_secret_version = gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\",\n secret=webhook_secret_secret.id,\n secret_data=\"\u003cwebhook-secret-data\u003e\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n}])\npolicy_pk = gcp.secretmanager.SecretIamPolicy(\"policy-pk\",\n secret_id=private_key_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\npolicy_whs = gcp.secretmanager.SecretIamPolicy(\"policy-whs\",\n secret_id=webhook_secret_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"my-connection\",\n github_enterprise_config={\n \"host_uri\": \"https://ghe.com\",\n \"private_key_secret_version\": private_key_secret_version.id,\n \"webhook_secret_secret_version\": webhook_secret_secret_version.id,\n \"app_id\": \"100\",\n \"app_installation_id\": \"123123\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n policy_pk,\n policy_whs,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var private_key_secret = new Gcp.SecretManager.Secret(\"private-key-secret\", new()\n {\n SecretId = \"ghe-pk-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var private_key_secret_version = new Gcp.SecretManager.SecretVersion(\"private-key-secret-version\", new()\n {\n Secret = private_key_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var webhook_secret_secret = new Gcp.SecretManager.Secret(\"webhook-secret-secret\", new()\n {\n SecretId = \"ghe-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var webhook_secret_secret_version = new Gcp.SecretManager.SecretVersion(\"webhook-secret-secret-version\", new()\n {\n Secret = webhook_secret_secret.Id,\n SecretData = \"\u003cwebhook-secret-data\u003e\",\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy_pk = new Gcp.SecretManager.SecretIamPolicy(\"policy-pk\", new()\n {\n SecretId = private_key_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var policy_whs = new Gcp.SecretManager.SecretIamPolicy(\"policy-whs\", new()\n {\n SecretId = webhook_secret_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"my-connection\",\n GithubEnterpriseConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.com\",\n PrivateKeySecretVersion = private_key_secret_version.Id,\n WebhookSecretSecretVersion = webhook_secret_secret_version.Id,\n AppId = \"100\",\n AppInstallationId = \"123123\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n policy_pk,\n policy_whs,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := secretmanager.NewSecret(ctx, \"private-key-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"ghe-pk-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"private-key-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: private_key_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecret(ctx, \"webhook-secret-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"ghe-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretVersion(ctx, \"webhook-secret-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhook_secret_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"\u003cwebhook-secret-data\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-pk\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: private_key_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy-whs\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: webhook_secret_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tGithubEnterpriseConfig: \u0026developerconnect.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.com\"),\n\t\t\t\tPrivateKeySecretVersion: private_key_secret_version.ID(),\n\t\t\t\tWebhookSecretSecretVersion: webhook_secret_secret_version.ID(),\n\t\t\t\tAppId: pulumi.String(\"100\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"123123\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpolicy_pk,\n\t\t\tpolicy_whs,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubEnterpriseConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var private_key_secret = new Secret(\"private-key-secret\", SecretArgs.builder()\n .secretId(\"ghe-pk-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var private_key_secret_version = new SecretVersion(\"private-key-secret-version\", SecretVersionArgs.builder()\n .secret(private_key_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"private-key.pem\")\n .build()).result())\n .build());\n\n var webhook_secret_secret = new Secret(\"webhook-secret-secret\", SecretArgs.builder()\n .secretId(\"ghe-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var webhook_secret_secret_version = new SecretVersion(\"webhook-secret-secret-version\", SecretVersionArgs.builder()\n .secret(webhook_secret_secret.id())\n .secretData(\"\u003cwebhook-secret-data\u003e\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy_pk = new SecretIamPolicy(\"policy-pk\", SecretIamPolicyArgs.builder()\n .secretId(private_key_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var policy_whs = new SecretIamPolicy(\"policy-whs\", SecretIamPolicyArgs.builder()\n .secretId(webhook_secret_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"my-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.com\")\n .privateKeySecretVersion(private_key_secret_version.id())\n .webhookSecretSecretVersion(webhook_secret_secret_version.id())\n .appId(100)\n .appInstallationId(123123)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n policy_pk,\n policy_whs)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-key-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-pk-secret\n replication:\n auto: {}\n private-key-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"private-key-secret\"].id}\n secretData:\n fn::invoke:\n function: std:file\n arguments:\n input: private-key.pem\n return: result\n webhook-secret-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-token-secret\n replication:\n auto: {}\n webhook-secret-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"webhook-secret-secret\"].id}\n secretData: \u003cwebhook-secret-data\u003e\n policy-pk:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"private-key-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n policy-whs:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"webhook-secret-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: my-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.com\n privateKeySecretVersion: ${[\"private-key-secret-version\"].id}\n webhookSecretSecretVersion: ${[\"webhook-secret-secret-version\"].id}\n appId: 100\n appInstallationId: 123123\n options:\n dependsOn:\n - ${[\"policy-pk\"]}\n - ${[\"policy-whs\"]}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n function: gcp:organizations:getIAMPolicy\n arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Gitlab\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection\",\n gitlabConfig: {\n webhookSecretSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\",\n readAuthorizerCredential: {\n userTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\",\n },\n authorizerCredential: {\n userTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection\",\n gitlab_config={\n \"webhook_secret_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\",\n \"read_authorizer_credential\": {\n \"user_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\",\n },\n \"authorizer_credential\": {\n \"user_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GitlabConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabConfigArgs\n {\n WebhookSecretSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\",\n ReadAuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabConfigReadAuthorizerCredentialArgs\n {\n UserTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\",\n },\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabConfigAuthorizerCredentialArgs\n {\n UserTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection\"),\n\t\t\tGitlabConfig: \u0026developerconnect.ConnectionGitlabConfigArgs{\n\t\t\t\tWebhookSecretSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\"),\n\t\t\t\tReadAuthorizerCredential: \u0026developerconnect.ConnectionGitlabConfigReadAuthorizerCredentialArgs{\n\t\t\t\t\tUserTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\"),\n\t\t\t\t},\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGitlabConfigAuthorizerCredentialArgs{\n\t\t\t\t\tUserTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigReadAuthorizerCredentialArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection\")\n .gitlabConfig(ConnectionGitlabConfigArgs.builder()\n .webhookSecretSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\")\n .readAuthorizerCredential(ConnectionGitlabConfigReadAuthorizerCredentialArgs.builder()\n .userTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\")\n .build())\n .authorizerCredential(ConnectionGitlabConfigAuthorizerCredentialArgs.builder()\n .userTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection\n gitlabConfig:\n webhookSecretSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\n readAuthorizerCredential:\n userTokenSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\n authorizerCredential:\n userTokenSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Gitlab Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection\",\n gitlabEnterpriseConfig: {\n hostUri: \"https://gle-us-central1.gcb-test.com\",\n webhookSecretSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\",\n readAuthorizerCredential: {\n userTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\",\n },\n authorizerCredential: {\n userTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection\",\n gitlab_enterprise_config={\n \"host_uri\": \"https://gle-us-central1.gcb-test.com\",\n \"webhook_secret_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\",\n \"read_authorizer_credential\": {\n \"user_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\",\n },\n \"authorizer_credential\": {\n \"user_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GitlabEnterpriseConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabEnterpriseConfigArgs\n {\n HostUri = \"https://gle-us-central1.gcb-test.com\",\n WebhookSecretSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\",\n ReadAuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs\n {\n UserTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\",\n },\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs\n {\n UserTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection\"),\n\t\t\tGitlabEnterpriseConfig: \u0026developerconnect.ConnectionGitlabEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://gle-us-central1.gcb-test.com\"),\n\t\t\t\tWebhookSecretSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\"),\n\t\t\t\tReadAuthorizerCredential: \u0026developerconnect.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs{\n\t\t\t\t\tUserTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\"),\n\t\t\t\t},\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs{\n\t\t\t\t\tUserTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection\")\n .gitlabEnterpriseConfig(ConnectionGitlabEnterpriseConfigArgs.builder()\n .hostUri(\"https://gle-us-central1.gcb-test.com\")\n .webhookSecretSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\")\n .readAuthorizerCredential(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs.builder()\n .userTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\")\n .build())\n .authorizerCredential(ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs.builder()\n .userTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection\n gitlabEnterpriseConfig:\n hostUri: https://gle-us-central1.gcb-test.com\n webhookSecretSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\n readAuthorizerCredential:\n userTokenSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\n authorizerCredential:\n userTokenSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`\n\n* `{{project}}/{{location}}/{{connection_id}}`\n\n* `{{location}}/{{connection_id}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default {{project}}/{{location}}/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default {{location}}/{{connection_id}}\n```\n\n", + "description": "A connection for GitHub, GitHub Enterprise, GitLab, and GitLab Enterprise.\n\n\n\n## Example Usage\n\n### Developer Connect Connection New\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Setup permissions. Only needed once per project\nconst devconnect_p4sa = new gcp.projects.ServiceIdentity(\"devconnect-p4sa\", {service: \"developerconnect.googleapis.com\"});\nconst devconnect_secret = new gcp.projects.IAMMember(\"devconnect-secret\", {\n project: \"my-project-name\",\n role: \"roles/secretmanager.admin\",\n member: devconnect_p4sa.member,\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection-new\",\n githubConfig: {\n githubApp: \"FIREBASE\",\n },\n}, {\n dependsOn: [devconnect_secret],\n});\nexport const nextSteps = my_connection.installationStates;\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Setup permissions. Only needed once per project\ndevconnect_p4sa = gcp.projects.ServiceIdentity(\"devconnect-p4sa\", service=\"developerconnect.googleapis.com\")\ndevconnect_secret = gcp.projects.IAMMember(\"devconnect-secret\",\n project=\"my-project-name\",\n role=\"roles/secretmanager.admin\",\n member=devconnect_p4sa.member)\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection-new\",\n github_config={\n \"github_app\": \"FIREBASE\",\n },\n opts = pulumi.ResourceOptions(depends_on=[devconnect_secret]))\npulumi.export(\"nextSteps\", my_connection.installation_states)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Setup permissions. Only needed once per project\n var devconnect_p4sa = new Gcp.Projects.ServiceIdentity(\"devconnect-p4sa\", new()\n {\n Service = \"developerconnect.googleapis.com\",\n });\n\n var devconnect_secret = new Gcp.Projects.IAMMember(\"devconnect-secret\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/secretmanager.admin\",\n Member = devconnect_p4sa.Member,\n });\n\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection-new\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"FIREBASE\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n devconnect_secret,\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"nextSteps\"] = my_connection.InstallationStates,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Setup permissions. Only needed once per project\n\t\tdevconnect_p4sa, err := projects.NewServiceIdentity(ctx, \"devconnect-p4sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"developerconnect.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdevconnect_secret, err := projects.NewIAMMember(ctx, \"devconnect-secret\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/secretmanager.admin\"),\n\t\t\tMember: devconnect_p4sa.Member,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmy_connection, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection-new\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"FIREBASE\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdevconnect_secret,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"nextSteps\", my_connection.InstallationStates)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Setup permissions. Only needed once per project\n var devconnect_p4sa = new ServiceIdentity(\"devconnect-p4sa\", ServiceIdentityArgs.builder()\n .service(\"developerconnect.googleapis.com\")\n .build());\n\n var devconnect_secret = new IAMMember(\"devconnect-secret\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/secretmanager.admin\")\n .member(devconnect_p4sa.member())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection-new\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"FIREBASE\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(devconnect_secret)\n .build());\n\n ctx.export(\"nextSteps\", my_connection.installationStates());\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection-new\n githubConfig:\n githubApp: FIREBASE\n options:\n dependsOn:\n - ${[\"devconnect-secret\"]}\n # Setup permissions. Only needed once per project\n devconnect-p4sa:\n type: gcp:projects:ServiceIdentity\n properties:\n service: developerconnect.googleapis.com\n devconnect-secret:\n type: gcp:projects:IAMMember\n properties:\n project: my-project-name\n role: roles/secretmanager.admin\n member: ${[\"devconnect-p4sa\"].member}\noutputs:\n nextSteps: ${[\"my-connection\"].installationStates}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Existing Credentials\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection-cred\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/your-project/secrets/your-secret-id/versions/latest\",\n },\n },\n});\nexport const nextSteps = my_connection.installationStates;\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection-cred\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/your-project/secrets/your-secret-id/versions/latest\",\n },\n })\npulumi.export(\"nextSteps\", my_connection.installation_states)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection-cred\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/your-project/secrets/your-secret-id/versions/latest\",\n },\n },\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"nextSteps\"] = my_connection.InstallationStates,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmy_connection, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection-cred\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/your-project/secrets/your-secret-id/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"nextSteps\", my_connection.InstallationStates)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection-cred\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/your-project/secrets/your-secret-id/versions/latest\")\n .build())\n .build())\n .build());\n\n ctx.export(\"nextSteps\", my_connection.installationStates());\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection-cred\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n authorizerCredential:\n oauthTokenSecretVersion: projects/your-project/secrets/your-secret-id/versions/latest\noutputs:\n nextSteps: ${[\"my-connection\"].installationStates}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Existing Installation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst devconnect_p4sa = new gcp.projects.ServiceIdentity(\"devconnect-p4sa\", {service: \"developerconnect.googleapis.com\"});\nconst p4sa_secretAccessor = gcp.organizations.getIAMPolicyOutput({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [devconnect_p4sa.member],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"my-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n appInstallationId: \"123123\",\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\ndevconnect_p4sa = gcp.projects.ServiceIdentity(\"devconnect-p4sa\", service=\"developerconnect.googleapis.com\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy_output(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [devconnect_p4sa.member],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"my-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"app_installation_id\": \"123123\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": github_token_secret_version.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var devconnect_p4sa = new Gcp.Projects.ServiceIdentity(\"devconnect-p4sa\", new()\n {\n Service = \"developerconnect.googleapis.com\",\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n devconnect_p4sa.Member,\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"my-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AppInstallationId = \"123123\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgithub_token_secret, 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\tgithub_token_secret_version, 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\tdevconnect_p4sa, err := projects.NewServiceIdentity(ctx, \"devconnect-p4sa\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"developerconnect.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor := organizations.LookupIAMPolicyOutput(ctx, organizations.GetIAMPolicyOutputArgs{\n\t\t\tBindings: organizations.GetIAMPolicyBindingArray{\n\t\t\t\t\u0026organizations.GetIAMPolicyBindingArgs{\n\t\t\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\t\t\tMembers: pulumi.StringArray{\n\t\t\t\t\t\tdevconnect_p4sa.Member,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.ApplyT(func(p4sa_secretAccessor organizations.GetIAMPolicyResult) (*string, error) {\n\t\t\t\treturn \u0026p4sa_secretAccessor.PolicyData, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"123123\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: github_token_secret_version.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n var devconnect_p4sa = new ServiceIdentity(\"devconnect-p4sa\", ServiceIdentityArgs.builder()\n .service(\"developerconnect.googleapis.com\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(devconnect_p4sa.member())\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.applyValue(p4sa_secretAccessor -\u003e p4sa_secretAccessor.policyData()))\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n function: std:file\n arguments:\n input: my-github-token.txt\n return: result\n devconnect-p4sa:\n type: gcp:projects:ServiceIdentity\n properties:\n service: developerconnect.googleapis.com\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: my-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n function: gcp:organizations:getIAMPolicy\n arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - ${[\"devconnect-p4sa\"].member}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Github\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n authorizerCredential: {\n oauthTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n authorizerCredential:\n oauthTokenSecretVersion: projects/devconnect-terraform-creds/secrets/tf-test-do-not-change-github-oauthtoken-e0b9e7/versions/1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Github Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst github_token_secret = new gcp.secretmanager.Secret(\"github-token-secret\", {\n secretId: \"github-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst github_token_secret_version = new gcp.secretmanager.SecretVersion(\"github-token-secret-version\", {\n secret: github_token_secret.id,\n secretData: std.file({\n input: \"my-github-token.txt\",\n }).then(invoke =\u003e invoke.result),\n});\nconst p4sa_secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n }],\n});\nconst policy = new gcp.secretmanager.SecretIamPolicy(\"policy\", {\n secretId: github_token_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"my-connection\",\n githubConfig: {\n githubApp: \"DEVELOPER_CONNECT\",\n appInstallationId: \"123123\",\n authorizerCredential: {\n oauthTokenSecretVersion: github_token_secret_version.id,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ngithub_token_secret = gcp.secretmanager.Secret(\"github-token-secret\",\n secret_id=\"github-token-secret\",\n replication={\n \"auto\": {},\n })\ngithub_token_secret_version = gcp.secretmanager.SecretVersion(\"github-token-secret-version\",\n secret=github_token_secret.id,\n secret_data=std.file(input=\"my-github-token.txt\").result)\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n}])\npolicy = gcp.secretmanager.SecretIamPolicy(\"policy\",\n secret_id=github_token_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"my-connection\",\n github_config={\n \"github_app\": \"DEVELOPER_CONNECT\",\n \"app_installation_id\": \"123123\",\n \"authorizer_credential\": {\n \"oauth_token_secret_version\": github_token_secret_version.id,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var github_token_secret = new Gcp.SecretManager.Secret(\"github-token-secret\", new()\n {\n SecretId = \"github-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var github_token_secret_version = new Gcp.SecretManager.SecretVersion(\"github-token-secret-version\", new()\n {\n Secret = github_token_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"my-github-token.txt\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy = new Gcp.SecretManager.SecretIamPolicy(\"policy\", new()\n {\n SecretId = github_token_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"my-connection\",\n GithubConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigArgs\n {\n GithubApp = \"DEVELOPER_CONNECT\",\n AppInstallationId = \"123123\",\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGithubConfigAuthorizerCredentialArgs\n {\n OauthTokenSecretVersion = github_token_secret_version.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tgithub_token_secret, 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\tgithub_token_secret_version, err := secretmanager.NewSecretVersion(ctx, \"github-token-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: github_token_secret.ID(),\n\t\t\tSecretData: pulumi.String(invokeFile.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamPolicy(ctx, \"policy\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: github_token_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tGithubConfig: \u0026developerconnect.ConnectionGithubConfigArgs{\n\t\t\t\tGithubApp: pulumi.String(\"DEVELOPER_CONNECT\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"123123\"),\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGithubConfigAuthorizerCredentialArgs{\n\t\t\t\t\tOauthTokenSecretVersion: github_token_secret_version.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var github_token_secret = new Secret(\"github-token-secret\", SecretArgs.builder()\n .secretId(\"github-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var github_token_secret_version = new SecretVersion(\"github-token-secret-version\", SecretVersionArgs.builder()\n .secret(github_token_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"my-github-token.txt\")\n .build()).result())\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy = new SecretIamPolicy(\"policy\", SecretIamPolicyArgs.builder()\n .secretId(github_token_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"my-connection\")\n .githubConfig(ConnectionGithubConfigArgs.builder()\n .githubApp(\"DEVELOPER_CONNECT\")\n .appInstallationId(123123)\n .authorizerCredential(ConnectionGithubConfigAuthorizerCredentialArgs.builder()\n .oauthTokenSecretVersion(github_token_secret_version.id())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n github-token-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: github-token-secret\n replication:\n auto: {}\n github-token-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"github-token-secret\"].id}\n secretData:\n fn::invoke:\n function: std:file\n arguments:\n input: my-github-token.txt\n return: result\n policy:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"github-token-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: my-connection\n githubConfig:\n githubApp: DEVELOPER_CONNECT\n appInstallationId: 123123\n authorizerCredential:\n oauthTokenSecretVersion: ${[\"github-token-secret-version\"].id}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n function: gcp:organizations:getIAMPolicy\n arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Github Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.proctor-staging-test.com\",\n appId: \"864434\",\n privateKeySecretVersion: \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\",\n webhookSecretSecretVersion: \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\",\n appInstallationId: \"837537\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection\",\n github_enterprise_config={\n \"host_uri\": \"https://ghe.proctor-staging-test.com\",\n \"app_id\": \"864434\",\n \"private_key_secret_version\": \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\",\n \"webhook_secret_secret_version\": \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\",\n \"app_installation_id\": \"837537\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GithubEnterpriseConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.proctor-staging-test.com\",\n AppId = \"864434\",\n PrivateKeySecretVersion = \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\",\n WebhookSecretSecretVersion = \"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\",\n AppInstallationId = \"837537\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection\"),\n\t\t\tGithubEnterpriseConfig: \u0026developerconnect.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.proctor-staging-test.com\"),\n\t\t\t\tAppId: pulumi.String(\"864434\"),\n\t\t\t\tPrivateKeySecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\"),\n\t\t\t\tWebhookSecretSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"837537\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubEnterpriseConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.proctor-staging-test.com\")\n .appId(864434)\n .privateKeySecretVersion(\"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\")\n .webhookSecretSecretVersion(\"projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\")\n .appInstallationId(837537)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.proctor-staging-test.com\n appId: 864434\n privateKeySecretVersion: projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-private-key-f522d2/versions/latest\n webhookSecretSecretVersion: projects/devconnect-terraform-creds/secrets/tf-test-ghe-do-not-change-ghe-webhook-secret-3c806f/versions/latest\n appInstallationId: 837537\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Github Enterprise Doc\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst private_key_secret = new gcp.secretmanager.Secret(\"private-key-secret\", {\n secretId: \"ghe-pk-secret\",\n replication: {\n auto: {},\n },\n});\nconst private_key_secret_version = new gcp.secretmanager.SecretVersion(\"private-key-secret-version\", {\n secret: private_key_secret.id,\n secretData: std.file({\n input: \"private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n});\nconst webhook_secret_secret = new gcp.secretmanager.Secret(\"webhook-secret-secret\", {\n secretId: \"ghe-token-secret\",\n replication: {\n auto: {},\n },\n});\nconst webhook_secret_secret_version = new gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\", {\n secret: webhook_secret_secret.id,\n secretData: \"\u003cwebhook-secret-data\u003e\",\n});\nconst p4sa_secretAccessor = gcp.organizations.getIAMPolicy({\n bindings: [{\n role: \"roles/secretmanager.secretAccessor\",\n members: [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n }],\n});\nconst policy_pk = new gcp.secretmanager.SecretIamPolicy(\"policy-pk\", {\n secretId: private_key_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst policy_whs = new gcp.secretmanager.SecretIamPolicy(\"policy-whs\", {\n secretId: webhook_secret_secret.secretId,\n policyData: p4sa_secretAccessor.then(p4sa_secretAccessor =\u003e p4sa_secretAccessor.policyData),\n});\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"my-connection\",\n githubEnterpriseConfig: {\n hostUri: \"https://ghe.com\",\n privateKeySecretVersion: private_key_secret_version.id,\n webhookSecretSecretVersion: webhook_secret_secret_version.id,\n appId: \"100\",\n appInstallationId: \"123123\",\n },\n}, {\n dependsOn: [\n policy_pk,\n policy_whs,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nprivate_key_secret = gcp.secretmanager.Secret(\"private-key-secret\",\n secret_id=\"ghe-pk-secret\",\n replication={\n \"auto\": {},\n })\nprivate_key_secret_version = gcp.secretmanager.SecretVersion(\"private-key-secret-version\",\n secret=private_key_secret.id,\n secret_data=std.file(input=\"private-key.pem\").result)\nwebhook_secret_secret = gcp.secretmanager.Secret(\"webhook-secret-secret\",\n secret_id=\"ghe-token-secret\",\n replication={\n \"auto\": {},\n })\nwebhook_secret_secret_version = gcp.secretmanager.SecretVersion(\"webhook-secret-secret-version\",\n secret=webhook_secret_secret.id,\n secret_data=\"\u003cwebhook-secret-data\u003e\")\np4sa_secret_accessor = gcp.organizations.get_iam_policy(bindings=[{\n \"role\": \"roles/secretmanager.secretAccessor\",\n \"members\": [\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\"],\n}])\npolicy_pk = gcp.secretmanager.SecretIamPolicy(\"policy-pk\",\n secret_id=private_key_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\npolicy_whs = gcp.secretmanager.SecretIamPolicy(\"policy-whs\",\n secret_id=webhook_secret_secret.secret_id,\n policy_data=p4sa_secret_accessor.policy_data)\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"my-connection\",\n github_enterprise_config={\n \"host_uri\": \"https://ghe.com\",\n \"private_key_secret_version\": private_key_secret_version.id,\n \"webhook_secret_secret_version\": webhook_secret_secret_version.id,\n \"app_id\": \"100\",\n \"app_installation_id\": \"123123\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n policy_pk,\n policy_whs,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var private_key_secret = new Gcp.SecretManager.Secret(\"private-key-secret\", new()\n {\n SecretId = \"ghe-pk-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var private_key_secret_version = new Gcp.SecretManager.SecretVersion(\"private-key-secret-version\", new()\n {\n Secret = private_key_secret.Id,\n SecretData = Std.File.Invoke(new()\n {\n Input = \"private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n var webhook_secret_secret = new Gcp.SecretManager.Secret(\"webhook-secret-secret\", new()\n {\n SecretId = \"ghe-token-secret\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var webhook_secret_secret_version = new Gcp.SecretManager.SecretVersion(\"webhook-secret-secret-version\", new()\n {\n Secret = webhook_secret_secret.Id,\n SecretData = \"\u003cwebhook-secret-data\u003e\",\n });\n\n var p4sa_secretAccessor = Gcp.Organizations.GetIAMPolicy.Invoke(new()\n {\n Bindings = new[]\n {\n new Gcp.Organizations.Inputs.GetIAMPolicyBindingInputArgs\n {\n Role = \"roles/secretmanager.secretAccessor\",\n Members = new[]\n {\n \"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n },\n },\n },\n });\n\n var policy_pk = new Gcp.SecretManager.SecretIamPolicy(\"policy-pk\", new()\n {\n SecretId = private_key_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var policy_whs = new Gcp.SecretManager.SecretIamPolicy(\"policy-whs\", new()\n {\n SecretId = webhook_secret_secret.SecretId,\n PolicyData = p4sa_secretAccessor.Apply(p4sa_secretAccessor =\u003e p4sa_secretAccessor.Apply(getIAMPolicyResult =\u003e getIAMPolicyResult.PolicyData)),\n });\n\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"my-connection\",\n GithubEnterpriseConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGithubEnterpriseConfigArgs\n {\n HostUri = \"https://ghe.com\",\n PrivateKeySecretVersion = private_key_secret_version.Id,\n WebhookSecretSecretVersion = webhook_secret_secret_version.Id,\n AppId = \"100\",\n AppInstallationId = \"123123\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n policy_pk,\n policy_whs,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprivate_key_secret, 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\tprivate_key_secret_version, 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\twebhook_secret_secret, err := secretmanager.NewSecret(ctx, \"webhook-secret-secret\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"ghe-token-secret\"),\n\t\t\tReplication: \u0026secretmanager.SecretReplicationArgs{\n\t\t\t\tAuto: \u0026secretmanager.SecretReplicationAutoArgs{},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\twebhook_secret_secret_version, err := secretmanager.NewSecretVersion(ctx, \"webhook-secret-secret-version\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: webhook_secret_secret.ID(),\n\t\t\tSecretData: pulumi.String(\"\u003cwebhook-secret-data\u003e\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp4sa_secretAccessor, err := organizations.LookupIAMPolicy(ctx, \u0026organizations.LookupIAMPolicyArgs{\n\t\t\tBindings: []organizations.GetIAMPolicyBinding{\n\t\t\t\t{\n\t\t\t\t\tRole: \"roles/secretmanager.secretAccessor\",\n\t\t\t\t\tMembers: []string{\n\t\t\t\t\t\t\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\",\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpolicy_pk, 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\tpolicy_whs, err := secretmanager.NewSecretIamPolicy(ctx, \"policy-whs\", \u0026secretmanager.SecretIamPolicyArgs{\n\t\t\tSecretId: webhook_secret_secret.SecretId,\n\t\t\tPolicyData: pulumi.String(p4sa_secretAccessor.PolicyData),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"my-connection\"),\n\t\t\tGithubEnterpriseConfig: \u0026developerconnect.ConnectionGithubEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://ghe.com\"),\n\t\t\t\tPrivateKeySecretVersion: private_key_secret_version.ID(),\n\t\t\t\tWebhookSecretSecretVersion: webhook_secret_secret_version.ID(),\n\t\t\t\tAppId: pulumi.String(\"100\"),\n\t\t\t\tAppInstallationId: pulumi.String(\"123123\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpolicy_pk,\n\t\t\tpolicy_whs,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.secretmanager.Secret;\nimport com.pulumi.gcp.secretmanager.SecretArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationArgs;\nimport com.pulumi.gcp.secretmanager.inputs.SecretReplicationAutoArgs;\nimport com.pulumi.gcp.secretmanager.SecretVersion;\nimport com.pulumi.gcp.secretmanager.SecretVersionArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetIAMPolicyArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicy;\nimport com.pulumi.gcp.secretmanager.SecretIamPolicyArgs;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGithubEnterpriseConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var private_key_secret = new Secret(\"private-key-secret\", SecretArgs.builder()\n .secretId(\"ghe-pk-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var private_key_secret_version = new SecretVersion(\"private-key-secret-version\", SecretVersionArgs.builder()\n .secret(private_key_secret.id())\n .secretData(StdFunctions.file(FileArgs.builder()\n .input(\"private-key.pem\")\n .build()).result())\n .build());\n\n var webhook_secret_secret = new Secret(\"webhook-secret-secret\", SecretArgs.builder()\n .secretId(\"ghe-token-secret\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var webhook_secret_secret_version = new SecretVersion(\"webhook-secret-secret-version\", SecretVersionArgs.builder()\n .secret(webhook_secret_secret.id())\n .secretData(\"\u003cwebhook-secret-data\u003e\")\n .build());\n\n final var p4sa-secretAccessor = OrganizationsFunctions.getIAMPolicy(GetIAMPolicyArgs.builder()\n .bindings(GetIAMPolicyBindingArgs.builder()\n .role(\"roles/secretmanager.secretAccessor\")\n .members(\"serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\")\n .build())\n .build());\n\n var policy_pk = new SecretIamPolicy(\"policy-pk\", SecretIamPolicyArgs.builder()\n .secretId(private_key_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var policy_whs = new SecretIamPolicy(\"policy-whs\", SecretIamPolicyArgs.builder()\n .secretId(webhook_secret_secret.secretId())\n .policyData(p4sa_secretAccessor.policyData())\n .build());\n\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"my-connection\")\n .githubEnterpriseConfig(ConnectionGithubEnterpriseConfigArgs.builder()\n .hostUri(\"https://ghe.com\")\n .privateKeySecretVersion(private_key_secret_version.id())\n .webhookSecretSecretVersion(webhook_secret_secret_version.id())\n .appId(100)\n .appInstallationId(123123)\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n policy_pk,\n policy_whs)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n private-key-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-pk-secret\n replication:\n auto: {}\n private-key-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"private-key-secret\"].id}\n secretData:\n fn::invoke:\n function: std:file\n arguments:\n input: private-key.pem\n return: result\n webhook-secret-secret:\n type: gcp:secretmanager:Secret\n properties:\n secretId: ghe-token-secret\n replication:\n auto: {}\n webhook-secret-secret-version:\n type: gcp:secretmanager:SecretVersion\n properties:\n secret: ${[\"webhook-secret-secret\"].id}\n secretData: \u003cwebhook-secret-data\u003e\n policy-pk:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"private-key-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n policy-whs:\n type: gcp:secretmanager:SecretIamPolicy\n properties:\n secretId: ${[\"webhook-secret-secret\"].secretId}\n policyData: ${[\"p4sa-secretAccessor\"].policyData}\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: my-connection\n githubEnterpriseConfig:\n hostUri: https://ghe.com\n privateKeySecretVersion: ${[\"private-key-secret-version\"].id}\n webhookSecretSecretVersion: ${[\"webhook-secret-secret-version\"].id}\n appId: 100\n appInstallationId: 123123\n options:\n dependsOn:\n - ${[\"policy-pk\"]}\n - ${[\"policy-whs\"]}\nvariables:\n p4sa-secretAccessor:\n fn::invoke:\n function: gcp:organizations:getIAMPolicy\n arguments:\n bindings:\n - role: roles/secretmanager.secretAccessor\n members:\n - serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Gitlab\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection\",\n gitlabConfig: {\n webhookSecretSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\",\n readAuthorizerCredential: {\n userTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\",\n },\n authorizerCredential: {\n userTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection\",\n gitlab_config={\n \"webhook_secret_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\",\n \"read_authorizer_credential\": {\n \"user_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\",\n },\n \"authorizer_credential\": {\n \"user_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GitlabConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabConfigArgs\n {\n WebhookSecretSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\",\n ReadAuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabConfigReadAuthorizerCredentialArgs\n {\n UserTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\",\n },\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabConfigAuthorizerCredentialArgs\n {\n UserTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection\"),\n\t\t\tGitlabConfig: \u0026developerconnect.ConnectionGitlabConfigArgs{\n\t\t\t\tWebhookSecretSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\"),\n\t\t\t\tReadAuthorizerCredential: \u0026developerconnect.ConnectionGitlabConfigReadAuthorizerCredentialArgs{\n\t\t\t\t\tUserTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\"),\n\t\t\t\t},\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGitlabConfigAuthorizerCredentialArgs{\n\t\t\t\t\tUserTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigReadAuthorizerCredentialArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection\")\n .gitlabConfig(ConnectionGitlabConfigArgs.builder()\n .webhookSecretSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\")\n .readAuthorizerCredential(ConnectionGitlabConfigReadAuthorizerCredentialArgs.builder()\n .userTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\")\n .build())\n .authorizerCredential(ConnectionGitlabConfigAuthorizerCredentialArgs.builder()\n .userTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection\n gitlabConfig:\n webhookSecretSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-webhook/versions/latest\n readAuthorizerCredential:\n userTokenSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-read-cred/versions/latest\n authorizerCredential:\n userTokenSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-auth-cred/versions/latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Developer Connect Connection Gitlab Enterprise\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_connection = new gcp.developerconnect.Connection(\"my-connection\", {\n location: \"us-central1\",\n connectionId: \"tf-test-connection\",\n gitlabEnterpriseConfig: {\n hostUri: \"https://gle-us-central1.gcb-test.com\",\n webhookSecretSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\",\n readAuthorizerCredential: {\n userTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\",\n },\n authorizerCredential: {\n userTokenSecretVersion: \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\",\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_connection = gcp.developerconnect.Connection(\"my-connection\",\n location=\"us-central1\",\n connection_id=\"tf-test-connection\",\n gitlab_enterprise_config={\n \"host_uri\": \"https://gle-us-central1.gcb-test.com\",\n \"webhook_secret_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\",\n \"read_authorizer_credential\": {\n \"user_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\",\n },\n \"authorizer_credential\": {\n \"user_token_secret_version\": \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\",\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_connection = new Gcp.DeveloperConnect.Connection(\"my-connection\", new()\n {\n Location = \"us-central1\",\n ConnectionId = \"tf-test-connection\",\n GitlabEnterpriseConfig = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabEnterpriseConfigArgs\n {\n HostUri = \"https://gle-us-central1.gcb-test.com\",\n WebhookSecretSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\",\n ReadAuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs\n {\n UserTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\",\n },\n AuthorizerCredential = new Gcp.DeveloperConnect.Inputs.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs\n {\n UserTokenSecretVersion = \"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/developerconnect\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := developerconnect.NewConnection(ctx, \"my-connection\", \u0026developerconnect.ConnectionArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConnectionId: pulumi.String(\"tf-test-connection\"),\n\t\t\tGitlabEnterpriseConfig: \u0026developerconnect.ConnectionGitlabEnterpriseConfigArgs{\n\t\t\t\tHostUri: pulumi.String(\"https://gle-us-central1.gcb-test.com\"),\n\t\t\t\tWebhookSecretSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\"),\n\t\t\t\tReadAuthorizerCredential: \u0026developerconnect.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs{\n\t\t\t\t\tUserTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\"),\n\t\t\t\t},\n\t\t\t\tAuthorizerCredential: \u0026developerconnect.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs{\n\t\t\t\t\tUserTokenSecretVersion: pulumi.String(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.developerconnect.Connection;\nimport com.pulumi.gcp.developerconnect.ConnectionArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs;\nimport com.pulumi.gcp.developerconnect.inputs.ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_connection = new Connection(\"my-connection\", ConnectionArgs.builder()\n .location(\"us-central1\")\n .connectionId(\"tf-test-connection\")\n .gitlabEnterpriseConfig(ConnectionGitlabEnterpriseConfigArgs.builder()\n .hostUri(\"https://gle-us-central1.gcb-test.com\")\n .webhookSecretSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\")\n .readAuthorizerCredential(ConnectionGitlabEnterpriseConfigReadAuthorizerCredentialArgs.builder()\n .userTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\")\n .build())\n .authorizerCredential(ConnectionGitlabEnterpriseConfigAuthorizerCredentialArgs.builder()\n .userTokenSecretVersion(\"projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-connection:\n type: gcp:developerconnect:Connection\n properties:\n location: us-central1\n connectionId: tf-test-connection\n gitlabEnterpriseConfig:\n hostUri: https://gle-us-central1.gcb-test.com\n webhookSecretSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-enterprise-webhook/versions/latest\n readAuthorizerCredential:\n userTokenSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-enterprise-read-cred/versions/latest\n authorizerCredential:\n userTokenSecretVersion: projects/devconnect-terraform-creds/secrets/gitlab-enterprise-auth-cred/versions/latest\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nConnection can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/connections/{{connection_id}}`\n\n* `{{project}}/{{location}}/{{connection_id}}`\n\n* `{{location}}/{{connection_id}}`\n\nWhen using the `pulumi import` command, Connection can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default projects/{{project}}/locations/{{location}}/connections/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default {{project}}/{{location}}/{{connection_id}}\n```\n\n```sh\n$ pulumi import gcp:developerconnect/connection:Connection default {{location}}/{{connection_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -216558,7 +216558,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: \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", + "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\tnetwork_1, 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\tnetwork_2, 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\tnetwork_1, 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\tnetwork_2, 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\tnetwork_1, 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\tsubnetwork_1, 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\tcluster_1, 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\tnetwork_source, 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\tnetwork_target, 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", @@ -216841,7 +216841,7 @@ } }, "gcp:dns/policy:Policy": { - "description": "A policy is a collection of DNS rules applied to one or more Virtual\nPrivate Cloud resources.\n\n\nTo get more information about Policy, see:\n\n* [API documentation](https://cloud.google.com/dns/docs/reference/v1beta2/policies)\n* How-to Guides\n * [Using DNS server policies](https://cloud.google.com/dns/zones/#using-dns-server-policies)\n\n## Example Usage\n\n### Dns Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst example_policy = new gcp.dns.Policy(\"example-policy\", {\n name: \"example-policy\",\n enableInboundForwarding: true,\n enableLogging: true,\n alternativeNameServerConfig: {\n targetNameServers: [\n {\n ipv4Address: \"172.16.1.10\",\n forwardingPath: \"private\",\n },\n {\n ipv4Address: \"172.16.1.20\",\n },\n ],\n },\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nexample_policy = gcp.dns.Policy(\"example-policy\",\n name=\"example-policy\",\n enable_inbound_forwarding=True,\n enable_logging=True,\n alternative_name_server_config={\n \"target_name_servers\": [\n {\n \"ipv4_address\": \"172.16.1.10\",\n \"forwarding_path\": \"private\",\n },\n {\n \"ipv4_address\": \"172.16.1.20\",\n },\n ],\n },\n networks=[\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var example_policy = new Gcp.Dns.Policy(\"example-policy\", new()\n {\n Name = \"example-policy\",\n EnableInboundForwarding = true,\n EnableLogging = true,\n AlternativeNameServerConfig = new Gcp.Dns.Inputs.PolicyAlternativeNameServerConfigArgs\n {\n TargetNameServers = new[]\n {\n new Gcp.Dns.Inputs.PolicyAlternativeNameServerConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.10\",\n ForwardingPath = \"private\",\n },\n new Gcp.Dns.Inputs.PolicyAlternativeNameServerConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.20\",\n },\n },\n },\n Networks = new[]\n {\n new Gcp.Dns.Inputs.PolicyNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.PolicyNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewPolicy(ctx, \"example-policy\", \u0026dns.PolicyArgs{\n\t\t\tName: pulumi.String(\"example-policy\"),\n\t\t\tEnableInboundForwarding: pulumi.Bool(true),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tAlternativeNameServerConfig: \u0026dns.PolicyAlternativeNameServerConfigArgs{\n\t\t\t\tTargetNameServers: dns.PolicyAlternativeNameServerConfigTargetNameServerArray{\n\t\t\t\t\t\u0026dns.PolicyAlternativeNameServerConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.10\"),\n\t\t\t\t\t\tForwardingPath: pulumi.String(\"private\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.PolicyAlternativeNameServerConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.20\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworks: dns.PolicyNetworkArray{\n\t\t\t\t\u0026dns.PolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026dns.PolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.Policy;\nimport com.pulumi.gcp.dns.PolicyArgs;\nimport com.pulumi.gcp.dns.inputs.PolicyAlternativeNameServerConfigArgs;\nimport com.pulumi.gcp.dns.inputs.PolicyNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder()\n .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var example_policy = new Policy(\"example-policy\", PolicyArgs.builder()\n .name(\"example-policy\")\n .enableInboundForwarding(true)\n .enableLogging(true)\n .alternativeNameServerConfig(PolicyAlternativeNameServerConfigArgs.builder()\n .targetNameServers( \n PolicyAlternativeNameServerConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.10\")\n .forwardingPath(\"private\")\n .build(),\n PolicyAlternativeNameServerConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.20\")\n .build())\n .build())\n .networks( \n PolicyNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n PolicyNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-policy:\n type: gcp:dns:Policy\n properties:\n name: example-policy\n enableInboundForwarding: true\n enableLogging: true\n alternativeNameServerConfig:\n targetNameServers:\n - ipv4Address: 172.16.1.10\n forwardingPath: private\n - ipv4Address: 172.16.1.20\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/policies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Policy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/policy:Policy default projects/{{project}}/policies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/policy:Policy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/policy:Policy default {{name}}\n```\n\n", + "description": "A policy is a collection of DNS rules applied to one or more Virtual\nPrivate Cloud resources.\n\n\nTo get more information about Policy, see:\n\n* [API documentation](https://cloud.google.com/dns/docs/reference/v1beta2/policies)\n* How-to Guides\n * [Using DNS server policies](https://cloud.google.com/dns/zones/#using-dns-server-policies)\n\n## Example Usage\n\n### Dns Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst example_policy = new gcp.dns.Policy(\"example-policy\", {\n name: \"example-policy\",\n enableInboundForwarding: true,\n enableLogging: true,\n alternativeNameServerConfig: {\n targetNameServers: [\n {\n ipv4Address: \"172.16.1.10\",\n forwardingPath: \"private\",\n },\n {\n ipv4Address: \"172.16.1.20\",\n },\n ],\n },\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nexample_policy = gcp.dns.Policy(\"example-policy\",\n name=\"example-policy\",\n enable_inbound_forwarding=True,\n enable_logging=True,\n alternative_name_server_config={\n \"target_name_servers\": [\n {\n \"ipv4_address\": \"172.16.1.10\",\n \"forwarding_path\": \"private\",\n },\n {\n \"ipv4_address\": \"172.16.1.20\",\n },\n ],\n },\n networks=[\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var example_policy = new Gcp.Dns.Policy(\"example-policy\", new()\n {\n Name = \"example-policy\",\n EnableInboundForwarding = true,\n EnableLogging = true,\n AlternativeNameServerConfig = new Gcp.Dns.Inputs.PolicyAlternativeNameServerConfigArgs\n {\n TargetNameServers = new[]\n {\n new Gcp.Dns.Inputs.PolicyAlternativeNameServerConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.10\",\n ForwardingPath = \"private\",\n },\n new Gcp.Dns.Inputs.PolicyAlternativeNameServerConfigTargetNameServerArgs\n {\n Ipv4Address = \"172.16.1.20\",\n },\n },\n },\n Networks = new[]\n {\n new Gcp.Dns.Inputs.PolicyNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.PolicyNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tnetwork_1, 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\tnetwork_2, err := compute.NewNetwork(ctx, \"network-2\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network-2\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewPolicy(ctx, \"example-policy\", \u0026dns.PolicyArgs{\n\t\t\tName: pulumi.String(\"example-policy\"),\n\t\t\tEnableInboundForwarding: pulumi.Bool(true),\n\t\t\tEnableLogging: pulumi.Bool(true),\n\t\t\tAlternativeNameServerConfig: \u0026dns.PolicyAlternativeNameServerConfigArgs{\n\t\t\t\tTargetNameServers: dns.PolicyAlternativeNameServerConfigTargetNameServerArray{\n\t\t\t\t\t\u0026dns.PolicyAlternativeNameServerConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.10\"),\n\t\t\t\t\t\tForwardingPath: pulumi.String(\"private\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.PolicyAlternativeNameServerConfigTargetNameServerArgs{\n\t\t\t\t\t\tIpv4Address: pulumi.String(\"172.16.1.20\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworks: dns.PolicyNetworkArray{\n\t\t\t\t\u0026dns.PolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026dns.PolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.Policy;\nimport com.pulumi.gcp.dns.PolicyArgs;\nimport com.pulumi.gcp.dns.inputs.PolicyAlternativeNameServerConfigArgs;\nimport com.pulumi.gcp.dns.inputs.PolicyNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder()\n .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var example_policy = new Policy(\"example-policy\", PolicyArgs.builder()\n .name(\"example-policy\")\n .enableInboundForwarding(true)\n .enableLogging(true)\n .alternativeNameServerConfig(PolicyAlternativeNameServerConfigArgs.builder()\n .targetNameServers( \n PolicyAlternativeNameServerConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.10\")\n .forwardingPath(\"private\")\n .build(),\n PolicyAlternativeNameServerConfigTargetNameServerArgs.builder()\n .ipv4Address(\"172.16.1.20\")\n .build())\n .build())\n .networks( \n PolicyNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n PolicyNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-policy:\n type: gcp:dns:Policy\n properties:\n name: example-policy\n enableInboundForwarding: true\n enableLogging: true\n alternativeNameServerConfig:\n targetNameServers:\n - ipv4Address: 172.16.1.10\n forwardingPath: private\n - ipv4Address: 172.16.1.20\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/policies/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Policy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/policy:Policy default projects/{{project}}/policies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/policy:Policy default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:dns/policy:Policy default {{name}}\n```\n\n", "properties": { "alternativeNameServerConfig": { "$ref": "#/types/gcp:dns/PolicyAlternativeNameServerConfig:PolicyAlternativeNameServerConfig", @@ -216955,7 +216955,7 @@ } }, "gcp:dns/recordSet:RecordSet": { - "description": "## Example Usage\n\n### Binding a DNS name to the ephemeral IP of a new instance:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst frontendInstance = new gcp.compute.Instance(\"frontend\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"frontend\",\n machineType: \"g1-small\",\n zone: \"us-central1-b\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n});\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst frontend = new gcp.dns.RecordSet(\"frontend\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n type: \"A\",\n ttl: 300,\n managedZone: prod.name,\n rrdatas: [frontendInstance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].accessConfigs?.[0]?.natIp)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfrontend_instance = gcp.compute.Instance(\"frontend\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"frontend\",\n machine_type=\"g1-small\",\n zone=\"us-central1-b\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n })\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nfrontend = gcp.dns.RecordSet(\"frontend\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n type=\"A\",\n ttl=300,\n managed_zone=prod.name,\n rrdatas=[frontend_instance.network_interfaces[0].access_configs[0].nat_ip])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var frontendInstance = new Gcp.Compute.Instance(\"frontend\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"frontend\",\n MachineType = \"g1-small\",\n Zone = \"us-central1-b\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n });\n\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var frontend = new Gcp.Dns.RecordSet(\"frontend\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = prod.Name,\n Rrdatas = new[]\n {\n frontendInstance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].AccessConfigs[0]?.NatIp),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfrontendInstance, err := compute.NewInstance(ctx, \"frontend\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"frontend\"),\n\t\t\tMachineType: pulumi.String(\"g1-small\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"frontend\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: prod.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(frontendInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\treturn \u0026networkInterfaces[0].AccessConfigs[0].NatIp, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var frontendInstance = new Instance(\"frontendInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"frontend\")\n .machineType(\"g1-small\")\n .zone(\"us-central1-b\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .build());\n\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var frontend = new RecordSet(\"frontend\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .type(\"A\")\n .ttl(300)\n .managedZone(prod.name())\n .rrdatas(frontendInstance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].accessConfigs()[0].natIp()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n frontend:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n type: A\n ttl: 300\n managedZone: ${prod.name}\n rrdatas:\n - ${frontendInstance.networkInterfaces[0].accessConfigs[0].natIp}\n frontendInstance:\n type: gcp:compute:Instance\n name: frontend\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: frontend\n machineType: g1-small\n zone: us-central1-b\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an A record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n rrdatas: [\"8.8.8.8\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\na = gcp.dns.RecordSet(\"a\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n rrdatas=[\"8.8.8.8\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"8.8.8.8\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"a\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"8.8.8.8\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var a = new RecordSet(\"a\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .rrdatas(\"8.8.8.8\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n rrdatas:\n - 8.8.8.8\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an MX record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst mx = new gcp.dns.RecordSet(\"mx\", {\n name: prod.dnsName,\n managedZone: prod.name,\n type: \"MX\",\n ttl: 3600,\n rrdatas: [\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nmx = gcp.dns.RecordSet(\"mx\",\n name=prod.dns_name,\n managed_zone=prod.name,\n type=\"MX\",\n ttl=3600,\n rrdatas=[\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var mx = new Gcp.Dns.RecordSet(\"mx\", new()\n {\n Name = prod.DnsName,\n ManagedZone = prod.Name,\n Type = \"MX\",\n Ttl = 3600,\n Rrdatas = new[]\n {\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"mx\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName,\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"MX\"),\n\t\t\tTtl: pulumi.Int(3600),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1 aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"5 alt1.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"5 alt2.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"10 alt3.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"10 alt4.aspmx.l.google.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var mx = new RecordSet(\"mx\", RecordSetArgs.builder()\n .name(prod.dnsName())\n .managedZone(prod.name())\n .type(\"MX\")\n .ttl(3600)\n .rrdatas( \n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mx:\n type: gcp:dns:RecordSet\n properties:\n name: ${prod.dnsName}\n managedZone: ${prod.name}\n type: MX\n ttl: 3600\n rrdatas:\n - 1 aspmx.l.google.com.\n - 5 alt1.aspmx.l.google.com.\n - 5 alt2.aspmx.l.google.com.\n - 10 alt3.aspmx.l.google.com.\n - 10 alt4.aspmx.l.google.com.\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an SPF record\n\nQuotes (`\"\"`) must be added around your `rrdatas` for a SPF record. Otherwise `rrdatas` string gets split on spaces.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst spf = new gcp.dns.RecordSet(\"spf\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"TXT\",\n ttl: 300,\n rrdatas: [\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nspf = gcp.dns.RecordSet(\"spf\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"TXT\",\n ttl=300,\n rrdatas=[\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var spf = new Gcp.Dns.RecordSet(\"spf\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"TXT\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"spf\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"TXT\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var spf = new RecordSet(\"spf\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"TXT\")\n .ttl(300)\n .rrdatas(\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n spf:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n managedZone: ${prod.name}\n type: TXT\n ttl: 300\n rrdatas:\n - '\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\"'\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding a CNAME record\n\n The list of `rrdatas` should only contain a single string corresponding to the Canonical Name intended.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst cname = new gcp.dns.RecordSet(\"cname\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"CNAME\",\n ttl: 300,\n rrdatas: [\"frontend.mydomain.com.\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\ncname = gcp.dns.RecordSet(\"cname\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"CNAME\",\n ttl=300,\n rrdatas=[\"frontend.mydomain.com.\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var cname = new Gcp.Dns.RecordSet(\"cname\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"CNAME\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"frontend.mydomain.com.\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"cname\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"CNAME\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"frontend.mydomain.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var cname = new RecordSet(\"cname\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"CNAME\")\n .ttl(300)\n .rrdatas(\"frontend.mydomain.com.\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cname:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n managedZone: ${prod.name}\n type: CNAME\n ttl: 300\n rrdatas:\n - frontend.mydomain.com.\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Setting Routing Policy instead of using rrdatas\n### Geolocation\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst geo = new gcp.dns.RecordSet(\"geo\", {\n name: `backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n geos: [\n {\n location: \"asia-east1\",\n rrdatas: [\"10.128.1.1\"],\n },\n {\n location: \"us-central1\",\n rrdatas: [\"10.130.1.1\"],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngeo = gcp.dns.RecordSet(\"geo\",\n name=f\"backend.{prod['dnsName']}\",\n managed_zone=prod[\"name\"],\n type=\"A\",\n ttl=300,\n routing_policy={\n \"geos\": [\n {\n \"location\": \"asia-east1\",\n \"rrdatas\": [\"10.128.1.1\"],\n },\n {\n \"location\": \"us-central1\",\n \"rrdatas\": [\"10.130.1.1\"],\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var geo = new Gcp.Dns.RecordSet(\"geo\", new()\n {\n Name = $\"backend.{prod.DnsName}\",\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n Geos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyGeoArgs\n {\n Location = \"asia-east1\",\n Rrdatas = new[]\n {\n \"10.128.1.1\",\n },\n },\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyGeoArgs\n {\n Location = \"us-central1\",\n Rrdatas = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewRecordSet(ctx, \"geo\", \u0026dns.RecordSetArgs{\n\t\t\tName: pulumi.Sprintf(\"backend.%v\", prod.DnsName),\n\t\t\tManagedZone: pulumi.Any(prod.Name),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tGeos: dns.RecordSetRoutingPolicyGeoArray{\n\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyGeoArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"asia-east1\"),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyGeoArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var geo = new RecordSet(\"geo\", RecordSetArgs.builder()\n .name(String.format(\"backend.%s\", prod.dnsName()))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .geos( \n RecordSetRoutingPolicyGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyGeoArgs.builder()\n .location(\"us-central1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n geo:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n routingPolicy:\n geos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-central1\n rrdatas:\n - 10.130.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Failover\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst prodRegionBackendService = new gcp.compute.RegionBackendService(\"prod\", {\n name: \"prod-backend\",\n region: \"us-central1\",\n});\nconst prodNetwork = new gcp.compute.Network(\"prod\", {name: \"prod-network\"});\nconst prodForwardingRule = new gcp.compute.ForwardingRule(\"prod\", {\n name: \"prod-ilb\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: prodRegionBackendService.id,\n allPorts: true,\n network: prodNetwork.name,\n allowGlobalAccess: true,\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n primaryBackup: {\n trickleRatio: 0.1,\n primary: {\n internalLoadBalancers: [{\n loadBalancerType: \"regionalL4ilb\",\n ipAddress: prodForwardingRule.ipAddress,\n port: \"80\",\n ipProtocol: \"tcp\",\n networkUrl: prodNetwork.id,\n project: prodForwardingRule.project,\n region: prodForwardingRule.region,\n }],\n },\n backupGeos: [\n {\n location: \"asia-east1\",\n rrdatas: [\"10.128.1.1\"],\n },\n {\n location: \"us-west1\",\n rrdatas: [\"10.130.1.1\"],\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nprod_region_backend_service = gcp.compute.RegionBackendService(\"prod\",\n name=\"prod-backend\",\n region=\"us-central1\")\nprod_network = gcp.compute.Network(\"prod\", name=\"prod-network\")\nprod_forwarding_rule = gcp.compute.ForwardingRule(\"prod\",\n name=\"prod-ilb\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=prod_region_backend_service.id,\n all_ports=True,\n network=prod_network.name,\n allow_global_access=True)\na = gcp.dns.RecordSet(\"a\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n routing_policy={\n \"primary_backup\": {\n \"trickle_ratio\": 0.1,\n \"primary\": {\n \"internal_load_balancers\": [{\n \"load_balancer_type\": \"regionalL4ilb\",\n \"ip_address\": prod_forwarding_rule.ip_address,\n \"port\": \"80\",\n \"ip_protocol\": \"tcp\",\n \"network_url\": prod_network.id,\n \"project\": prod_forwarding_rule.project,\n \"region\": prod_forwarding_rule.region,\n }],\n },\n \"backup_geos\": [\n {\n \"location\": \"asia-east1\",\n \"rrdatas\": [\"10.128.1.1\"],\n },\n {\n \"location\": \"us-west1\",\n \"rrdatas\": [\"10.130.1.1\"],\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var prodRegionBackendService = new Gcp.Compute.RegionBackendService(\"prod\", new()\n {\n Name = \"prod-backend\",\n Region = \"us-central1\",\n });\n\n var prodNetwork = new Gcp.Compute.Network(\"prod\", new()\n {\n Name = \"prod-network\",\n });\n\n var prodForwardingRule = new Gcp.Compute.ForwardingRule(\"prod\", new()\n {\n Name = \"prod-ilb\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = prodRegionBackendService.Id,\n AllPorts = true,\n Network = prodNetwork.Name,\n AllowGlobalAccess = true,\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n PrimaryBackup = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupArgs\n {\n TrickleRatio = 0.1,\n Primary = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs\n {\n InternalLoadBalancers = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs\n {\n LoadBalancerType = \"regionalL4ilb\",\n IpAddress = prodForwardingRule.IpAddress,\n Port = \"80\",\n IpProtocol = \"tcp\",\n NetworkUrl = prodNetwork.Id,\n Project = prodForwardingRule.Project,\n Region = prodForwardingRule.Region,\n },\n },\n },\n BackupGeos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"asia-east1\",\n Rrdatas = new[]\n {\n \"10.128.1.1\",\n },\n },\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"us-west1\",\n Rrdatas = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodRegionBackendService, err := compute.NewRegionBackendService(ctx, \"prod\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"prod-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodNetwork, err := compute.NewNetwork(ctx, \"prod\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"prod-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodForwardingRule, err := compute.NewForwardingRule(ctx, \"prod\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"prod-ilb\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: prodRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: prodNetwork.Name,\n\t\t\tAllowGlobalAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"a\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tPrimaryBackup: \u0026dns.RecordSetRoutingPolicyPrimaryBackupArgs{\n\t\t\t\t\tTrickleRatio: pulumi.Float64(0.1),\n\t\t\t\t\tPrimary: \u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs{\n\t\t\t\t\t\tInternalLoadBalancers: dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArray{\n\t\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs{\n\t\t\t\t\t\t\t\tLoadBalancerType: pulumi.String(\"regionalL4ilb\"),\n\t\t\t\t\t\t\t\tIpAddress: prodForwardingRule.IpAddress,\n\t\t\t\t\t\t\t\tPort: pulumi.String(\"80\"),\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t\tNetworkUrl: prodNetwork.ID(),\n\t\t\t\t\t\t\t\tProject: prodForwardingRule.Project,\n\t\t\t\t\t\t\t\tRegion: prodForwardingRule.Region,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tBackupGeos: dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArray{\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"asia-east1\"),\n\t\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var prodRegionBackendService = new RegionBackendService(\"prodRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"prod-backend\")\n .region(\"us-central1\")\n .build());\n\n var prodNetwork = new Network(\"prodNetwork\", NetworkArgs.builder()\n .name(\"prod-network\")\n .build());\n\n var prodForwardingRule = new ForwardingRule(\"prodForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"prod-ilb\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(prodRegionBackendService.id())\n .allPorts(true)\n .network(prodNetwork.name())\n .allowGlobalAccess(true)\n .build());\n\n var a = new RecordSet(\"a\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .primaryBackup(RecordSetRoutingPolicyPrimaryBackupArgs.builder()\n .trickleRatio(0.1)\n .primary(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.builder()\n .internalLoadBalancers(RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.builder()\n .loadBalancerType(\"regionalL4ilb\")\n .ipAddress(prodForwardingRule.ipAddress())\n .port(\"80\")\n .ipProtocol(\"tcp\")\n .networkUrl(prodNetwork.id())\n .project(prodForwardingRule.project())\n .region(prodForwardingRule.region())\n .build())\n .build())\n .backupGeos( \n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"us-west1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n routingPolicy:\n primaryBackup:\n trickleRatio: 0.1\n primary:\n internalLoadBalancers:\n - loadBalancerType: regionalL4ilb\n ipAddress: ${prodForwardingRule.ipAddress}\n port: '80'\n ipProtocol: tcp\n networkUrl: ${prodNetwork.id}\n project: ${prodForwardingRule.project}\n region: ${prodForwardingRule.region}\n backupGeos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-west1\n rrdatas:\n - 10.130.1.1\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n prodForwardingRule:\n type: gcp:compute:ForwardingRule\n name: prod\n properties:\n name: prod-ilb\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${prodRegionBackendService.id}\n allPorts: true\n network: ${prodNetwork.name}\n allowGlobalAccess: true\n prodRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: prod\n properties:\n name: prod-backend\n region: us-central1\n prodNetwork:\n type: gcp:compute:Network\n name: prod\n properties:\n name: prod-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Public zone failover\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_health_check = new gcp.compute.HealthCheck(\"http-health-check\", {\n name: \"http-health-check\",\n description: \"Health check via http\",\n timeoutSec: 5,\n checkIntervalSec: 30,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n httpHealthCheck: {\n portSpecification: \"USE_SERVING_PORT\",\n },\n});\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n healthCheck: http_health_check.id,\n primaryBackup: {\n trickleRatio: 0.1,\n primary: {\n externalEndpoints: [\"10.128.1.1\"],\n },\n backupGeos: [{\n location: \"us-west1\",\n healthCheckedTargets: {\n externalEndpoints: [\"10.130.1.1\"],\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_health_check = gcp.compute.HealthCheck(\"http-health-check\",\n name=\"http-health-check\",\n description=\"Health check via http\",\n timeout_sec=5,\n check_interval_sec=30,\n healthy_threshold=4,\n unhealthy_threshold=5,\n http_health_check={\n \"port_specification\": \"USE_SERVING_PORT\",\n })\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\na = gcp.dns.RecordSet(\"a\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n routing_policy={\n \"health_check\": http_health_check.id,\n \"primary_backup\": {\n \"trickle_ratio\": 0.1,\n \"primary\": {\n \"external_endpoints\": [\"10.128.1.1\"],\n },\n \"backup_geos\": [{\n \"location\": \"us-west1\",\n \"health_checked_targets\": {\n \"external_endpoints\": [\"10.130.1.1\"],\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var http_health_check = new Gcp.Compute.HealthCheck(\"http-health-check\", new()\n {\n Name = \"http-health-check\",\n Description = \"Health check via http\",\n TimeoutSec = 5,\n CheckIntervalSec = 30,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n PortSpecification = \"USE_SERVING_PORT\",\n },\n });\n\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n HealthCheck = http_health_check.Id,\n PrimaryBackup = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupArgs\n {\n TrickleRatio = 0.1,\n Primary = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs\n {\n ExternalEndpoints = new[]\n {\n \"10.128.1.1\",\n },\n },\n BackupGeos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"us-west1\",\n HealthCheckedTargets = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs\n {\n ExternalEndpoints = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewHealthCheck(ctx, \"http-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via http\"),\n\t\t\tTimeoutSec: pulumi.Int(5),\n\t\t\tCheckIntervalSec: pulumi.Int(30),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortSpecification: pulumi.String(\"USE_SERVING_PORT\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"a\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tHealthCheck: http_health_check.ID(),\n\t\t\t\tPrimaryBackup: \u0026dns.RecordSetRoutingPolicyPrimaryBackupArgs{\n\t\t\t\t\tTrickleRatio: pulumi.Float64(0.1),\n\t\t\t\t\tPrimary: \u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs{\n\t\t\t\t\t\tExternalEndpoints: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tBackupGeos: dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArray{\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\t\t\t\t\tHealthCheckedTargets: \u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs{\n\t\t\t\t\t\t\t\tExternalEndpoints: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var http_health_check = new HealthCheck(\"http-health-check\", HealthCheckArgs.builder()\n .name(\"http-health-check\")\n .description(\"Health check via http\")\n .timeoutSec(5)\n .checkIntervalSec(30)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build());\n\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var a = new RecordSet(\"a\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .healthCheck(http_health_check.id())\n .primaryBackup(RecordSetRoutingPolicyPrimaryBackupArgs.builder()\n .trickleRatio(0.1)\n .primary(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.builder()\n .externalEndpoints(\"10.128.1.1\")\n .build())\n .backupGeos(RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"us-west1\")\n .healthCheckedTargets(RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs.builder()\n .externalEndpoints(\"10.130.1.1\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n routingPolicy:\n healthCheck: ${[\"http-health-check\"].id}\n primaryBackup:\n trickleRatio: 0.1\n primary:\n externalEndpoints:\n - 10.128.1.1\n backupGeos:\n - location: us-west1\n healthCheckedTargets:\n externalEndpoints:\n - 10.130.1.1\n http-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: http-health-check\n description: Health check via http\n timeoutSec: 5\n checkIntervalSec: 30\n healthyThreshold: 4\n unhealthyThreshold: 5\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDNS record sets can be imported using either of these accepted formats:\n\n* `projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}`\n\n* `{{project}}/{{zone}}/{{name}}/{{type}}`\n\n* `{{zone}}/{{name}}/{{type}}`\n\nWhen using the `pulumi import` command, DNS record sets can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}\n```\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default {{project}}/{{zone}}/{{name}}/{{type}}\n```\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default {{zone}}/{{name}}/{{type}}\n```\n\nNote: The record name must include the trailing dot at the end.\n\n", + "description": "## Example Usage\n\n### Binding a DNS name to the ephemeral IP of a new instance:\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst frontendInstance = new gcp.compute.Instance(\"frontend\", {\n networkInterfaces: [{\n accessConfigs: [{}],\n network: \"default\",\n }],\n name: \"frontend\",\n machineType: \"g1-small\",\n zone: \"us-central1-b\",\n bootDisk: {\n initializeParams: {\n image: \"debian-cloud/debian-11\",\n },\n },\n});\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst frontend = new gcp.dns.RecordSet(\"frontend\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n type: \"A\",\n ttl: 300,\n managedZone: prod.name,\n rrdatas: [frontendInstance.networkInterfaces.apply(networkInterfaces =\u003e networkInterfaces[0].accessConfigs?.[0]?.natIp)],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfrontend_instance = gcp.compute.Instance(\"frontend\",\n network_interfaces=[{\n \"access_configs\": [{}],\n \"network\": \"default\",\n }],\n name=\"frontend\",\n machine_type=\"g1-small\",\n zone=\"us-central1-b\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"debian-cloud/debian-11\",\n },\n })\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nfrontend = gcp.dns.RecordSet(\"frontend\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n type=\"A\",\n ttl=300,\n managed_zone=prod.name,\n rrdatas=[frontend_instance.network_interfaces[0].access_configs[0].nat_ip])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var frontendInstance = new Gcp.Compute.Instance(\"frontend\", new()\n {\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n AccessConfigs = new[]\n {\n null,\n },\n Network = \"default\",\n },\n },\n Name = \"frontend\",\n MachineType = \"g1-small\",\n Zone = \"us-central1-b\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"debian-cloud/debian-11\",\n },\n },\n });\n\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var frontend = new Gcp.Dns.RecordSet(\"frontend\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = prod.Name,\n Rrdatas = new[]\n {\n frontendInstance.NetworkInterfaces.Apply(networkInterfaces =\u003e networkInterfaces[0].AccessConfigs[0]?.NatIp),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfrontendInstance, err := compute.NewInstance(ctx, \"frontend\", \u0026compute.InstanceArgs{\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{},\n\t\t\t\t\t},\n\t\t\t\t\tNetwork: pulumi.String(\"default\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tName: pulumi.String(\"frontend\"),\n\t\t\tMachineType: pulumi.String(\"g1-small\"),\n\t\t\tZone: pulumi.String(\"us-central1-b\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"debian-cloud/debian-11\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"frontend\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: prod.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(frontendInstance.NetworkInterfaces.ApplyT(func(networkInterfaces []compute.InstanceNetworkInterface) (*string, error) {\n\t\t\t\t\treturn \u0026networkInterfaces[0].AccessConfigs[0].NatIp, nil\n\t\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var frontendInstance = new Instance(\"frontendInstance\", InstanceArgs.builder()\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .accessConfigs()\n .network(\"default\")\n .build())\n .name(\"frontend\")\n .machineType(\"g1-small\")\n .zone(\"us-central1-b\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"debian-cloud/debian-11\")\n .build())\n .build())\n .build());\n\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var frontend = new RecordSet(\"frontend\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .type(\"A\")\n .ttl(300)\n .managedZone(prod.name())\n .rrdatas(frontendInstance.networkInterfaces().applyValue(networkInterfaces -\u003e networkInterfaces[0].accessConfigs()[0].natIp()))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n frontend:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n type: A\n ttl: 300\n managedZone: ${prod.name}\n rrdatas:\n - ${frontendInstance.networkInterfaces[0].accessConfigs[0].natIp}\n frontendInstance:\n type: gcp:compute:Instance\n name: frontend\n properties:\n networkInterfaces:\n - accessConfigs:\n - {}\n network: default\n name: frontend\n machineType: g1-small\n zone: us-central1-b\n bootDisk:\n initializeParams:\n image: debian-cloud/debian-11\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an A record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n rrdatas: [\"8.8.8.8\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\na = gcp.dns.RecordSet(\"a\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n rrdatas=[\"8.8.8.8\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"8.8.8.8\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"a\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"8.8.8.8\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var a = new RecordSet(\"a\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .rrdatas(\"8.8.8.8\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n rrdatas:\n - 8.8.8.8\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an MX record\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst mx = new gcp.dns.RecordSet(\"mx\", {\n name: prod.dnsName,\n managedZone: prod.name,\n type: \"MX\",\n ttl: 3600,\n rrdatas: [\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nmx = gcp.dns.RecordSet(\"mx\",\n name=prod.dns_name,\n managed_zone=prod.name,\n type=\"MX\",\n ttl=3600,\n rrdatas=[\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var mx = new Gcp.Dns.RecordSet(\"mx\", new()\n {\n Name = prod.DnsName,\n ManagedZone = prod.Name,\n Type = \"MX\",\n Ttl = 3600,\n Rrdatas = new[]\n {\n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"mx\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName,\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"MX\"),\n\t\t\tTtl: pulumi.Int(3600),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"1 aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"5 alt1.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"5 alt2.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"10 alt3.aspmx.l.google.com.\"),\n\t\t\t\tpulumi.String(\"10 alt4.aspmx.l.google.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var mx = new RecordSet(\"mx\", RecordSetArgs.builder()\n .name(prod.dnsName())\n .managedZone(prod.name())\n .type(\"MX\")\n .ttl(3600)\n .rrdatas( \n \"1 aspmx.l.google.com.\",\n \"5 alt1.aspmx.l.google.com.\",\n \"5 alt2.aspmx.l.google.com.\",\n \"10 alt3.aspmx.l.google.com.\",\n \"10 alt4.aspmx.l.google.com.\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n mx:\n type: gcp:dns:RecordSet\n properties:\n name: ${prod.dnsName}\n managedZone: ${prod.name}\n type: MX\n ttl: 3600\n rrdatas:\n - 1 aspmx.l.google.com.\n - 5 alt1.aspmx.l.google.com.\n - 5 alt2.aspmx.l.google.com.\n - 10 alt3.aspmx.l.google.com.\n - 10 alt4.aspmx.l.google.com.\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding an SPF record\n\nQuotes (`\"\"`) must be added around your `rrdatas` for a SPF record. Otherwise `rrdatas` string gets split on spaces.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst spf = new gcp.dns.RecordSet(\"spf\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"TXT\",\n ttl: 300,\n rrdatas: [\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nspf = gcp.dns.RecordSet(\"spf\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"TXT\",\n ttl=300,\n rrdatas=[\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var spf = new Gcp.Dns.RecordSet(\"spf\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"TXT\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"spf\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"TXT\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var spf = new RecordSet(\"spf\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"TXT\")\n .ttl(300)\n .rrdatas(\"\\\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n spf:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n managedZone: ${prod.name}\n type: TXT\n ttl: 300\n rrdatas:\n - '\"v=spf1 ip4:111.111.111.111 include:backoff.email-example.com -all\"'\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Adding a CNAME record\n\n The list of `rrdatas` should only contain a single string corresponding to the Canonical Name intended.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst cname = new gcp.dns.RecordSet(\"cname\", {\n name: pulumi.interpolate`frontend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"CNAME\",\n ttl: 300,\n rrdatas: [\"frontend.mydomain.com.\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\ncname = gcp.dns.RecordSet(\"cname\",\n name=prod.dns_name.apply(lambda dns_name: f\"frontend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"CNAME\",\n ttl=300,\n rrdatas=[\"frontend.mydomain.com.\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var cname = new Gcp.Dns.RecordSet(\"cname\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"frontend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"CNAME\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"frontend.mydomain.com.\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"cname\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"frontend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"CNAME\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"frontend.mydomain.com.\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var cname = new RecordSet(\"cname\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"frontend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"CNAME\")\n .ttl(300)\n .rrdatas(\"frontend.mydomain.com.\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cname:\n type: gcp:dns:RecordSet\n properties:\n name: frontend.${prod.dnsName}\n managedZone: ${prod.name}\n type: CNAME\n ttl: 300\n rrdatas:\n - frontend.mydomain.com.\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Setting Routing Policy instead of using rrdatas\n### Geolocation\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst geo = new gcp.dns.RecordSet(\"geo\", {\n name: `backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n geos: [\n {\n location: \"asia-east1\",\n rrdatas: [\"10.128.1.1\"],\n },\n {\n location: \"us-central1\",\n rrdatas: [\"10.130.1.1\"],\n },\n ],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ngeo = gcp.dns.RecordSet(\"geo\",\n name=f\"backend.{prod['dnsName']}\",\n managed_zone=prod[\"name\"],\n type=\"A\",\n ttl=300,\n routing_policy={\n \"geos\": [\n {\n \"location\": \"asia-east1\",\n \"rrdatas\": [\"10.128.1.1\"],\n },\n {\n \"location\": \"us-central1\",\n \"rrdatas\": [\"10.130.1.1\"],\n },\n ],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var geo = new Gcp.Dns.RecordSet(\"geo\", new()\n {\n Name = $\"backend.{prod.DnsName}\",\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n Geos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyGeoArgs\n {\n Location = \"asia-east1\",\n Rrdatas = new[]\n {\n \"10.128.1.1\",\n },\n },\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyGeoArgs\n {\n Location = \"us-central1\",\n Rrdatas = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := dns.NewRecordSet(ctx, \"geo\", \u0026dns.RecordSetArgs{\n\t\t\tName: pulumi.Sprintf(\"backend.%v\", prod.DnsName),\n\t\t\tManagedZone: pulumi.Any(prod.Name),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tGeos: dns.RecordSetRoutingPolicyGeoArray{\n\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyGeoArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"asia-east1\"),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyGeoArgs{\n\t\t\t\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var geo = new RecordSet(\"geo\", RecordSetArgs.builder()\n .name(String.format(\"backend.%s\", prod.dnsName()))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .geos( \n RecordSetRoutingPolicyGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyGeoArgs.builder()\n .location(\"us-central1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n geo:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n routingPolicy:\n geos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-central1\n rrdatas:\n - 10.130.1.1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Failover\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst prodRegionBackendService = new gcp.compute.RegionBackendService(\"prod\", {\n name: \"prod-backend\",\n region: \"us-central1\",\n});\nconst prodNetwork = new gcp.compute.Network(\"prod\", {name: \"prod-network\"});\nconst prodForwardingRule = new gcp.compute.ForwardingRule(\"prod\", {\n name: \"prod-ilb\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL\",\n backendService: prodRegionBackendService.id,\n allPorts: true,\n network: prodNetwork.name,\n allowGlobalAccess: true,\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n primaryBackup: {\n trickleRatio: 0.1,\n primary: {\n internalLoadBalancers: [{\n loadBalancerType: \"regionalL4ilb\",\n ipAddress: prodForwardingRule.ipAddress,\n port: \"80\",\n ipProtocol: \"tcp\",\n networkUrl: prodNetwork.id,\n project: prodForwardingRule.project,\n region: prodForwardingRule.region,\n }],\n },\n backupGeos: [\n {\n location: \"asia-east1\",\n rrdatas: [\"10.128.1.1\"],\n },\n {\n location: \"us-west1\",\n rrdatas: [\"10.130.1.1\"],\n },\n ],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\nprod_region_backend_service = gcp.compute.RegionBackendService(\"prod\",\n name=\"prod-backend\",\n region=\"us-central1\")\nprod_network = gcp.compute.Network(\"prod\", name=\"prod-network\")\nprod_forwarding_rule = gcp.compute.ForwardingRule(\"prod\",\n name=\"prod-ilb\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL\",\n backend_service=prod_region_backend_service.id,\n all_ports=True,\n network=prod_network.name,\n allow_global_access=True)\na = gcp.dns.RecordSet(\"a\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n routing_policy={\n \"primary_backup\": {\n \"trickle_ratio\": 0.1,\n \"primary\": {\n \"internal_load_balancers\": [{\n \"load_balancer_type\": \"regionalL4ilb\",\n \"ip_address\": prod_forwarding_rule.ip_address,\n \"port\": \"80\",\n \"ip_protocol\": \"tcp\",\n \"network_url\": prod_network.id,\n \"project\": prod_forwarding_rule.project,\n \"region\": prod_forwarding_rule.region,\n }],\n },\n \"backup_geos\": [\n {\n \"location\": \"asia-east1\",\n \"rrdatas\": [\"10.128.1.1\"],\n },\n {\n \"location\": \"us-west1\",\n \"rrdatas\": [\"10.130.1.1\"],\n },\n ],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var prodRegionBackendService = new Gcp.Compute.RegionBackendService(\"prod\", new()\n {\n Name = \"prod-backend\",\n Region = \"us-central1\",\n });\n\n var prodNetwork = new Gcp.Compute.Network(\"prod\", new()\n {\n Name = \"prod-network\",\n });\n\n var prodForwardingRule = new Gcp.Compute.ForwardingRule(\"prod\", new()\n {\n Name = \"prod-ilb\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL\",\n BackendService = prodRegionBackendService.Id,\n AllPorts = true,\n Network = prodNetwork.Name,\n AllowGlobalAccess = true,\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n PrimaryBackup = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupArgs\n {\n TrickleRatio = 0.1,\n Primary = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs\n {\n InternalLoadBalancers = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs\n {\n LoadBalancerType = \"regionalL4ilb\",\n IpAddress = prodForwardingRule.IpAddress,\n Port = \"80\",\n IpProtocol = \"tcp\",\n NetworkUrl = prodNetwork.Id,\n Project = prodForwardingRule.Project,\n Region = prodForwardingRule.Region,\n },\n },\n },\n BackupGeos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"asia-east1\",\n Rrdatas = new[]\n {\n \"10.128.1.1\",\n },\n },\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"us-west1\",\n Rrdatas = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodRegionBackendService, err := compute.NewRegionBackendService(ctx, \"prod\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"prod-backend\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodNetwork, err := compute.NewNetwork(ctx, \"prod\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"prod-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprodForwardingRule, err := compute.NewForwardingRule(ctx, \"prod\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"prod-ilb\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL\"),\n\t\t\tBackendService: prodRegionBackendService.ID(),\n\t\t\tAllPorts: pulumi.Bool(true),\n\t\t\tNetwork: prodNetwork.Name,\n\t\t\tAllowGlobalAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"a\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tPrimaryBackup: \u0026dns.RecordSetRoutingPolicyPrimaryBackupArgs{\n\t\t\t\t\tTrickleRatio: pulumi.Float64(0.1),\n\t\t\t\t\tPrimary: \u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs{\n\t\t\t\t\t\tInternalLoadBalancers: dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArray{\n\t\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs{\n\t\t\t\t\t\t\t\tLoadBalancerType: pulumi.String(\"regionalL4ilb\"),\n\t\t\t\t\t\t\t\tIpAddress: prodForwardingRule.IpAddress,\n\t\t\t\t\t\t\t\tPort: pulumi.String(\"80\"),\n\t\t\t\t\t\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\t\t\t\t\t\tNetworkUrl: prodNetwork.ID(),\n\t\t\t\t\t\t\t\tProject: prodForwardingRule.Project,\n\t\t\t\t\t\t\t\tRegion: prodForwardingRule.Region,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tBackupGeos: dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArray{\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"asia-east1\"),\n\t\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var prodRegionBackendService = new RegionBackendService(\"prodRegionBackendService\", RegionBackendServiceArgs.builder()\n .name(\"prod-backend\")\n .region(\"us-central1\")\n .build());\n\n var prodNetwork = new Network(\"prodNetwork\", NetworkArgs.builder()\n .name(\"prod-network\")\n .build());\n\n var prodForwardingRule = new ForwardingRule(\"prodForwardingRule\", ForwardingRuleArgs.builder()\n .name(\"prod-ilb\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL\")\n .backendService(prodRegionBackendService.id())\n .allPorts(true)\n .network(prodNetwork.name())\n .allowGlobalAccess(true)\n .build());\n\n var a = new RecordSet(\"a\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .primaryBackup(RecordSetRoutingPolicyPrimaryBackupArgs.builder()\n .trickleRatio(0.1)\n .primary(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.builder()\n .internalLoadBalancers(RecordSetRoutingPolicyPrimaryBackupPrimaryInternalLoadBalancerArgs.builder()\n .loadBalancerType(\"regionalL4ilb\")\n .ipAddress(prodForwardingRule.ipAddress())\n .port(\"80\")\n .ipProtocol(\"tcp\")\n .networkUrl(prodNetwork.id())\n .project(prodForwardingRule.project())\n .region(prodForwardingRule.region())\n .build())\n .build())\n .backupGeos( \n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"asia-east1\")\n .rrdatas(\"10.128.1.1\")\n .build(),\n RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"us-west1\")\n .rrdatas(\"10.130.1.1\")\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n routingPolicy:\n primaryBackup:\n trickleRatio: 0.1\n primary:\n internalLoadBalancers:\n - loadBalancerType: regionalL4ilb\n ipAddress: ${prodForwardingRule.ipAddress}\n port: '80'\n ipProtocol: tcp\n networkUrl: ${prodNetwork.id}\n project: ${prodForwardingRule.project}\n region: ${prodForwardingRule.region}\n backupGeos:\n - location: asia-east1\n rrdatas:\n - 10.128.1.1\n - location: us-west1\n rrdatas:\n - 10.130.1.1\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n prodForwardingRule:\n type: gcp:compute:ForwardingRule\n name: prod\n properties:\n name: prod-ilb\n region: us-central1\n loadBalancingScheme: INTERNAL\n backendService: ${prodRegionBackendService.id}\n allPorts: true\n network: ${prodNetwork.name}\n allowGlobalAccess: true\n prodRegionBackendService:\n type: gcp:compute:RegionBackendService\n name: prod\n properties:\n name: prod-backend\n region: us-central1\n prodNetwork:\n type: gcp:compute:Network\n name: prod\n properties:\n name: prod-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n### Public zone failover\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst http_health_check = new gcp.compute.HealthCheck(\"http-health-check\", {\n name: \"http-health-check\",\n description: \"Health check via http\",\n timeoutSec: 5,\n checkIntervalSec: 30,\n healthyThreshold: 4,\n unhealthyThreshold: 5,\n httpHealthCheck: {\n portSpecification: \"USE_SERVING_PORT\",\n },\n});\nconst prod = new gcp.dns.ManagedZone(\"prod\", {\n name: \"prod-zone\",\n dnsName: \"prod.mydomain.com.\",\n});\nconst a = new gcp.dns.RecordSet(\"a\", {\n name: pulumi.interpolate`backend.${prod.dnsName}`,\n managedZone: prod.name,\n type: \"A\",\n ttl: 300,\n routingPolicy: {\n healthCheck: http_health_check.id,\n primaryBackup: {\n trickleRatio: 0.1,\n primary: {\n externalEndpoints: [\"10.128.1.1\"],\n },\n backupGeos: [{\n location: \"us-west1\",\n healthCheckedTargets: {\n externalEndpoints: [\"10.130.1.1\"],\n },\n }],\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nhttp_health_check = gcp.compute.HealthCheck(\"http-health-check\",\n name=\"http-health-check\",\n description=\"Health check via http\",\n timeout_sec=5,\n check_interval_sec=30,\n healthy_threshold=4,\n unhealthy_threshold=5,\n http_health_check={\n \"port_specification\": \"USE_SERVING_PORT\",\n })\nprod = gcp.dns.ManagedZone(\"prod\",\n name=\"prod-zone\",\n dns_name=\"prod.mydomain.com.\")\na = gcp.dns.RecordSet(\"a\",\n name=prod.dns_name.apply(lambda dns_name: f\"backend.{dns_name}\"),\n managed_zone=prod.name,\n type=\"A\",\n ttl=300,\n routing_policy={\n \"health_check\": http_health_check.id,\n \"primary_backup\": {\n \"trickle_ratio\": 0.1,\n \"primary\": {\n \"external_endpoints\": [\"10.128.1.1\"],\n },\n \"backup_geos\": [{\n \"location\": \"us-west1\",\n \"health_checked_targets\": {\n \"external_endpoints\": [\"10.130.1.1\"],\n },\n }],\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var http_health_check = new Gcp.Compute.HealthCheck(\"http-health-check\", new()\n {\n Name = \"http-health-check\",\n Description = \"Health check via http\",\n TimeoutSec = 5,\n CheckIntervalSec = 30,\n HealthyThreshold = 4,\n UnhealthyThreshold = 5,\n HttpHealthCheck = new Gcp.Compute.Inputs.HealthCheckHttpHealthCheckArgs\n {\n PortSpecification = \"USE_SERVING_PORT\",\n },\n });\n\n var prod = new Gcp.Dns.ManagedZone(\"prod\", new()\n {\n Name = \"prod-zone\",\n DnsName = \"prod.mydomain.com.\",\n });\n\n var a = new Gcp.Dns.RecordSet(\"a\", new()\n {\n Name = prod.DnsName.Apply(dnsName =\u003e $\"backend.{dnsName}\"),\n ManagedZone = prod.Name,\n Type = \"A\",\n Ttl = 300,\n RoutingPolicy = new Gcp.Dns.Inputs.RecordSetRoutingPolicyArgs\n {\n HealthCheck = http_health_check.Id,\n PrimaryBackup = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupArgs\n {\n TrickleRatio = 0.1,\n Primary = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs\n {\n ExternalEndpoints = new[]\n {\n \"10.128.1.1\",\n },\n },\n BackupGeos = new[]\n {\n new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs\n {\n Location = \"us-west1\",\n HealthCheckedTargets = new Gcp.Dns.Inputs.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs\n {\n ExternalEndpoints = new[]\n {\n \"10.130.1.1\",\n },\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\thttp_health_check, err := compute.NewHealthCheck(ctx, \"http-health-check\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"http-health-check\"),\n\t\t\tDescription: pulumi.String(\"Health check via http\"),\n\t\t\tTimeoutSec: pulumi.Int(5),\n\t\t\tCheckIntervalSec: pulumi.Int(30),\n\t\t\tHealthyThreshold: pulumi.Int(4),\n\t\t\tUnhealthyThreshold: pulumi.Int(5),\n\t\t\tHttpHealthCheck: \u0026compute.HealthCheckHttpHealthCheckArgs{\n\t\t\t\tPortSpecification: pulumi.String(\"USE_SERVING_PORT\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprod, err := dns.NewManagedZone(ctx, \"prod\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"prod-zone\"),\n\t\t\tDnsName: pulumi.String(\"prod.mydomain.com.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"a\", \u0026dns.RecordSetArgs{\n\t\t\tName: prod.DnsName.ApplyT(func(dnsName string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"backend.%v\", dnsName), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tManagedZone: prod.Name,\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tRoutingPolicy: \u0026dns.RecordSetRoutingPolicyArgs{\n\t\t\t\tHealthCheck: http_health_check.ID(),\n\t\t\t\tPrimaryBackup: \u0026dns.RecordSetRoutingPolicyPrimaryBackupArgs{\n\t\t\t\t\tTrickleRatio: pulumi.Float64(0.1),\n\t\t\t\t\tPrimary: \u0026dns.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs{\n\t\t\t\t\t\tExternalEndpoints: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"10.128.1.1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tBackupGeos: dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArray{\n\t\t\t\t\t\t\u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs{\n\t\t\t\t\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\t\t\t\t\tHealthCheckedTargets: \u0026dns.RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs{\n\t\t\t\t\t\t\t\tExternalEndpoints: pulumi.StringArray{\n\t\t\t\t\t\t\t\t\tpulumi.String(\"10.130.1.1\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HealthCheck;\nimport com.pulumi.gcp.compute.HealthCheckArgs;\nimport com.pulumi.gcp.compute.inputs.HealthCheckHttpHealthCheckArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupArgs;\nimport com.pulumi.gcp.dns.inputs.RecordSetRoutingPolicyPrimaryBackupPrimaryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var http_health_check = new HealthCheck(\"http-health-check\", HealthCheckArgs.builder()\n .name(\"http-health-check\")\n .description(\"Health check via http\")\n .timeoutSec(5)\n .checkIntervalSec(30)\n .healthyThreshold(4)\n .unhealthyThreshold(5)\n .httpHealthCheck(HealthCheckHttpHealthCheckArgs.builder()\n .portSpecification(\"USE_SERVING_PORT\")\n .build())\n .build());\n\n var prod = new ManagedZone(\"prod\", ManagedZoneArgs.builder()\n .name(\"prod-zone\")\n .dnsName(\"prod.mydomain.com.\")\n .build());\n\n var a = new RecordSet(\"a\", RecordSetArgs.builder()\n .name(prod.dnsName().applyValue(dnsName -\u003e String.format(\"backend.%s\", dnsName)))\n .managedZone(prod.name())\n .type(\"A\")\n .ttl(300)\n .routingPolicy(RecordSetRoutingPolicyArgs.builder()\n .healthCheck(http_health_check.id())\n .primaryBackup(RecordSetRoutingPolicyPrimaryBackupArgs.builder()\n .trickleRatio(0.1)\n .primary(RecordSetRoutingPolicyPrimaryBackupPrimaryArgs.builder()\n .externalEndpoints(\"10.128.1.1\")\n .build())\n .backupGeos(RecordSetRoutingPolicyPrimaryBackupBackupGeoArgs.builder()\n .location(\"us-west1\")\n .healthCheckedTargets(RecordSetRoutingPolicyPrimaryBackupBackupGeoHealthCheckedTargetsArgs.builder()\n .externalEndpoints(\"10.130.1.1\")\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n a:\n type: gcp:dns:RecordSet\n properties:\n name: backend.${prod.dnsName}\n managedZone: ${prod.name}\n type: A\n ttl: 300\n routingPolicy:\n healthCheck: ${[\"http-health-check\"].id}\n primaryBackup:\n trickleRatio: 0.1\n primary:\n externalEndpoints:\n - 10.128.1.1\n backupGeos:\n - location: us-west1\n healthCheckedTargets:\n externalEndpoints:\n - 10.130.1.1\n http-health-check:\n type: gcp:compute:HealthCheck\n properties:\n name: http-health-check\n description: Health check via http\n timeoutSec: 5\n checkIntervalSec: 30\n healthyThreshold: 4\n unhealthyThreshold: 5\n httpHealthCheck:\n portSpecification: USE_SERVING_PORT\n prod:\n type: gcp:dns:ManagedZone\n properties:\n name: prod-zone\n dnsName: prod.mydomain.com.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDNS record sets can be imported using either of these accepted formats:\n\n* `projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}`\n\n* `{{project}}/{{zone}}/{{name}}/{{type}}`\n\n* `{{zone}}/{{name}}/{{type}}`\n\nWhen using the `pulumi import` command, DNS record sets can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default projects/{{project}}/managedZones/{{zone}}/rrsets/{{name}}/{{type}}\n```\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default {{project}}/{{zone}}/{{name}}/{{type}}\n```\n\n```sh\n$ pulumi import gcp:dns/recordSet:RecordSet default {{zone}}/{{name}}/{{type}}\n```\n\nNote: The record name must include the trailing dot at the end.\n\n", "properties": { "managedZone": { "type": "string", @@ -217075,7 +217075,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: \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", + "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\tnetwork_1, 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\tnetwork_2, 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\tsubnetwork_1, 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\tcluster_1, 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", @@ -217177,7 +217177,7 @@ } }, "gcp:dns/responsePolicyRule:ResponsePolicyRule": { - "description": "A Response Policy Rule is a selector that applies its behavior to queries that match the selector.\nSelectors are DNS names, which may be wildcards or exact matches.\nEach DNS query subject to a Response Policy matches at most one ResponsePolicyRule,\nas identified by the dns_name field with the longest matching suffix.\n\n\n\n## Example Usage\n\n### Dns Response Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst response_policy = new gcp.dns.ResponsePolicy(\"response-policy\", {\n responsePolicyName: \"example-response-policy\",\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n});\nconst example_response_policy_rule = new gcp.dns.ResponsePolicyRule(\"example-response-policy-rule\", {\n responsePolicy: response_policy.responsePolicyName,\n ruleName: \"example-rule\",\n dnsName: \"dns.example.com.\",\n localData: {\n localDatas: [{\n name: \"dns.example.com.\",\n type: \"A\",\n ttl: 300,\n rrdatas: [\"192.0.2.91\"],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nresponse_policy = gcp.dns.ResponsePolicy(\"response-policy\",\n response_policy_name=\"example-response-policy\",\n networks=[\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ])\nexample_response_policy_rule = gcp.dns.ResponsePolicyRule(\"example-response-policy-rule\",\n response_policy=response_policy.response_policy_name,\n rule_name=\"example-rule\",\n dns_name=\"dns.example.com.\",\n local_data={\n \"local_datas\": [{\n \"name\": \"dns.example.com.\",\n \"type\": \"A\",\n \"ttl\": 300,\n \"rrdatas\": [\"192.0.2.91\"],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var response_policy = new Gcp.Dns.ResponsePolicy(\"response-policy\", new()\n {\n ResponsePolicyName = \"example-response-policy\",\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n });\n\n var example_response_policy_rule = new Gcp.Dns.ResponsePolicyRule(\"example-response-policy-rule\", new()\n {\n ResponsePolicy = response_policy.ResponsePolicyName,\n RuleName = \"example-rule\",\n DnsName = \"dns.example.com.\",\n LocalData = new Gcp.Dns.Inputs.ResponsePolicyRuleLocalDataArgs\n {\n LocalDatas = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyRuleLocalDataLocalDataArgs\n {\n Name = \"dns.example.com.\",\n Type = \"A\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"192.0.2.91\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewResponsePolicy(ctx, \"response-policy\", \u0026dns.ResponsePolicyArgs{\n\t\t\tResponsePolicyName: pulumi.String(\"example-response-policy\"),\n\t\t\tNetworks: dns.ResponsePolicyNetworkArray{\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewResponsePolicyRule(ctx, \"example-response-policy-rule\", \u0026dns.ResponsePolicyRuleArgs{\n\t\t\tResponsePolicy: response_policy.ResponsePolicyName,\n\t\t\tRuleName: pulumi.String(\"example-rule\"),\n\t\t\tDnsName: pulumi.String(\"dns.example.com.\"),\n\t\t\tLocalData: \u0026dns.ResponsePolicyRuleLocalDataArgs{\n\t\t\t\tLocalDatas: dns.ResponsePolicyRuleLocalDataLocalDataArray{\n\t\t\t\t\t\u0026dns.ResponsePolicyRuleLocalDataLocalDataArgs{\n\t\t\t\t\t\tName: pulumi.String(\"dns.example.com.\"),\n\t\t\t\t\t\tType: pulumi.String(\"A\"),\n\t\t\t\t\t\tTtl: pulumi.Int(300),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"192.0.2.91\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ResponsePolicy;\nimport com.pulumi.gcp.dns.ResponsePolicyArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyNetworkArgs;\nimport com.pulumi.gcp.dns.ResponsePolicyRule;\nimport com.pulumi.gcp.dns.ResponsePolicyRuleArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyRuleLocalDataArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder()\n .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var response_policy = new ResponsePolicy(\"response-policy\", ResponsePolicyArgs.builder()\n .responsePolicyName(\"example-response-policy\")\n .networks( \n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build());\n\n var example_response_policy_rule = new ResponsePolicyRule(\"example-response-policy-rule\", ResponsePolicyRuleArgs.builder()\n .responsePolicy(response_policy.responsePolicyName())\n .ruleName(\"example-rule\")\n .dnsName(\"dns.example.com.\")\n .localData(ResponsePolicyRuleLocalDataArgs.builder()\n .localDatas(ResponsePolicyRuleLocalDataLocalDataArgs.builder()\n .name(\"dns.example.com.\")\n .type(\"A\")\n .ttl(300)\n .rrdatas(\"192.0.2.91\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n response-policy:\n type: gcp:dns:ResponsePolicy\n properties:\n responsePolicyName: example-response-policy\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n example-response-policy-rule:\n type: gcp:dns:ResponsePolicyRule\n properties:\n responsePolicy: ${[\"response-policy\"].responsePolicyName}\n ruleName: example-rule\n dnsName: dns.example.com.\n localData:\n localDatas:\n - name: dns.example.com.\n type: A\n ttl: 300\n rrdatas:\n - 192.0.2.91\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResponsePolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/responsePolicies/{{response_policy}}/rules/{{rule_name}}`\n\n* `{{project}}/{{response_policy}}/{{rule_name}}`\n\n* `{{response_policy}}/{{rule_name}}`\n\nWhen using the `pulumi import` command, ResponsePolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/responsePolicyRule:ResponsePolicyRule default projects/{{project}}/responsePolicies/{{response_policy}}/rules/{{rule_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicyRule:ResponsePolicyRule default {{project}}/{{response_policy}}/{{rule_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicyRule:ResponsePolicyRule default {{response_policy}}/{{rule_name}}\n```\n\n", + "description": "A Response Policy Rule is a selector that applies its behavior to queries that match the selector.\nSelectors are DNS names, which may be wildcards or exact matches.\nEach DNS query subject to a Response Policy matches at most one ResponsePolicyRule,\nas identified by the dns_name field with the longest matching suffix.\n\n\n\n## Example Usage\n\n### Dns Response Policy Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_1 = new gcp.compute.Network(\"network-1\", {\n name: \"network-1\",\n autoCreateSubnetworks: false,\n});\nconst network_2 = new gcp.compute.Network(\"network-2\", {\n name: \"network-2\",\n autoCreateSubnetworks: false,\n});\nconst response_policy = new gcp.dns.ResponsePolicy(\"response-policy\", {\n responsePolicyName: \"example-response-policy\",\n networks: [\n {\n networkUrl: network_1.id,\n },\n {\n networkUrl: network_2.id,\n },\n ],\n});\nconst example_response_policy_rule = new gcp.dns.ResponsePolicyRule(\"example-response-policy-rule\", {\n responsePolicy: response_policy.responsePolicyName,\n ruleName: \"example-rule\",\n dnsName: \"dns.example.com.\",\n localData: {\n localDatas: [{\n name: \"dns.example.com.\",\n type: \"A\",\n ttl: 300,\n rrdatas: [\"192.0.2.91\"],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_1 = gcp.compute.Network(\"network-1\",\n name=\"network-1\",\n auto_create_subnetworks=False)\nnetwork_2 = gcp.compute.Network(\"network-2\",\n name=\"network-2\",\n auto_create_subnetworks=False)\nresponse_policy = gcp.dns.ResponsePolicy(\"response-policy\",\n response_policy_name=\"example-response-policy\",\n networks=[\n {\n \"network_url\": network_1.id,\n },\n {\n \"network_url\": network_2.id,\n },\n ])\nexample_response_policy_rule = gcp.dns.ResponsePolicyRule(\"example-response-policy-rule\",\n response_policy=response_policy.response_policy_name,\n rule_name=\"example-rule\",\n dns_name=\"dns.example.com.\",\n local_data={\n \"local_datas\": [{\n \"name\": \"dns.example.com.\",\n \"type\": \"A\",\n \"ttl\": 300,\n \"rrdatas\": [\"192.0.2.91\"],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_1 = new Gcp.Compute.Network(\"network-1\", new()\n {\n Name = \"network-1\",\n AutoCreateSubnetworks = false,\n });\n\n var network_2 = new Gcp.Compute.Network(\"network-2\", new()\n {\n Name = \"network-2\",\n AutoCreateSubnetworks = false,\n });\n\n var response_policy = new Gcp.Dns.ResponsePolicy(\"response-policy\", new()\n {\n ResponsePolicyName = \"example-response-policy\",\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_1.Id,\n },\n new Gcp.Dns.Inputs.ResponsePolicyNetworkArgs\n {\n NetworkUrl = network_2.Id,\n },\n },\n });\n\n var example_response_policy_rule = new Gcp.Dns.ResponsePolicyRule(\"example-response-policy-rule\", new()\n {\n ResponsePolicy = response_policy.ResponsePolicyName,\n RuleName = \"example-rule\",\n DnsName = \"dns.example.com.\",\n LocalData = new Gcp.Dns.Inputs.ResponsePolicyRuleLocalDataArgs\n {\n LocalDatas = new[]\n {\n new Gcp.Dns.Inputs.ResponsePolicyRuleLocalDataLocalDataArgs\n {\n Name = \"dns.example.com.\",\n Type = \"A\",\n Ttl = 300,\n Rrdatas = new[]\n {\n \"192.0.2.91\",\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tnetwork_1, 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\tnetwork_2, 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\tresponse_policy, err := dns.NewResponsePolicy(ctx, \"response-policy\", \u0026dns.ResponsePolicyArgs{\n\t\t\tResponsePolicyName: pulumi.String(\"example-response-policy\"),\n\t\t\tNetworks: dns.ResponsePolicyNetworkArray{\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_1.ID(),\n\t\t\t\t},\n\t\t\t\t\u0026dns.ResponsePolicyNetworkArgs{\n\t\t\t\t\tNetworkUrl: network_2.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewResponsePolicyRule(ctx, \"example-response-policy-rule\", \u0026dns.ResponsePolicyRuleArgs{\n\t\t\tResponsePolicy: response_policy.ResponsePolicyName,\n\t\t\tRuleName: pulumi.String(\"example-rule\"),\n\t\t\tDnsName: pulumi.String(\"dns.example.com.\"),\n\t\t\tLocalData: \u0026dns.ResponsePolicyRuleLocalDataArgs{\n\t\t\t\tLocalDatas: dns.ResponsePolicyRuleLocalDataLocalDataArray{\n\t\t\t\t\t\u0026dns.ResponsePolicyRuleLocalDataLocalDataArgs{\n\t\t\t\t\t\tName: pulumi.String(\"dns.example.com.\"),\n\t\t\t\t\t\tType: pulumi.String(\"A\"),\n\t\t\t\t\t\tTtl: pulumi.Int(300),\n\t\t\t\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"192.0.2.91\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.dns.ResponsePolicy;\nimport com.pulumi.gcp.dns.ResponsePolicyArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyNetworkArgs;\nimport com.pulumi.gcp.dns.ResponsePolicyRule;\nimport com.pulumi.gcp.dns.ResponsePolicyRuleArgs;\nimport com.pulumi.gcp.dns.inputs.ResponsePolicyRuleLocalDataArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network_1 = new Network(\"network-1\", NetworkArgs.builder()\n .name(\"network-1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var network_2 = new Network(\"network-2\", NetworkArgs.builder()\n .name(\"network-2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var response_policy = new ResponsePolicy(\"response-policy\", ResponsePolicyArgs.builder()\n .responsePolicyName(\"example-response-policy\")\n .networks( \n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_1.id())\n .build(),\n ResponsePolicyNetworkArgs.builder()\n .networkUrl(network_2.id())\n .build())\n .build());\n\n var example_response_policy_rule = new ResponsePolicyRule(\"example-response-policy-rule\", ResponsePolicyRuleArgs.builder()\n .responsePolicy(response_policy.responsePolicyName())\n .ruleName(\"example-rule\")\n .dnsName(\"dns.example.com.\")\n .localData(ResponsePolicyRuleLocalDataArgs.builder()\n .localDatas(ResponsePolicyRuleLocalDataLocalDataArgs.builder()\n .name(\"dns.example.com.\")\n .type(\"A\")\n .ttl(300)\n .rrdatas(\"192.0.2.91\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-1:\n type: gcp:compute:Network\n properties:\n name: network-1\n autoCreateSubnetworks: false\n network-2:\n type: gcp:compute:Network\n properties:\n name: network-2\n autoCreateSubnetworks: false\n response-policy:\n type: gcp:dns:ResponsePolicy\n properties:\n responsePolicyName: example-response-policy\n networks:\n - networkUrl: ${[\"network-1\"].id}\n - networkUrl: ${[\"network-2\"].id}\n example-response-policy-rule:\n type: gcp:dns:ResponsePolicyRule\n properties:\n responsePolicy: ${[\"response-policy\"].responsePolicyName}\n ruleName: example-rule\n dnsName: dns.example.com.\n localData:\n localDatas:\n - name: dns.example.com.\n type: A\n ttl: 300\n rrdatas:\n - 192.0.2.91\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nResponsePolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/responsePolicies/{{response_policy}}/rules/{{rule_name}}`\n\n* `{{project}}/{{response_policy}}/{{rule_name}}`\n\n* `{{response_policy}}/{{rule_name}}`\n\nWhen using the `pulumi import` command, ResponsePolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:dns/responsePolicyRule:ResponsePolicyRule default projects/{{project}}/responsePolicies/{{response_policy}}/rules/{{rule_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicyRule:ResponsePolicyRule default {{project}}/{{response_policy}}/{{rule_name}}\n```\n\n```sh\n$ pulumi import gcp:dns/responsePolicyRule:ResponsePolicyRule default {{response_policy}}/{{rule_name}}\n```\n\n", "properties": { "behavior": { "type": "string", @@ -220111,7 +220111,7 @@ } }, "gcp:eventarc/trigger:Trigger": { - "description": "The Eventarc Trigger resource\n\n## Example Usage\n\n### Basic\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"eventarc-service\",\n location: \"europe-west1\",\n metadata: {\n namespace: \"my-project-name\",\n },\n template: {\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n ports: [{\n containerPort: 8080,\n }],\n }],\n containerConcurrency: 50,\n timeoutSeconds: 100,\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\nconst primary = new gcp.eventarc.Trigger(\"primary\", {\n name: \"name\",\n location: \"europe-west1\",\n matchingCriterias: [{\n attribute: \"type\",\n value: \"google.cloud.pubsub.topic.v1.messagePublished\",\n }],\n destination: {\n cloudRunService: {\n service: _default.name,\n region: \"europe-west1\",\n },\n },\n labels: {\n foo: \"bar\",\n },\n});\nconst foo = new gcp.pubsub.Topic(\"foo\", {name: \"topic\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"eventarc-service\",\n location=\"europe-west1\",\n metadata={\n \"namespace\": \"my-project-name\",\n },\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n \"ports\": [{\n \"container_port\": 8080,\n }],\n }],\n \"container_concurrency\": 50,\n \"timeout_seconds\": 100,\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\nprimary = gcp.eventarc.Trigger(\"primary\",\n name=\"name\",\n location=\"europe-west1\",\n matching_criterias=[{\n \"attribute\": \"type\",\n \"value\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n }],\n destination={\n \"cloud_run_service\": {\n \"service\": default.name,\n \"region\": \"europe-west1\",\n },\n },\n labels={\n \"foo\": \"bar\",\n })\nfoo = gcp.pubsub.Topic(\"foo\", name=\"topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"eventarc-service\",\n Location = \"europe-west1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Namespace = \"my-project-name\",\n },\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"gcr.io/cloudrun/hello\",\n Ports = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerPortArgs\n {\n ContainerPort = 8080,\n },\n },\n },\n },\n ContainerConcurrency = 50,\n TimeoutSeconds = 100,\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n var primary = new Gcp.Eventarc.Trigger(\"primary\", new()\n {\n Name = \"name\",\n Location = \"europe-west1\",\n MatchingCriterias = new[]\n {\n new Gcp.Eventarc.Inputs.TriggerMatchingCriteriaArgs\n {\n Attribute = \"type\",\n Value = \"google.cloud.pubsub.topic.v1.messagePublished\",\n },\n },\n Destination = new Gcp.Eventarc.Inputs.TriggerDestinationArgs\n {\n CloudRunService = new Gcp.Eventarc.Inputs.TriggerDestinationCloudRunServiceArgs\n {\n Service = @default.Name,\n Region = \"europe-west1\",\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var foo = new Gcp.PubSub.Topic(\"foo\", new()\n {\n Name = \"topic\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/eventarc\"\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 := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"eventarc-service\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tNamespace: pulumi.String(\"my-project-name\"),\n\t\t\t},\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"gcr.io/cloudrun/hello\"),\n\t\t\t\t\t\t\tPorts: cloudrun.ServiceTemplateSpecContainerPortArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerPortArgs{\n\t\t\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tContainerConcurrency: pulumi.Int(50),\n\t\t\t\t\tTimeoutSeconds: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = eventarc.NewTrigger(ctx, \"primary\", \u0026eventarc.TriggerArgs{\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tMatchingCriterias: eventarc.TriggerMatchingCriteriaArray{\n\t\t\t\t\u0026eventarc.TriggerMatchingCriteriaArgs{\n\t\t\t\t\tAttribute: pulumi.String(\"type\"),\n\t\t\t\t\tValue: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestination: \u0026eventarc.TriggerDestinationArgs{\n\t\t\t\tCloudRunService: \u0026eventarc.TriggerDestinationCloudRunServiceArgs{\n\t\t\t\t\tService: _default.Name,\n\t\t\t\t\tRegion: pulumi.String(\"europe-west1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewTopic(ctx, \"foo\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.eventarc.Trigger;\nimport com.pulumi.gcp.eventarc.TriggerArgs;\nimport com.pulumi.gcp.eventarc.inputs.TriggerMatchingCriteriaArgs;\nimport com.pulumi.gcp.eventarc.inputs.TriggerDestinationArgs;\nimport com.pulumi.gcp.eventarc.inputs.TriggerDestinationCloudRunServiceArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"eventarc-service\")\n .location(\"europe-west1\")\n .metadata(ServiceMetadataArgs.builder()\n .namespace(\"my-project-name\")\n .build())\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .ports(ServiceTemplateSpecContainerPortArgs.builder()\n .containerPort(8080)\n .build())\n .build())\n .containerConcurrency(50)\n .timeoutSeconds(100)\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n var primary = new Trigger(\"primary\", TriggerArgs.builder()\n .name(\"name\")\n .location(\"europe-west1\")\n .matchingCriterias(TriggerMatchingCriteriaArgs.builder()\n .attribute(\"type\")\n .value(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .build())\n .destination(TriggerDestinationArgs.builder()\n .cloudRunService(TriggerDestinationCloudRunServiceArgs.builder()\n .service(default_.name())\n .region(\"europe-west1\")\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var foo = new Topic(\"foo\", TopicArgs.builder()\n .name(\"topic\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:eventarc:Trigger\n properties:\n name: name\n location: europe-west1\n matchingCriterias:\n - attribute: type\n value: google.cloud.pubsub.topic.v1.messagePublished\n destination:\n cloudRunService:\n service: ${default.name}\n region: europe-west1\n labels:\n foo: bar\n foo:\n type: gcp:pubsub:Topic\n properties:\n name: topic\n default:\n type: gcp:cloudrun:Service\n properties:\n name: eventarc-service\n location: europe-west1\n metadata:\n namespace: my-project-name\n template:\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n ports:\n - containerPort: 8080\n containerConcurrency: 50\n timeoutSeconds: 100\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTrigger can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/triggers/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Trigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:eventarc/trigger:Trigger default projects/{{project}}/locations/{{location}}/triggers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:eventarc/trigger:Trigger default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:eventarc/trigger:Trigger default {{location}}/{{name}}\n```\n\n", + "description": "The Eventarc Trigger resource\n\n## Example Usage\n\n### Basic\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.cloudrun.Service(\"default\", {\n name: \"eventarc-service\",\n location: \"europe-west1\",\n metadata: {\n namespace: \"my-project-name\",\n },\n template: {\n spec: {\n containers: [{\n image: \"gcr.io/cloudrun/hello\",\n ports: [{\n containerPort: 8080,\n }],\n }],\n containerConcurrency: 50,\n timeoutSeconds: 100,\n },\n },\n traffics: [{\n percent: 100,\n latestRevision: true,\n }],\n});\nconst primary = new gcp.eventarc.Trigger(\"primary\", {\n name: \"name\",\n location: \"europe-west1\",\n matchingCriterias: [{\n attribute: \"type\",\n value: \"google.cloud.pubsub.topic.v1.messagePublished\",\n }],\n destination: {\n cloudRunService: {\n service: _default.name,\n region: \"europe-west1\",\n },\n },\n labels: {\n foo: \"bar\",\n },\n});\nconst foo = new gcp.pubsub.Topic(\"foo\", {name: \"topic\"});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.cloudrun.Service(\"default\",\n name=\"eventarc-service\",\n location=\"europe-west1\",\n metadata={\n \"namespace\": \"my-project-name\",\n },\n template={\n \"spec\": {\n \"containers\": [{\n \"image\": \"gcr.io/cloudrun/hello\",\n \"ports\": [{\n \"container_port\": 8080,\n }],\n }],\n \"container_concurrency\": 50,\n \"timeout_seconds\": 100,\n },\n },\n traffics=[{\n \"percent\": 100,\n \"latest_revision\": True,\n }])\nprimary = gcp.eventarc.Trigger(\"primary\",\n name=\"name\",\n location=\"europe-west1\",\n matching_criterias=[{\n \"attribute\": \"type\",\n \"value\": \"google.cloud.pubsub.topic.v1.messagePublished\",\n }],\n destination={\n \"cloud_run_service\": {\n \"service\": default.name,\n \"region\": \"europe-west1\",\n },\n },\n labels={\n \"foo\": \"bar\",\n })\nfoo = gcp.pubsub.Topic(\"foo\", name=\"topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CloudRun.Service(\"default\", new()\n {\n Name = \"eventarc-service\",\n Location = \"europe-west1\",\n Metadata = new Gcp.CloudRun.Inputs.ServiceMetadataArgs\n {\n Namespace = \"my-project-name\",\n },\n Template = new Gcp.CloudRun.Inputs.ServiceTemplateArgs\n {\n Spec = new Gcp.CloudRun.Inputs.ServiceTemplateSpecArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerArgs\n {\n Image = \"gcr.io/cloudrun/hello\",\n Ports = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTemplateSpecContainerPortArgs\n {\n ContainerPort = 8080,\n },\n },\n },\n },\n ContainerConcurrency = 50,\n TimeoutSeconds = 100,\n },\n },\n Traffics = new[]\n {\n new Gcp.CloudRun.Inputs.ServiceTrafficArgs\n {\n Percent = 100,\n LatestRevision = true,\n },\n },\n });\n\n var primary = new Gcp.Eventarc.Trigger(\"primary\", new()\n {\n Name = \"name\",\n Location = \"europe-west1\",\n MatchingCriterias = new[]\n {\n new Gcp.Eventarc.Inputs.TriggerMatchingCriteriaArgs\n {\n Attribute = \"type\",\n Value = \"google.cloud.pubsub.topic.v1.messagePublished\",\n },\n },\n Destination = new Gcp.Eventarc.Inputs.TriggerDestinationArgs\n {\n CloudRunService = new Gcp.Eventarc.Inputs.TriggerDestinationCloudRunServiceArgs\n {\n Service = @default.Name,\n Region = \"europe-west1\",\n },\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var foo = new Gcp.PubSub.Topic(\"foo\", new()\n {\n Name = \"topic\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrun\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/eventarc\"\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_default, err := cloudrun.NewService(ctx, \"default\", \u0026cloudrun.ServiceArgs{\n\t\t\tName: pulumi.String(\"eventarc-service\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tMetadata: \u0026cloudrun.ServiceMetadataArgs{\n\t\t\t\tNamespace: pulumi.String(\"my-project-name\"),\n\t\t\t},\n\t\t\tTemplate: \u0026cloudrun.ServiceTemplateArgs{\n\t\t\t\tSpec: \u0026cloudrun.ServiceTemplateSpecArgs{\n\t\t\t\t\tContainers: cloudrun.ServiceTemplateSpecContainerArray{\n\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerArgs{\n\t\t\t\t\t\t\tImage: pulumi.String(\"gcr.io/cloudrun/hello\"),\n\t\t\t\t\t\t\tPorts: cloudrun.ServiceTemplateSpecContainerPortArray{\n\t\t\t\t\t\t\t\t\u0026cloudrun.ServiceTemplateSpecContainerPortArgs{\n\t\t\t\t\t\t\t\t\tContainerPort: pulumi.Int(8080),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tContainerConcurrency: pulumi.Int(50),\n\t\t\t\t\tTimeoutSeconds: pulumi.Int(100),\n\t\t\t\t},\n\t\t\t},\n\t\t\tTraffics: cloudrun.ServiceTrafficArray{\n\t\t\t\t\u0026cloudrun.ServiceTrafficArgs{\n\t\t\t\t\tPercent: pulumi.Int(100),\n\t\t\t\t\tLatestRevision: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = eventarc.NewTrigger(ctx, \"primary\", \u0026eventarc.TriggerArgs{\n\t\t\tName: pulumi.String(\"name\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tMatchingCriterias: eventarc.TriggerMatchingCriteriaArray{\n\t\t\t\t\u0026eventarc.TriggerMatchingCriteriaArgs{\n\t\t\t\t\tAttribute: pulumi.String(\"type\"),\n\t\t\t\t\tValue: pulumi.String(\"google.cloud.pubsub.topic.v1.messagePublished\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestination: \u0026eventarc.TriggerDestinationArgs{\n\t\t\t\tCloudRunService: \u0026eventarc.TriggerDestinationCloudRunServiceArgs{\n\t\t\t\t\tService: _default.Name,\n\t\t\t\t\tRegion: pulumi.String(\"europe-west1\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = pubsub.NewTopic(ctx, \"foo\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"topic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.Service;\nimport com.pulumi.gcp.cloudrun.ServiceArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceMetadataArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTemplateSpecArgs;\nimport com.pulumi.gcp.cloudrun.inputs.ServiceTrafficArgs;\nimport com.pulumi.gcp.eventarc.Trigger;\nimport com.pulumi.gcp.eventarc.TriggerArgs;\nimport com.pulumi.gcp.eventarc.inputs.TriggerMatchingCriteriaArgs;\nimport com.pulumi.gcp.eventarc.inputs.TriggerDestinationArgs;\nimport com.pulumi.gcp.eventarc.inputs.TriggerDestinationCloudRunServiceArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Service(\"default\", ServiceArgs.builder()\n .name(\"eventarc-service\")\n .location(\"europe-west1\")\n .metadata(ServiceMetadataArgs.builder()\n .namespace(\"my-project-name\")\n .build())\n .template(ServiceTemplateArgs.builder()\n .spec(ServiceTemplateSpecArgs.builder()\n .containers(ServiceTemplateSpecContainerArgs.builder()\n .image(\"gcr.io/cloudrun/hello\")\n .ports(ServiceTemplateSpecContainerPortArgs.builder()\n .containerPort(8080)\n .build())\n .build())\n .containerConcurrency(50)\n .timeoutSeconds(100)\n .build())\n .build())\n .traffics(ServiceTrafficArgs.builder()\n .percent(100)\n .latestRevision(true)\n .build())\n .build());\n\n var primary = new Trigger(\"primary\", TriggerArgs.builder()\n .name(\"name\")\n .location(\"europe-west1\")\n .matchingCriterias(TriggerMatchingCriteriaArgs.builder()\n .attribute(\"type\")\n .value(\"google.cloud.pubsub.topic.v1.messagePublished\")\n .build())\n .destination(TriggerDestinationArgs.builder()\n .cloudRunService(TriggerDestinationCloudRunServiceArgs.builder()\n .service(default_.name())\n .region(\"europe-west1\")\n .build())\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var foo = new Topic(\"foo\", TopicArgs.builder()\n .name(\"topic\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n primary:\n type: gcp:eventarc:Trigger\n properties:\n name: name\n location: europe-west1\n matchingCriterias:\n - attribute: type\n value: google.cloud.pubsub.topic.v1.messagePublished\n destination:\n cloudRunService:\n service: ${default.name}\n region: europe-west1\n labels:\n foo: bar\n foo:\n type: gcp:pubsub:Topic\n properties:\n name: topic\n default:\n type: gcp:cloudrun:Service\n properties:\n name: eventarc-service\n location: europe-west1\n metadata:\n namespace: my-project-name\n template:\n spec:\n containers:\n - image: gcr.io/cloudrun/hello\n ports:\n - containerPort: 8080\n containerConcurrency: 50\n timeoutSeconds: 100\n traffics:\n - percent: 100\n latestRevision: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTrigger can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/triggers/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Trigger can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:eventarc/trigger:Trigger default projects/{{project}}/locations/{{location}}/triggers/{{name}}\n```\n\n```sh\n$ pulumi import gcp:eventarc/trigger:Trigger default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:eventarc/trigger:Trigger default {{location}}/{{name}}\n```\n\n", "properties": { "channel": { "type": "string", @@ -221245,7 +221245,7 @@ } }, "gcp:firebase/appCheckAppAttestConfig:AppCheckAppAttestConfig": { - "description": "An app's App Attest configuration object. Note that the Team ID registered with your\napp is used as part of the validation process. Make sure your `gcp.firebase.AppleApp` has a team_id present.\n\n\nTo get more information about AppAttestConfig, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.appAttestConfig)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n## Example Usage\n\n### Firebase App Check App Attest Config Minimal\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 _default = new gcp.firebase.AppleApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Apple app\",\n bundleId: \"bundle.id.appattest\",\n teamId: \"9987654321\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckAppAttestConfig = new gcp.firebase.AppCheckAppAttestConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ndefault = gcp.firebase.AppleApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Apple app\",\n bundle_id=\"bundle.id.appattest\",\n team_id=\"9987654321\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_app_attest_config = gcp.firebase.AppCheckAppAttestConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 @default = new Gcp.Firebase.AppleApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Apple app\",\n BundleId = \"bundle.id.appattest\",\n TeamId = \"9987654321\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckAppAttestConfig = new Gcp.Firebase.AppCheckAppAttestConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewAppleApp(ctx, \"default\", \u0026firebase.AppleAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Apple app\"),\n\t\t\tBundleId: pulumi.String(\"bundle.id.appattest\"),\n\t\t\tTeamId: pulumi.String(\"9987654321\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckAppAttestConfig(ctx, \"default\", \u0026firebase.AppCheckAppAttestConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.AppleApp;\nimport com.pulumi.gcp.firebase.AppleAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckAppAttestConfig;\nimport com.pulumi.gcp.firebase.AppCheckAppAttestConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new AppleApp(\"default\", AppleAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Apple app\")\n .bundleId(\"bundle.id.appattest\")\n .teamId(\"9987654321\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckAppAttestConfig = new AppCheckAppAttestConfig(\"defaultAppCheckAppAttestConfig\", AppCheckAppAttestConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:AppleApp\n properties:\n project: my-project-name\n displayName: Apple app\n bundleId: bundle.id.appattest\n teamId: '9987654321'\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckAppAttestConfig:\n type: gcp:firebase:AppCheckAppAttestConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebase App Check App Attest Config Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst _default = new gcp.firebase.AppleApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Apple app\",\n bundleId: \"bundle.id.appattest\",\n teamId: \"9987654321\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckAppAttestConfig = new gcp.firebase.AppCheckAppAttestConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n tokenTtl: \"7200s\",\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ndefault = gcp.firebase.AppleApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Apple app\",\n bundle_id=\"bundle.id.appattest\",\n team_id=\"9987654321\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_app_attest_config = gcp.firebase.AppCheckAppAttestConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n token_ttl=\"7200s\",\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 @default = new Gcp.Firebase.AppleApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Apple app\",\n BundleId = \"bundle.id.appattest\",\n TeamId = \"9987654321\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckAppAttestConfig = new Gcp.Firebase.AppCheckAppAttestConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n TokenTtl = \"7200s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewAppleApp(ctx, \"default\", \u0026firebase.AppleAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Apple app\"),\n\t\t\tBundleId: pulumi.String(\"bundle.id.appattest\"),\n\t\t\tTeamId: pulumi.String(\"9987654321\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckAppAttestConfig(ctx, \"default\", \u0026firebase.AppCheckAppAttestConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tTokenTtl: pulumi.String(\"7200s\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.AppleApp;\nimport com.pulumi.gcp.firebase.AppleAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckAppAttestConfig;\nimport com.pulumi.gcp.firebase.AppCheckAppAttestConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new AppleApp(\"default\", AppleAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Apple app\")\n .bundleId(\"bundle.id.appattest\")\n .teamId(\"9987654321\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckAppAttestConfig = new AppCheckAppAttestConfig(\"defaultAppCheckAppAttestConfig\", AppCheckAppAttestConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .tokenTtl(\"7200s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:AppleApp\n properties:\n project: my-project-name\n displayName: Apple app\n bundleId: bundle.id.appattest\n teamId: '9987654321'\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckAppAttestConfig:\n type: gcp:firebase:AppCheckAppAttestConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n tokenTtl: 7200s\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAppAttestConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/appAttestConfig`\n\n* `{{project}}/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, AppAttestConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckAppAttestConfig:AppCheckAppAttestConfig default projects/{{project}}/apps/{{app_id}}/appAttestConfig\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckAppAttestConfig:AppCheckAppAttestConfig default {{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckAppAttestConfig:AppCheckAppAttestConfig default {{app_id}}\n```\n\n", + "description": "An app's App Attest configuration object. Note that the Team ID registered with your\napp is used as part of the validation process. Make sure your `gcp.firebase.AppleApp` has a team_id present.\n\n\nTo get more information about AppAttestConfig, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.appAttestConfig)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n## Example Usage\n\n### Firebase App Check App Attest Config Minimal\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 _default = new gcp.firebase.AppleApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Apple app\",\n bundleId: \"bundle.id.appattest\",\n teamId: \"9987654321\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckAppAttestConfig = new gcp.firebase.AppCheckAppAttestConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ndefault = gcp.firebase.AppleApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Apple app\",\n bundle_id=\"bundle.id.appattest\",\n team_id=\"9987654321\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_app_attest_config = gcp.firebase.AppCheckAppAttestConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 @default = new Gcp.Firebase.AppleApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Apple app\",\n BundleId = \"bundle.id.appattest\",\n TeamId = \"9987654321\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckAppAttestConfig = new Gcp.Firebase.AppCheckAppAttestConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\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_default, err := firebase.NewAppleApp(ctx, \"default\", \u0026firebase.AppleAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Apple app\"),\n\t\t\tBundleId: pulumi.String(\"bundle.id.appattest\"),\n\t\t\tTeamId: pulumi.String(\"9987654321\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckAppAttestConfig(ctx, \"default\", \u0026firebase.AppCheckAppAttestConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.AppleApp;\nimport com.pulumi.gcp.firebase.AppleAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckAppAttestConfig;\nimport com.pulumi.gcp.firebase.AppCheckAppAttestConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new AppleApp(\"default\", AppleAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Apple app\")\n .bundleId(\"bundle.id.appattest\")\n .teamId(\"9987654321\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckAppAttestConfig = new AppCheckAppAttestConfig(\"defaultAppCheckAppAttestConfig\", AppCheckAppAttestConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:AppleApp\n properties:\n project: my-project-name\n displayName: Apple app\n bundleId: bundle.id.appattest\n teamId: '9987654321'\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckAppAttestConfig:\n type: gcp:firebase:AppCheckAppAttestConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebase App Check App Attest Config Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst _default = new gcp.firebase.AppleApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Apple app\",\n bundleId: \"bundle.id.appattest\",\n teamId: \"9987654321\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckAppAttestConfig = new gcp.firebase.AppCheckAppAttestConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n tokenTtl: \"7200s\",\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ndefault = gcp.firebase.AppleApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Apple app\",\n bundle_id=\"bundle.id.appattest\",\n team_id=\"9987654321\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_app_attest_config = gcp.firebase.AppCheckAppAttestConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n token_ttl=\"7200s\",\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 @default = new Gcp.Firebase.AppleApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Apple app\",\n BundleId = \"bundle.id.appattest\",\n TeamId = \"9987654321\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckAppAttestConfig = new Gcp.Firebase.AppCheckAppAttestConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n TokenTtl = \"7200s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\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_default, err := firebase.NewAppleApp(ctx, \"default\", \u0026firebase.AppleAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Apple app\"),\n\t\t\tBundleId: pulumi.String(\"bundle.id.appattest\"),\n\t\t\tTeamId: pulumi.String(\"9987654321\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckAppAttestConfig(ctx, \"default\", \u0026firebase.AppCheckAppAttestConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tTokenTtl: pulumi.String(\"7200s\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.AppleApp;\nimport com.pulumi.gcp.firebase.AppleAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckAppAttestConfig;\nimport com.pulumi.gcp.firebase.AppCheckAppAttestConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new AppleApp(\"default\", AppleAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Apple app\")\n .bundleId(\"bundle.id.appattest\")\n .teamId(\"9987654321\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckAppAttestConfig = new AppCheckAppAttestConfig(\"defaultAppCheckAppAttestConfig\", AppCheckAppAttestConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .tokenTtl(\"7200s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:AppleApp\n properties:\n project: my-project-name\n displayName: Apple app\n bundleId: bundle.id.appattest\n teamId: '9987654321'\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckAppAttestConfig:\n type: gcp:firebase:AppCheckAppAttestConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n tokenTtl: 7200s\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAppAttestConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/appAttestConfig`\n\n* `{{project}}/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, AppAttestConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckAppAttestConfig:AppCheckAppAttestConfig default projects/{{project}}/apps/{{app_id}}/appAttestConfig\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckAppAttestConfig:AppCheckAppAttestConfig default {{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckAppAttestConfig:AppCheckAppAttestConfig default {{app_id}}\n```\n\n", "properties": { "appId": { "type": "string", @@ -221315,7 +221315,7 @@ } }, "gcp:firebase/appCheckDebugToken:AppCheckDebugToken": { - "description": "A debug token is a secret used during the development or integration testing of\nan app. It essentially allows the development or integration testing to bypass\napp attestation while still allowing App Check to enforce protection on supported\nproduction Firebase services.\n\n\nTo get more information about DebugToken, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.debugTokens)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n\n\n## Example Usage\n\n### Firebase App Check Debug Token Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst _default = new gcp.firebase.WebApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Web App for debug token\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckDebugToken = new gcp.firebase.AppCheckDebugToken(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n displayName: \"Debug Token\",\n token: \"00000000-AAAA-BBBB-CCCC-000000000000\",\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ndefault = gcp.firebase.WebApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Web App for debug token\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_debug_token = gcp.firebase.AppCheckDebugToken(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n display_name=\"Debug Token\",\n token=\"00000000-AAAA-BBBB-CCCC-000000000000\",\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 @default = new Gcp.Firebase.WebApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Web App for debug token\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckDebugToken = new Gcp.Firebase.AppCheckDebugToken(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n DisplayName = \"Debug Token\",\n Token = \"00000000-AAAA-BBBB-CCCC-000000000000\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewWebApp(ctx, \"default\", \u0026firebase.WebAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Web App for debug token\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckDebugToken(ctx, \"default\", \u0026firebase.AppCheckDebugTokenArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tDisplayName: pulumi.String(\"Debug Token\"),\n\t\t\tToken: pulumi.String(\"00000000-AAAA-BBBB-CCCC-000000000000\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.WebApp;\nimport com.pulumi.gcp.firebase.WebAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckDebugToken;\nimport com.pulumi.gcp.firebase.AppCheckDebugTokenArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new WebApp(\"default\", WebAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Web App for debug token\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckDebugToken = new AppCheckDebugToken(\"defaultAppCheckDebugToken\", AppCheckDebugTokenArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .displayName(\"Debug Token\")\n .token(\"00000000-AAAA-BBBB-CCCC-000000000000\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:WebApp\n properties:\n project: my-project-name\n displayName: Web App for debug token\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckDebugToken:\n type: gcp:firebase:AppCheckDebugToken\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n displayName: Debug Token\n token: 00000000-AAAA-BBBB-CCCC-000000000000\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDebugToken can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/debugTokens/{{debug_token_id}}`\n\n* `{{project}}/{{app_id}}/{{debug_token_id}}`\n\n* `{{app_id}}/{{debug_token_id}}`\n\nWhen using the `pulumi import` command, DebugToken can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckDebugToken:AppCheckDebugToken default projects/{{project}}/apps/{{app_id}}/debugTokens/{{debug_token_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckDebugToken:AppCheckDebugToken default {{project}}/{{app_id}}/{{debug_token_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckDebugToken:AppCheckDebugToken default {{app_id}}/{{debug_token_id}}\n```\n\n", + "description": "A debug token is a secret used during the development or integration testing of\nan app. It essentially allows the development or integration testing to bypass\napp attestation while still allowing App Check to enforce protection on supported\nproduction Firebase services.\n\n\nTo get more information about DebugToken, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.debugTokens)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n\n\n## Example Usage\n\n### Firebase App Check Debug Token Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst _default = new gcp.firebase.WebApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Web App for debug token\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckDebugToken = new gcp.firebase.AppCheckDebugToken(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n displayName: \"Debug Token\",\n token: \"00000000-AAAA-BBBB-CCCC-000000000000\",\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ndefault = gcp.firebase.WebApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Web App for debug token\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_debug_token = gcp.firebase.AppCheckDebugToken(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n display_name=\"Debug Token\",\n token=\"00000000-AAAA-BBBB-CCCC-000000000000\",\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 @default = new Gcp.Firebase.WebApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Web App for debug token\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckDebugToken = new Gcp.Firebase.AppCheckDebugToken(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n DisplayName = \"Debug Token\",\n Token = \"00000000-AAAA-BBBB-CCCC-000000000000\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\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_default, err := firebase.NewWebApp(ctx, \"default\", \u0026firebase.WebAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Web App for debug token\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckDebugToken(ctx, \"default\", \u0026firebase.AppCheckDebugTokenArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tDisplayName: pulumi.String(\"Debug Token\"),\n\t\t\tToken: pulumi.String(\"00000000-AAAA-BBBB-CCCC-000000000000\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.WebApp;\nimport com.pulumi.gcp.firebase.WebAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckDebugToken;\nimport com.pulumi.gcp.firebase.AppCheckDebugTokenArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new WebApp(\"default\", WebAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Web App for debug token\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckDebugToken = new AppCheckDebugToken(\"defaultAppCheckDebugToken\", AppCheckDebugTokenArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .displayName(\"Debug Token\")\n .token(\"00000000-AAAA-BBBB-CCCC-000000000000\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:WebApp\n properties:\n project: my-project-name\n displayName: Web App for debug token\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckDebugToken:\n type: gcp:firebase:AppCheckDebugToken\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n displayName: Debug Token\n token: 00000000-AAAA-BBBB-CCCC-000000000000\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDebugToken can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/debugTokens/{{debug_token_id}}`\n\n* `{{project}}/{{app_id}}/{{debug_token_id}}`\n\n* `{{app_id}}/{{debug_token_id}}`\n\nWhen using the `pulumi import` command, DebugToken can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckDebugToken:AppCheckDebugToken default projects/{{project}}/apps/{{app_id}}/debugTokens/{{debug_token_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckDebugToken:AppCheckDebugToken default {{project}}/{{app_id}}/{{debug_token_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckDebugToken:AppCheckDebugToken default {{app_id}}/{{debug_token_id}}\n```\n\n", "properties": { "appId": { "type": "string", @@ -221405,7 +221405,7 @@ } }, "gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig": { - "description": "An app's DeviceCheck configuration object. Note that the Team ID registered with your\napp is used as part of the validation process. Make sure your `gcp.firebase.AppleApp` has a team_id present.\n\n\nTo get more information about DeviceCheckConfig, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.deviceCheckConfig)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n\n\n## Example Usage\n\n### Firebase App Check Device Check Config Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\nimport * as time from \"@pulumi/time\";\n\nconst _default = new gcp.firebase.AppleApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Apple app\",\n bundleId: \"bundle.id.devicecheck\",\n teamId: \"9987654321\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckDeviceCheckConfig = new gcp.firebase.AppCheckDeviceCheckConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n tokenTtl: \"7200s\",\n keyId: \"Key ID\",\n privateKey: std.file({\n input: \"path/to/private-key.p8\",\n }).then(invoke =\u003e invoke.result),\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\nimport pulumi_time as time\n\ndefault = gcp.firebase.AppleApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Apple app\",\n bundle_id=\"bundle.id.devicecheck\",\n team_id=\"9987654321\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_device_check_config = gcp.firebase.AppCheckDeviceCheckConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n token_ttl=\"7200s\",\n key_id=\"Key ID\",\n private_key=std.file(input=\"path/to/private-key.p8\").result,\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.AppleApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Apple app\",\n BundleId = \"bundle.id.devicecheck\",\n TeamId = \"9987654321\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckDeviceCheckConfig = new Gcp.Firebase.AppCheckDeviceCheckConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n TokenTtl = \"7200s\",\n KeyId = \"Key ID\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private-key.p8\",\n }).Apply(invoke =\u003e invoke.Result),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewAppleApp(ctx, \"default\", \u0026firebase.AppleAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Apple app\"),\n\t\t\tBundleId: pulumi.String(\"bundle.id.devicecheck\"),\n\t\t\tTeamId: pulumi.String(\"9987654321\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private-key.p8\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckDeviceCheckConfig(ctx, \"default\", \u0026firebase.AppCheckDeviceCheckConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tTokenTtl: pulumi.String(\"7200s\"),\n\t\t\tKeyId: pulumi.String(\"Key ID\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.AppleApp;\nimport com.pulumi.gcp.firebase.AppleAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckDeviceCheckConfig;\nimport com.pulumi.gcp.firebase.AppCheckDeviceCheckConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new AppleApp(\"default\", AppleAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Apple app\")\n .bundleId(\"bundle.id.devicecheck\")\n .teamId(\"9987654321\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckDeviceCheckConfig = new AppCheckDeviceCheckConfig(\"defaultAppCheckDeviceCheckConfig\", AppCheckDeviceCheckConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .tokenTtl(\"7200s\")\n .keyId(\"Key ID\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private-key.p8\")\n .build()).result())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:AppleApp\n properties:\n project: my-project-name\n displayName: Apple app\n bundleId: bundle.id.devicecheck\n teamId: '9987654321'\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckDeviceCheckConfig:\n type: gcp:firebase:AppCheckDeviceCheckConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n tokenTtl: 7200s\n keyId: Key ID\n privateKey:\n fn::invoke:\n function: std:file\n arguments:\n input: path/to/private-key.p8\n return: result\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeviceCheckConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/deviceCheckConfig`\n\n* `{{project}}/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, DeviceCheckConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig default projects/{{project}}/apps/{{app_id}}/deviceCheckConfig\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig default {{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig default {{app_id}}\n```\n\n", + "description": "An app's DeviceCheck configuration object. Note that the Team ID registered with your\napp is used as part of the validation process. Make sure your `gcp.firebase.AppleApp` has a team_id present.\n\n\nTo get more information about DeviceCheckConfig, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.deviceCheckConfig)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n\n\n## Example Usage\n\n### Firebase App Check Device Check Config Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\nimport * as time from \"@pulumi/time\";\n\nconst _default = new gcp.firebase.AppleApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Apple app\",\n bundleId: \"bundle.id.devicecheck\",\n teamId: \"9987654321\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckDeviceCheckConfig = new gcp.firebase.AppCheckDeviceCheckConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n tokenTtl: \"7200s\",\n keyId: \"Key ID\",\n privateKey: std.file({\n input: \"path/to/private-key.p8\",\n }).then(invoke =\u003e invoke.result),\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\nimport pulumi_time as time\n\ndefault = gcp.firebase.AppleApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Apple app\",\n bundle_id=\"bundle.id.devicecheck\",\n team_id=\"9987654321\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_device_check_config = gcp.firebase.AppCheckDeviceCheckConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n token_ttl=\"7200s\",\n key_id=\"Key ID\",\n private_key=std.file(input=\"path/to/private-key.p8\").result,\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.AppleApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Apple app\",\n BundleId = \"bundle.id.devicecheck\",\n TeamId = \"9987654321\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckDeviceCheckConfig = new Gcp.Firebase.AppCheckDeviceCheckConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n TokenTtl = \"7200s\",\n KeyId = \"Key ID\",\n PrivateKey = Std.File.Invoke(new()\n {\n Input = \"path/to/private-key.p8\",\n }).Apply(invoke =\u003e invoke.Result),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewAppleApp(ctx, \"default\", \u0026firebase.AppleAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Apple app\"),\n\t\t\tBundleId: pulumi.String(\"bundle.id.devicecheck\"),\n\t\t\tTeamId: pulumi.String(\"9987654321\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"path/to/private-key.p8\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckDeviceCheckConfig(ctx, \"default\", \u0026firebase.AppCheckDeviceCheckConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tTokenTtl: pulumi.String(\"7200s\"),\n\t\t\tKeyId: pulumi.String(\"Key ID\"),\n\t\t\tPrivateKey: pulumi.String(invokeFile.Result),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.AppleApp;\nimport com.pulumi.gcp.firebase.AppleAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckDeviceCheckConfig;\nimport com.pulumi.gcp.firebase.AppCheckDeviceCheckConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new AppleApp(\"default\", AppleAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Apple app\")\n .bundleId(\"bundle.id.devicecheck\")\n .teamId(\"9987654321\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckDeviceCheckConfig = new AppCheckDeviceCheckConfig(\"defaultAppCheckDeviceCheckConfig\", AppCheckDeviceCheckConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .tokenTtl(\"7200s\")\n .keyId(\"Key ID\")\n .privateKey(StdFunctions.file(FileArgs.builder()\n .input(\"path/to/private-key.p8\")\n .build()).result())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:AppleApp\n properties:\n project: my-project-name\n displayName: Apple app\n bundleId: bundle.id.devicecheck\n teamId: '9987654321'\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckDeviceCheckConfig:\n type: gcp:firebase:AppCheckDeviceCheckConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n tokenTtl: 7200s\n keyId: Key ID\n privateKey:\n fn::invoke:\n function: std:file\n arguments:\n input: path/to/private-key.p8\n return: result\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDeviceCheckConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/deviceCheckConfig`\n\n* `{{project}}/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, DeviceCheckConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig default projects/{{project}}/apps/{{app_id}}/deviceCheckConfig\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig default {{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckDeviceCheckConfig:AppCheckDeviceCheckConfig default {{app_id}}\n```\n\n", "properties": { "appId": { "type": "string", @@ -221515,7 +221515,7 @@ } }, "gcp:firebase/appCheckPlayIntegrityConfig:AppCheckPlayIntegrityConfig": { - "description": "An app's Play Integrity configuration object. Note that your registered SHA-256 certificate fingerprints are used to validate tokens issued by the Play Integrity API.\nMake sure your `gcp.firebase.AndroidApp` has at least one `sha256_hashes` present.\n\n\nTo get more information about PlayIntegrityConfig, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.playIntegrityConfig)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n## Example Usage\n\n### Firebase App Check Play Integrity Config Minimal\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\n// Enables the Play Integrity API\nconst playIntegrity = new gcp.projects.Service(\"play_integrity\", {\n project: \"my-project-name\",\n service: \"playintegrity.googleapis.com\",\n disableOnDestroy: false,\n});\nconst _default = new gcp.firebase.AndroidApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Play Integrity app\",\n packageName: \"package.name.playintegrity\",\n sha1Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"],\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckPlayIntegrityConfig = new gcp.firebase.AppCheckPlayIntegrityConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\n# Enables the Play Integrity API\nplay_integrity = gcp.projects.Service(\"play_integrity\",\n project=\"my-project-name\",\n service=\"playintegrity.googleapis.com\",\n disable_on_destroy=False)\ndefault = gcp.firebase.AndroidApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Play Integrity app\",\n package_name=\"package.name.playintegrity\",\n sha1_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"])\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_play_integrity_config = gcp.firebase.AppCheckPlayIntegrityConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 // Enables the Play Integrity API\n var playIntegrity = new Gcp.Projects.Service(\"play_integrity\", new()\n {\n Project = \"my-project-name\",\n ServiceName = \"playintegrity.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var @default = new Gcp.Firebase.AndroidApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Play Integrity app\",\n PackageName = \"package.name.playintegrity\",\n Sha1Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n },\n Sha256Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\",\n },\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckPlayIntegrityConfig = new Gcp.Firebase.AppCheckPlayIntegrityConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Enables the Play Integrity API\n\t\t_, err := projects.NewService(ctx, \"play_integrity\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tService: pulumi.String(\"playintegrity.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\t_, err = firebase.NewAndroidApp(ctx, \"default\", \u0026firebase.AndroidAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Play Integrity app\"),\n\t\t\tPackageName: pulumi.String(\"package.name.playintegrity\"),\n\t\t\tSha1Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21c\"),\n\t\t\t},\n\t\t\tSha256Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckPlayIntegrityConfig(ctx, \"default\", \u0026firebase.AppCheckPlayIntegrityConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.firebase.AndroidApp;\nimport com.pulumi.gcp.firebase.AndroidAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckPlayIntegrityConfig;\nimport com.pulumi.gcp.firebase.AppCheckPlayIntegrityConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Enables the Play Integrity API\n var playIntegrity = new Service(\"playIntegrity\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .service(\"playintegrity.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var default_ = new AndroidApp(\"default\", AndroidAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Play Integrity app\")\n .packageName(\"package.name.playintegrity\")\n .sha1Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21c\")\n .sha256Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckPlayIntegrityConfig = new AppCheckPlayIntegrityConfig(\"defaultAppCheckPlayIntegrityConfig\", AppCheckPlayIntegrityConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Enables the Play Integrity API\n playIntegrity:\n type: gcp:projects:Service\n name: play_integrity\n properties:\n project: my-project-name\n service: playintegrity.googleapis.com\n disableOnDestroy: false\n default:\n type: gcp:firebase:AndroidApp\n properties:\n project: my-project-name\n displayName: Play Integrity app\n packageName: package.name.playintegrity\n sha1Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21c\n sha256Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckPlayIntegrityConfig:\n type: gcp:firebase:AppCheckPlayIntegrityConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebase App Check Play Integrity Config Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\n// Enables the Play Integrity API\nconst playIntegrity = new gcp.projects.Service(\"play_integrity\", {\n project: \"my-project-name\",\n service: \"playintegrity.googleapis.com\",\n disableOnDestroy: false,\n});\nconst _default = new gcp.firebase.AndroidApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Play Integrity app\",\n packageName: \"package.name.playintegrity\",\n sha1Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"],\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckPlayIntegrityConfig = new gcp.firebase.AppCheckPlayIntegrityConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n tokenTtl: \"7200s\",\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\n# Enables the Play Integrity API\nplay_integrity = gcp.projects.Service(\"play_integrity\",\n project=\"my-project-name\",\n service=\"playintegrity.googleapis.com\",\n disable_on_destroy=False)\ndefault = gcp.firebase.AndroidApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Play Integrity app\",\n package_name=\"package.name.playintegrity\",\n sha1_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"])\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_play_integrity_config = gcp.firebase.AppCheckPlayIntegrityConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n token_ttl=\"7200s\",\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 // Enables the Play Integrity API\n var playIntegrity = new Gcp.Projects.Service(\"play_integrity\", new()\n {\n Project = \"my-project-name\",\n ServiceName = \"playintegrity.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var @default = new Gcp.Firebase.AndroidApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Play Integrity app\",\n PackageName = \"package.name.playintegrity\",\n Sha1Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n },\n Sha256Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\",\n },\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckPlayIntegrityConfig = new Gcp.Firebase.AppCheckPlayIntegrityConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n TokenTtl = \"7200s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Enables the Play Integrity API\n\t\t_, err := projects.NewService(ctx, \"play_integrity\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tService: pulumi.String(\"playintegrity.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\t_, err = firebase.NewAndroidApp(ctx, \"default\", \u0026firebase.AndroidAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Play Integrity app\"),\n\t\t\tPackageName: pulumi.String(\"package.name.playintegrity\"),\n\t\t\tSha1Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21c\"),\n\t\t\t},\n\t\t\tSha256Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckPlayIntegrityConfig(ctx, \"default\", \u0026firebase.AppCheckPlayIntegrityConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tTokenTtl: pulumi.String(\"7200s\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.firebase.AndroidApp;\nimport com.pulumi.gcp.firebase.AndroidAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckPlayIntegrityConfig;\nimport com.pulumi.gcp.firebase.AppCheckPlayIntegrityConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Enables the Play Integrity API\n var playIntegrity = new Service(\"playIntegrity\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .service(\"playintegrity.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var default_ = new AndroidApp(\"default\", AndroidAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Play Integrity app\")\n .packageName(\"package.name.playintegrity\")\n .sha1Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21c\")\n .sha256Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckPlayIntegrityConfig = new AppCheckPlayIntegrityConfig(\"defaultAppCheckPlayIntegrityConfig\", AppCheckPlayIntegrityConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .tokenTtl(\"7200s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Enables the Play Integrity API\n playIntegrity:\n type: gcp:projects:Service\n name: play_integrity\n properties:\n project: my-project-name\n service: playintegrity.googleapis.com\n disableOnDestroy: false\n default:\n type: gcp:firebase:AndroidApp\n properties:\n project: my-project-name\n displayName: Play Integrity app\n packageName: package.name.playintegrity\n sha1Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21c\n sha256Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckPlayIntegrityConfig:\n type: gcp:firebase:AppCheckPlayIntegrityConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n tokenTtl: 7200s\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPlayIntegrityConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/playIntegrityConfig`\n\n* `{{project}}/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, PlayIntegrityConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckPlayIntegrityConfig:AppCheckPlayIntegrityConfig default projects/{{project}}/apps/{{app_id}}/playIntegrityConfig\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckPlayIntegrityConfig:AppCheckPlayIntegrityConfig default {{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckPlayIntegrityConfig:AppCheckPlayIntegrityConfig default {{app_id}}\n```\n\n", + "description": "An app's Play Integrity configuration object. Note that your registered SHA-256 certificate fingerprints are used to validate tokens issued by the Play Integrity API.\nMake sure your `gcp.firebase.AndroidApp` has at least one `sha256_hashes` present.\n\n\nTo get more information about PlayIntegrityConfig, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.playIntegrityConfig)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n## Example Usage\n\n### Firebase App Check Play Integrity Config Minimal\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\n// Enables the Play Integrity API\nconst playIntegrity = new gcp.projects.Service(\"play_integrity\", {\n project: \"my-project-name\",\n service: \"playintegrity.googleapis.com\",\n disableOnDestroy: false,\n});\nconst _default = new gcp.firebase.AndroidApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Play Integrity app\",\n packageName: \"package.name.playintegrity\",\n sha1Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"],\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckPlayIntegrityConfig = new gcp.firebase.AppCheckPlayIntegrityConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\n# Enables the Play Integrity API\nplay_integrity = gcp.projects.Service(\"play_integrity\",\n project=\"my-project-name\",\n service=\"playintegrity.googleapis.com\",\n disable_on_destroy=False)\ndefault = gcp.firebase.AndroidApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Play Integrity app\",\n package_name=\"package.name.playintegrity\",\n sha1_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"])\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_play_integrity_config = gcp.firebase.AppCheckPlayIntegrityConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 // Enables the Play Integrity API\n var playIntegrity = new Gcp.Projects.Service(\"play_integrity\", new()\n {\n Project = \"my-project-name\",\n ServiceName = \"playintegrity.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var @default = new Gcp.Firebase.AndroidApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Play Integrity app\",\n PackageName = \"package.name.playintegrity\",\n Sha1Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n },\n Sha256Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\",\n },\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckPlayIntegrityConfig = new Gcp.Firebase.AppCheckPlayIntegrityConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Enables the Play Integrity API\n\t\t_, err := projects.NewService(ctx, \"play_integrity\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tService: pulumi.String(\"playintegrity.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\t_default, err := firebase.NewAndroidApp(ctx, \"default\", \u0026firebase.AndroidAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Play Integrity app\"),\n\t\t\tPackageName: pulumi.String(\"package.name.playintegrity\"),\n\t\t\tSha1Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21c\"),\n\t\t\t},\n\t\t\tSha256Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckPlayIntegrityConfig(ctx, \"default\", \u0026firebase.AppCheckPlayIntegrityConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.firebase.AndroidApp;\nimport com.pulumi.gcp.firebase.AndroidAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckPlayIntegrityConfig;\nimport com.pulumi.gcp.firebase.AppCheckPlayIntegrityConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Enables the Play Integrity API\n var playIntegrity = new Service(\"playIntegrity\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .service(\"playintegrity.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var default_ = new AndroidApp(\"default\", AndroidAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Play Integrity app\")\n .packageName(\"package.name.playintegrity\")\n .sha1Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21c\")\n .sha256Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckPlayIntegrityConfig = new AppCheckPlayIntegrityConfig(\"defaultAppCheckPlayIntegrityConfig\", AppCheckPlayIntegrityConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Enables the Play Integrity API\n playIntegrity:\n type: gcp:projects:Service\n name: play_integrity\n properties:\n project: my-project-name\n service: playintegrity.googleapis.com\n disableOnDestroy: false\n default:\n type: gcp:firebase:AndroidApp\n properties:\n project: my-project-name\n displayName: Play Integrity app\n packageName: package.name.playintegrity\n sha1Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21c\n sha256Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckPlayIntegrityConfig:\n type: gcp:firebase:AppCheckPlayIntegrityConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebase App Check Play Integrity Config Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\n// Enables the Play Integrity API\nconst playIntegrity = new gcp.projects.Service(\"play_integrity\", {\n project: \"my-project-name\",\n service: \"playintegrity.googleapis.com\",\n disableOnDestroy: false,\n});\nconst _default = new gcp.firebase.AndroidApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Play Integrity app\",\n packageName: \"package.name.playintegrity\",\n sha1Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256Hashes: [\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"],\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckPlayIntegrityConfig = new gcp.firebase.AppCheckPlayIntegrityConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n tokenTtl: \"7200s\",\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\n# Enables the Play Integrity API\nplay_integrity = gcp.projects.Service(\"play_integrity\",\n project=\"my-project-name\",\n service=\"playintegrity.googleapis.com\",\n disable_on_destroy=False)\ndefault = gcp.firebase.AndroidApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Play Integrity app\",\n package_name=\"package.name.playintegrity\",\n sha1_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21c\"],\n sha256_hashes=[\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"])\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_play_integrity_config = gcp.firebase.AppCheckPlayIntegrityConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n token_ttl=\"7200s\",\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 // Enables the Play Integrity API\n var playIntegrity = new Gcp.Projects.Service(\"play_integrity\", new()\n {\n Project = \"my-project-name\",\n ServiceName = \"playintegrity.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var @default = new Gcp.Firebase.AndroidApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Play Integrity app\",\n PackageName = \"package.name.playintegrity\",\n Sha1Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21c\",\n },\n Sha256Hashes = new[]\n {\n \"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\",\n },\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckPlayIntegrityConfig = new Gcp.Firebase.AppCheckPlayIntegrityConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n TokenTtl = \"7200s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Enables the Play Integrity API\n\t\t_, err := projects.NewService(ctx, \"play_integrity\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tService: pulumi.String(\"playintegrity.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\t_default, err := firebase.NewAndroidApp(ctx, \"default\", \u0026firebase.AndroidAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Play Integrity app\"),\n\t\t\tPackageName: pulumi.String(\"package.name.playintegrity\"),\n\t\t\tSha1Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21c\"),\n\t\t\t},\n\t\t\tSha256Hashes: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckPlayIntegrityConfig(ctx, \"default\", \u0026firebase.AppCheckPlayIntegrityConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tTokenTtl: pulumi.String(\"7200s\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.firebase.AndroidApp;\nimport com.pulumi.gcp.firebase.AndroidAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckPlayIntegrityConfig;\nimport com.pulumi.gcp.firebase.AppCheckPlayIntegrityConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Enables the Play Integrity API\n var playIntegrity = new Service(\"playIntegrity\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .service(\"playintegrity.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var default_ = new AndroidApp(\"default\", AndroidAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Play Integrity app\")\n .packageName(\"package.name.playintegrity\")\n .sha1Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21c\")\n .sha256Hashes(\"2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckPlayIntegrityConfig = new AppCheckPlayIntegrityConfig(\"defaultAppCheckPlayIntegrityConfig\", AppCheckPlayIntegrityConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .tokenTtl(\"7200s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Enables the Play Integrity API\n playIntegrity:\n type: gcp:projects:Service\n name: play_integrity\n properties:\n project: my-project-name\n service: playintegrity.googleapis.com\n disableOnDestroy: false\n default:\n type: gcp:firebase:AndroidApp\n properties:\n project: my-project-name\n displayName: Play Integrity app\n packageName: package.name.playintegrity\n sha1Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21c\n sha256Hashes:\n - 2145bdf698b8715039bd0e83f2069bed435ac21ca1b2c3d4e5f6123456789abc\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckPlayIntegrityConfig:\n type: gcp:firebase:AppCheckPlayIntegrityConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n tokenTtl: 7200s\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPlayIntegrityConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/playIntegrityConfig`\n\n* `{{project}}/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, PlayIntegrityConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckPlayIntegrityConfig:AppCheckPlayIntegrityConfig default projects/{{project}}/apps/{{app_id}}/playIntegrityConfig\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckPlayIntegrityConfig:AppCheckPlayIntegrityConfig default {{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckPlayIntegrityConfig:AppCheckPlayIntegrityConfig default {{app_id}}\n```\n\n", "properties": { "appId": { "type": "string", @@ -221585,7 +221585,7 @@ } }, "gcp:firebase/appCheckRecaptchaEnterpriseConfig:AppCheckRecaptchaEnterpriseConfig": { - "description": "An app's reCAPTCHA Enterprise configuration object.\n\n\nTo get more information about RecaptchaEnterpriseConfig, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.recaptchaEnterpriseConfig)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n## Example Usage\n\n### Firebase App Check Recaptcha Enterprise Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\n// Enables the reCAPTCHA Enterprise API\nconst recaptchaEnterprise = new gcp.projects.Service(\"recaptcha_enterprise\", {\n project: \"my-project-name\",\n service: \"recaptchaenterprise.googleapis.com\",\n disableOnDestroy: false,\n});\nconst _default = new gcp.firebase.WebApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Web App for reCAPTCHA Enterprise\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckRecaptchaEnterpriseConfig = new gcp.firebase.AppCheckRecaptchaEnterpriseConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n siteKey: \"6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw\",\n tokenTtl: \"7200s\",\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\n# Enables the reCAPTCHA Enterprise API\nrecaptcha_enterprise = gcp.projects.Service(\"recaptcha_enterprise\",\n project=\"my-project-name\",\n service=\"recaptchaenterprise.googleapis.com\",\n disable_on_destroy=False)\ndefault = gcp.firebase.WebApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Web App for reCAPTCHA Enterprise\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_recaptcha_enterprise_config = gcp.firebase.AppCheckRecaptchaEnterpriseConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n site_key=\"6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw\",\n token_ttl=\"7200s\",\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 // Enables the reCAPTCHA Enterprise API\n var recaptchaEnterprise = new Gcp.Projects.Service(\"recaptcha_enterprise\", new()\n {\n Project = \"my-project-name\",\n ServiceName = \"recaptchaenterprise.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var @default = new Gcp.Firebase.WebApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Web App for reCAPTCHA Enterprise\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckRecaptchaEnterpriseConfig = new Gcp.Firebase.AppCheckRecaptchaEnterpriseConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n SiteKey = \"6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw\",\n TokenTtl = \"7200s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Enables the reCAPTCHA Enterprise API\n\t\t_, err := projects.NewService(ctx, \"recaptcha_enterprise\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tService: pulumi.String(\"recaptchaenterprise.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\t_, err = firebase.NewWebApp(ctx, \"default\", \u0026firebase.WebAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Web App for reCAPTCHA Enterprise\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckRecaptchaEnterpriseConfig(ctx, \"default\", \u0026firebase.AppCheckRecaptchaEnterpriseConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tSiteKey: pulumi.String(\"6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw\"),\n\t\t\tTokenTtl: pulumi.String(\"7200s\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.firebase.WebApp;\nimport com.pulumi.gcp.firebase.WebAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckRecaptchaEnterpriseConfig;\nimport com.pulumi.gcp.firebase.AppCheckRecaptchaEnterpriseConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Enables the reCAPTCHA Enterprise API\n var recaptchaEnterprise = new Service(\"recaptchaEnterprise\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .service(\"recaptchaenterprise.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var default_ = new WebApp(\"default\", WebAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Web App for reCAPTCHA Enterprise\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckRecaptchaEnterpriseConfig = new AppCheckRecaptchaEnterpriseConfig(\"defaultAppCheckRecaptchaEnterpriseConfig\", AppCheckRecaptchaEnterpriseConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .siteKey(\"6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw\")\n .tokenTtl(\"7200s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Enables the reCAPTCHA Enterprise API\n recaptchaEnterprise:\n type: gcp:projects:Service\n name: recaptcha_enterprise\n properties:\n project: my-project-name\n service: recaptchaenterprise.googleapis.com\n disableOnDestroy: false\n default:\n type: gcp:firebase:WebApp\n properties:\n project: my-project-name\n displayName: Web App for reCAPTCHA Enterprise\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckRecaptchaEnterpriseConfig:\n type: gcp:firebase:AppCheckRecaptchaEnterpriseConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n siteKey: 6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw\n tokenTtl: 7200s\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRecaptchaEnterpriseConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/recaptchaEnterpriseConfig`\n\n* `{{project}}/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, RecaptchaEnterpriseConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckRecaptchaEnterpriseConfig:AppCheckRecaptchaEnterpriseConfig default projects/{{project}}/apps/{{app_id}}/recaptchaEnterpriseConfig\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckRecaptchaEnterpriseConfig:AppCheckRecaptchaEnterpriseConfig default {{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckRecaptchaEnterpriseConfig:AppCheckRecaptchaEnterpriseConfig default {{app_id}}\n```\n\n", + "description": "An app's reCAPTCHA Enterprise configuration object.\n\n\nTo get more information about RecaptchaEnterpriseConfig, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.recaptchaEnterpriseConfig)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n## Example Usage\n\n### Firebase App Check Recaptcha Enterprise Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\n// Enables the reCAPTCHA Enterprise API\nconst recaptchaEnterprise = new gcp.projects.Service(\"recaptcha_enterprise\", {\n project: \"my-project-name\",\n service: \"recaptchaenterprise.googleapis.com\",\n disableOnDestroy: false,\n});\nconst _default = new gcp.firebase.WebApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Web App for reCAPTCHA Enterprise\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckRecaptchaEnterpriseConfig = new gcp.firebase.AppCheckRecaptchaEnterpriseConfig(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n siteKey: \"6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw\",\n tokenTtl: \"7200s\",\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\n# Enables the reCAPTCHA Enterprise API\nrecaptcha_enterprise = gcp.projects.Service(\"recaptcha_enterprise\",\n project=\"my-project-name\",\n service=\"recaptchaenterprise.googleapis.com\",\n disable_on_destroy=False)\ndefault = gcp.firebase.WebApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Web App for reCAPTCHA Enterprise\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_recaptcha_enterprise_config = gcp.firebase.AppCheckRecaptchaEnterpriseConfig(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n site_key=\"6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw\",\n token_ttl=\"7200s\",\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 // Enables the reCAPTCHA Enterprise API\n var recaptchaEnterprise = new Gcp.Projects.Service(\"recaptcha_enterprise\", new()\n {\n Project = \"my-project-name\",\n ServiceName = \"recaptchaenterprise.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var @default = new Gcp.Firebase.WebApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Web App for reCAPTCHA Enterprise\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckRecaptchaEnterpriseConfig = new Gcp.Firebase.AppCheckRecaptchaEnterpriseConfig(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n SiteKey = \"6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw\",\n TokenTtl = \"7200s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Enables the reCAPTCHA Enterprise API\n\t\t_, err := projects.NewService(ctx, \"recaptcha_enterprise\", \u0026projects.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tService: pulumi.String(\"recaptchaenterprise.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\t_default, err := firebase.NewWebApp(ctx, \"default\", \u0026firebase.WebAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Web App for reCAPTCHA Enterprise\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckRecaptchaEnterpriseConfig(ctx, \"default\", \u0026firebase.AppCheckRecaptchaEnterpriseConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tSiteKey: pulumi.String(\"6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw\"),\n\t\t\tTokenTtl: pulumi.String(\"7200s\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.firebase.WebApp;\nimport com.pulumi.gcp.firebase.WebAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckRecaptchaEnterpriseConfig;\nimport com.pulumi.gcp.firebase.AppCheckRecaptchaEnterpriseConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Enables the reCAPTCHA Enterprise API\n var recaptchaEnterprise = new Service(\"recaptchaEnterprise\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .service(\"recaptchaenterprise.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var default_ = new WebApp(\"default\", WebAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Web App for reCAPTCHA Enterprise\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckRecaptchaEnterpriseConfig = new AppCheckRecaptchaEnterpriseConfig(\"defaultAppCheckRecaptchaEnterpriseConfig\", AppCheckRecaptchaEnterpriseConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .siteKey(\"6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw\")\n .tokenTtl(\"7200s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Enables the reCAPTCHA Enterprise API\n recaptchaEnterprise:\n type: gcp:projects:Service\n name: recaptcha_enterprise\n properties:\n project: my-project-name\n service: recaptchaenterprise.googleapis.com\n disableOnDestroy: false\n default:\n type: gcp:firebase:WebApp\n properties:\n project: my-project-name\n displayName: Web App for reCAPTCHA Enterprise\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckRecaptchaEnterpriseConfig:\n type: gcp:firebase:AppCheckRecaptchaEnterpriseConfig\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n siteKey: 6LdpMXIpAAAAANkwWQPgEdjEhal7ugkH9RK9ytuw\n tokenTtl: 7200s\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRecaptchaEnterpriseConfig can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/recaptchaEnterpriseConfig`\n\n* `{{project}}/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, RecaptchaEnterpriseConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckRecaptchaEnterpriseConfig:AppCheckRecaptchaEnterpriseConfig default projects/{{project}}/apps/{{app_id}}/recaptchaEnterpriseConfig\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckRecaptchaEnterpriseConfig:AppCheckRecaptchaEnterpriseConfig default {{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckRecaptchaEnterpriseConfig:AppCheckRecaptchaEnterpriseConfig default {{app_id}}\n```\n\n", "properties": { "appId": { "type": "string", @@ -221669,7 +221669,7 @@ } }, "gcp:firebase/appCheckRecaptchaV3Config:AppCheckRecaptchaV3Config": { - "description": "An app's reCAPTCHA V3 configuration object.\n\n\nTo get more information about RecaptchaV3Config, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.recaptchaV3Config)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n\n\n## Example Usage\n\n### Firebase App Check Recaptcha V3 Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst _default = new gcp.firebase.WebApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Web App for reCAPTCHA V3\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckRecaptchaV3Config = new gcp.firebase.AppCheckRecaptchaV3Config(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n siteSecret: \"6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX\",\n tokenTtl: \"7200s\",\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ndefault = gcp.firebase.WebApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Web App for reCAPTCHA V3\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_recaptcha_v3_config = gcp.firebase.AppCheckRecaptchaV3Config(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n site_secret=\"6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX\",\n token_ttl=\"7200s\",\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 @default = new Gcp.Firebase.WebApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Web App for reCAPTCHA V3\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckRecaptchaV3Config = new Gcp.Firebase.AppCheckRecaptchaV3Config(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n SiteSecret = \"6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX\",\n TokenTtl = \"7200s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewWebApp(ctx, \"default\", \u0026firebase.WebAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Web App for reCAPTCHA V3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckRecaptchaV3Config(ctx, \"default\", \u0026firebase.AppCheckRecaptchaV3ConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tSiteSecret: pulumi.String(\"6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX\"),\n\t\t\tTokenTtl: pulumi.String(\"7200s\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.WebApp;\nimport com.pulumi.gcp.firebase.WebAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckRecaptchaV3Config;\nimport com.pulumi.gcp.firebase.AppCheckRecaptchaV3ConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new WebApp(\"default\", WebAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Web App for reCAPTCHA V3\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckRecaptchaV3Config = new AppCheckRecaptchaV3Config(\"defaultAppCheckRecaptchaV3Config\", AppCheckRecaptchaV3ConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .siteSecret(\"6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX\")\n .tokenTtl(\"7200s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:WebApp\n properties:\n project: my-project-name\n displayName: Web App for reCAPTCHA V3\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckRecaptchaV3Config:\n type: gcp:firebase:AppCheckRecaptchaV3Config\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n siteSecret: 6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX\n tokenTtl: 7200s\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRecaptchaV3Config can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/recaptchaV3Config`\n\n* `{{project}}/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, RecaptchaV3Config can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckRecaptchaV3Config:AppCheckRecaptchaV3Config default projects/{{project}}/apps/{{app_id}}/recaptchaV3Config\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckRecaptchaV3Config:AppCheckRecaptchaV3Config default {{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckRecaptchaV3Config:AppCheckRecaptchaV3Config default {{app_id}}\n```\n\n", + "description": "An app's reCAPTCHA V3 configuration object.\n\n\nTo get more information about RecaptchaV3Config, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/appcheck/rest/v1/projects.apps.recaptchaV3Config)\n* How-to Guides\n * [Official Documentation](https://firebase.google.com/docs/app-check)\n\n\n\n## Example Usage\n\n### Firebase App Check Recaptcha V3 Config Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst _default = new gcp.firebase.WebApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Web App for reCAPTCHA V3\",\n});\n// It takes a while for App Check to recognize the new app\n// If your app already exists, you don't have to wait 30 seconds.\nconst wait30s = new time.index.Sleep(\"wait_30s\", {createDuration: \"30s\"}, {\n dependsOn: [_default],\n});\nconst defaultAppCheckRecaptchaV3Config = new gcp.firebase.AppCheckRecaptchaV3Config(\"default\", {\n project: \"my-project-name\",\n appId: _default.appId,\n siteSecret: \"6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX\",\n tokenTtl: \"7200s\",\n}, {\n dependsOn: [wait30s],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ndefault = gcp.firebase.WebApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Web App for reCAPTCHA V3\")\n# It takes a while for App Check to recognize the new app\n# If your app already exists, you don't have to wait 30 seconds.\nwait30s = time.index.Sleep(\"wait_30s\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[default]))\ndefault_app_check_recaptcha_v3_config = gcp.firebase.AppCheckRecaptchaV3Config(\"default\",\n project=\"my-project-name\",\n app_id=default.app_id,\n site_secret=\"6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX\",\n token_ttl=\"7200s\",\n opts = pulumi.ResourceOptions(depends_on=[wait30s]))\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 @default = new Gcp.Firebase.WebApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Web App for reCAPTCHA V3\",\n });\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Time.Index.Sleep(\"wait_30s\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var defaultAppCheckRecaptchaV3Config = new Gcp.Firebase.AppCheckRecaptchaV3Config(\"default\", new()\n {\n Project = \"my-project-name\",\n AppId = @default.AppId,\n SiteSecret = \"6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX\",\n TokenTtl = \"7200s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n wait30s,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\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_default, err := firebase.NewWebApp(ctx, \"default\", \u0026firebase.WebAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Web App for reCAPTCHA V3\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// It takes a while for App Check to recognize the new app\n\t\t// If your app already exists, you don't have to wait 30 seconds.\n\t\twait30s, err := time.NewSleep(ctx, \"wait_30s\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewAppCheckRecaptchaV3Config(ctx, \"default\", \u0026firebase.AppCheckRecaptchaV3ConfigArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tAppId: _default.AppId,\n\t\t\tSiteSecret: pulumi.String(\"6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX\"),\n\t\t\tTokenTtl: pulumi.String(\"7200s\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twait30s,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.WebApp;\nimport com.pulumi.gcp.firebase.WebAppArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.AppCheckRecaptchaV3Config;\nimport com.pulumi.gcp.firebase.AppCheckRecaptchaV3ConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new WebApp(\"default\", WebAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Web App for reCAPTCHA V3\")\n .build());\n\n // It takes a while for App Check to recognize the new app\n // If your app already exists, you don't have to wait 30 seconds.\n var wait30s = new Sleep(\"wait30s\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var defaultAppCheckRecaptchaV3Config = new AppCheckRecaptchaV3Config(\"defaultAppCheckRecaptchaV3Config\", AppCheckRecaptchaV3ConfigArgs.builder()\n .project(\"my-project-name\")\n .appId(default_.appId())\n .siteSecret(\"6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX\")\n .tokenTtl(\"7200s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait30s)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:WebApp\n properties:\n project: my-project-name\n displayName: Web App for reCAPTCHA V3\n # It takes a while for App Check to recognize the new app\n # If your app already exists, you don't have to wait 30 seconds.\n wait30s:\n type: time:sleep\n name: wait_30s\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${default}\n defaultAppCheckRecaptchaV3Config:\n type: gcp:firebase:AppCheckRecaptchaV3Config\n name: default\n properties:\n project: my-project-name\n appId: ${default.appId}\n siteSecret: 6Lf9YnQpAAAAAC3-MHmdAllTbPwTZxpUw5d34YzX\n tokenTtl: 7200s\n options:\n dependsOn:\n - ${wait30s}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRecaptchaV3Config can be imported using any of these accepted formats:\n\n* `projects/{{project}}/apps/{{app_id}}/recaptchaV3Config`\n\n* `{{project}}/{{app_id}}`\n\n* `{{app_id}}`\n\nWhen using the `pulumi import` command, RecaptchaV3Config can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/appCheckRecaptchaV3Config:AppCheckRecaptchaV3Config default projects/{{project}}/apps/{{app_id}}/recaptchaV3Config\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckRecaptchaV3Config:AppCheckRecaptchaV3Config default {{project}}/{{app_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/appCheckRecaptchaV3Config:AppCheckRecaptchaV3Config default {{app_id}}\n```\n\n", "properties": { "appId": { "type": "string", @@ -221957,7 +221957,7 @@ } }, "gcp:firebase/databaseInstance:DatabaseInstance": { - "description": "## Example Usage\n\n### Firebase Database 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 basic = new gcp.firebase.DatabaseInstance(\"basic\", {\n project: \"my-project-name\",\n region: \"us-central1\",\n instanceId: \"active-db\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.firebase.DatabaseInstance(\"basic\",\n project=\"my-project-name\",\n region=\"us-central1\",\n instance_id=\"active-db\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.Firebase.DatabaseInstance(\"basic\", new()\n {\n Project = \"my-project-name\",\n Region = \"us-central1\",\n InstanceId = \"active-db\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewDatabaseInstance(ctx, \"basic\", \u0026firebase.DatabaseInstanceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"active-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.firebase.DatabaseInstance;\nimport com.pulumi.gcp.firebase.DatabaseInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 DatabaseInstance(\"basic\", DatabaseInstanceArgs.builder()\n .project(\"my-project-name\")\n .region(\"us-central1\")\n .instanceId(\"active-db\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:firebase:DatabaseInstance\n properties:\n project: my-project-name\n region: us-central1\n instanceId: active-db\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebase Database 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 full = new gcp.firebase.DatabaseInstance(\"full\", {\n project: \"my-project-name\",\n region: \"europe-west1\",\n instanceId: \"disabled-db\",\n type: \"USER_DATABASE\",\n desiredState: \"DISABLED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfull = gcp.firebase.DatabaseInstance(\"full\",\n project=\"my-project-name\",\n region=\"europe-west1\",\n instance_id=\"disabled-db\",\n type=\"USER_DATABASE\",\n desired_state=\"DISABLED\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var full = new Gcp.Firebase.DatabaseInstance(\"full\", new()\n {\n Project = \"my-project-name\",\n Region = \"europe-west1\",\n InstanceId = \"disabled-db\",\n Type = \"USER_DATABASE\",\n DesiredState = \"DISABLED\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewDatabaseInstance(ctx, \"full\", \u0026firebase.DatabaseInstanceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRegion: pulumi.String(\"europe-west1\"),\n\t\t\tInstanceId: pulumi.String(\"disabled-db\"),\n\t\t\tType: pulumi.String(\"USER_DATABASE\"),\n\t\t\tDesiredState: pulumi.String(\"DISABLED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.DatabaseInstance;\nimport com.pulumi.gcp.firebase.DatabaseInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var full = new DatabaseInstance(\"full\", DatabaseInstanceArgs.builder()\n .project(\"my-project-name\")\n .region(\"europe-west1\")\n .instanceId(\"disabled-db\")\n .type(\"USER_DATABASE\")\n .desiredState(\"DISABLED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n full:\n type: gcp:firebase:DatabaseInstance\n properties:\n project: my-project-name\n region: europe-west1\n instanceId: disabled-db\n type: USER_DATABASE\n desiredState: DISABLED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebase Database Instance Default Database\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 _default = new gcp.organizations.Project(\"default\", {\n projectId: \"rtdb-project\",\n name: \"rtdb-project\",\n orgId: \"123456789\",\n deletionPolicy: \"DELETE\",\n labels: {\n firebase: \"enabled\",\n },\n});\nconst firebase = new gcp.projects.Service(\"firebase\", {\n project: _default.projectId,\n service: \"firebase.googleapis.com\",\n disableOnDestroy: false,\n});\nconst defaultProject = new gcp.firebase.Project(\"default\", {project: _default.projectId}, {\n dependsOn: [firebase],\n});\nconst firebaseDatabase = new gcp.projects.Service(\"firebase_database\", {\n project: defaultProject.project,\n service: \"firebasedatabase.googleapis.com\",\n disableOnDestroy: false,\n});\nconst wait60Seconds = new time.index.Sleep(\"wait_60_seconds\", {createDuration: \"60s\"}, {\n dependsOn: [firebaseDatabase],\n});\nconst defaultDatabaseInstance = new gcp.firebase.DatabaseInstance(\"default\", {\n project: defaultProject.project,\n region: \"us-central1\",\n instanceId: \"rtdb-project-default-rtdb\",\n type: \"DEFAULT_DATABASE\",\n}, {\n dependsOn: [wait60Seconds],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ndefault = gcp.organizations.Project(\"default\",\n project_id=\"rtdb-project\",\n name=\"rtdb-project\",\n org_id=\"123456789\",\n deletion_policy=\"DELETE\",\n labels={\n \"firebase\": \"enabled\",\n })\nfirebase = gcp.projects.Service(\"firebase\",\n project=default.project_id,\n service=\"firebase.googleapis.com\",\n disable_on_destroy=False)\ndefault_project = gcp.firebase.Project(\"default\", project=default.project_id,\nopts = pulumi.ResourceOptions(depends_on=[firebase]))\nfirebase_database = gcp.projects.Service(\"firebase_database\",\n project=default_project.project,\n service=\"firebasedatabase.googleapis.com\",\n disable_on_destroy=False)\nwait60_seconds = time.index.Sleep(\"wait_60_seconds\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[firebase_database]))\ndefault_database_instance = gcp.firebase.DatabaseInstance(\"default\",\n project=default_project.project,\n region=\"us-central1\",\n instance_id=\"rtdb-project-default-rtdb\",\n type=\"DEFAULT_DATABASE\",\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 @default = new Gcp.Organizations.Project(\"default\", new()\n {\n ProjectId = \"rtdb-project\",\n Name = \"rtdb-project\",\n OrgId = \"123456789\",\n DeletionPolicy = \"DELETE\",\n Labels = \n {\n { \"firebase\", \"enabled\" },\n },\n });\n\n var firebase = new Gcp.Projects.Service(\"firebase\", new()\n {\n Project = @default.ProjectId,\n ServiceName = \"firebase.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var defaultProject = new Gcp.Firebase.Project(\"default\", new()\n {\n ProjectID = @default.ProjectId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firebase,\n },\n });\n\n var firebaseDatabase = new Gcp.Projects.Service(\"firebase_database\", new()\n {\n Project = defaultProject.ProjectID,\n ServiceName = \"firebasedatabase.googleapis.com\",\n DisableOnDestroy = false,\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 firebaseDatabase,\n },\n });\n\n var defaultDatabaseInstance = new Gcp.Firebase.DatabaseInstance(\"default\", new()\n {\n Project = defaultProject.ProjectID,\n Region = \"us-central1\",\n InstanceId = \"rtdb-project-default-rtdb\",\n Type = \"DEFAULT_DATABASE\",\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/firebase\"\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-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 := organizations.NewProject(ctx, \"default\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"rtdb-project\"),\n\t\t\tName: pulumi.String(\"rtdb-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\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\tfirebase, err := projects.NewService(ctx, \"firebase\", \u0026projects.ServiceArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tService: pulumi.String(\"firebase.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\tdefaultProject, err := firebase.NewProject(ctx, \"default\", \u0026firebase.ProjectArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirebase,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirebaseDatabase, err := projects.NewService(ctx, \"firebase_database\", \u0026projects.ServiceArgs{\n\t\t\tProject: defaultProject.Project,\n\t\t\tService: pulumi.String(\"firebasedatabase.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\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\tfirebaseDatabase,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewDatabaseInstance(ctx, \"default\", \u0026firebase.DatabaseInstanceArgs{\n\t\t\tProject: defaultProject.Project,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"rtdb-project-default-rtdb\"),\n\t\t\tType: pulumi.String(\"DEFAULT_DATABASE\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.firebase.Project;\nimport com.pulumi.gcp.firebase.ProjectArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.DatabaseInstance;\nimport com.pulumi.gcp.firebase.DatabaseInstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"rtdb-project\")\n .name(\"rtdb-project\")\n .orgId(\"123456789\")\n .deletionPolicy(\"DELETE\")\n .labels(Map.of(\"firebase\", \"enabled\"))\n .build());\n\n var firebase = new Service(\"firebase\", ServiceArgs.builder()\n .project(default_.projectId())\n .service(\"firebase.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var defaultProject = new Project(\"defaultProject\", ProjectArgs.builder()\n .project(default_.projectId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firebase)\n .build());\n\n var firebaseDatabase = new Service(\"firebaseDatabase\", ServiceArgs.builder()\n .project(defaultProject.project())\n .service(\"firebasedatabase.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var wait60Seconds = new Sleep(\"wait60Seconds\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(firebaseDatabase)\n .build());\n\n var defaultDatabaseInstance = new DatabaseInstance(\"defaultDatabaseInstance\", DatabaseInstanceArgs.builder()\n .project(defaultProject.project())\n .region(\"us-central1\")\n .instanceId(\"rtdb-project-default-rtdb\")\n .type(\"DEFAULT_DATABASE\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Project\n properties:\n projectId: rtdb-project\n name: rtdb-project\n orgId: '123456789'\n deletionPolicy: DELETE\n labels:\n firebase: enabled\n firebase:\n type: gcp:projects:Service\n properties:\n project: ${default.projectId}\n service: firebase.googleapis.com\n disableOnDestroy: false\n defaultProject:\n type: gcp:firebase:Project\n name: default\n properties:\n project: ${default.projectId}\n options:\n dependsOn:\n - ${firebase}\n firebaseDatabase:\n type: gcp:projects:Service\n name: firebase_database\n properties:\n project: ${defaultProject.project}\n service: firebasedatabase.googleapis.com\n disableOnDestroy: false\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependsOn:\n - ${firebaseDatabase}\n defaultDatabaseInstance:\n type: gcp:firebase:DatabaseInstance\n name: default\n properties:\n project: ${defaultProject.project}\n region: us-central1\n instanceId: rtdb-project-default-rtdb\n type: DEFAULT_DATABASE\n options:\n dependsOn:\n - ${wait60Seconds}\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/{{instance_id}}`\n\n* `{{project}}/{{region}}/{{instance_id}}`\n\n* `{{region}}/{{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/databaseInstance:DatabaseInstance default projects/{{project}}/locations/{{region}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/databaseInstance:DatabaseInstance default {{project}}/{{region}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/databaseInstance:DatabaseInstance default {{region}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/databaseInstance:DatabaseInstance default {{instance_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebase Database 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 basic = new gcp.firebase.DatabaseInstance(\"basic\", {\n project: \"my-project-name\",\n region: \"us-central1\",\n instanceId: \"active-db\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.firebase.DatabaseInstance(\"basic\",\n project=\"my-project-name\",\n region=\"us-central1\",\n instance_id=\"active-db\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.Firebase.DatabaseInstance(\"basic\", new()\n {\n Project = \"my-project-name\",\n Region = \"us-central1\",\n InstanceId = \"active-db\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewDatabaseInstance(ctx, \"basic\", \u0026firebase.DatabaseInstanceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"active-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.firebase.DatabaseInstance;\nimport com.pulumi.gcp.firebase.DatabaseInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 DatabaseInstance(\"basic\", DatabaseInstanceArgs.builder()\n .project(\"my-project-name\")\n .region(\"us-central1\")\n .instanceId(\"active-db\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:firebase:DatabaseInstance\n properties:\n project: my-project-name\n region: us-central1\n instanceId: active-db\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebase Database 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 full = new gcp.firebase.DatabaseInstance(\"full\", {\n project: \"my-project-name\",\n region: \"europe-west1\",\n instanceId: \"disabled-db\",\n type: \"USER_DATABASE\",\n desiredState: \"DISABLED\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfull = gcp.firebase.DatabaseInstance(\"full\",\n project=\"my-project-name\",\n region=\"europe-west1\",\n instance_id=\"disabled-db\",\n type=\"USER_DATABASE\",\n desired_state=\"DISABLED\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var full = new Gcp.Firebase.DatabaseInstance(\"full\", new()\n {\n Project = \"my-project-name\",\n Region = \"europe-west1\",\n InstanceId = \"disabled-db\",\n Type = \"USER_DATABASE\",\n DesiredState = \"DISABLED\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewDatabaseInstance(ctx, \"full\", \u0026firebase.DatabaseInstanceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRegion: pulumi.String(\"europe-west1\"),\n\t\t\tInstanceId: pulumi.String(\"disabled-db\"),\n\t\t\tType: pulumi.String(\"USER_DATABASE\"),\n\t\t\tDesiredState: pulumi.String(\"DISABLED\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.DatabaseInstance;\nimport com.pulumi.gcp.firebase.DatabaseInstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var full = new DatabaseInstance(\"full\", DatabaseInstanceArgs.builder()\n .project(\"my-project-name\")\n .region(\"europe-west1\")\n .instanceId(\"disabled-db\")\n .type(\"USER_DATABASE\")\n .desiredState(\"DISABLED\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n full:\n type: gcp:firebase:DatabaseInstance\n properties:\n project: my-project-name\n region: europe-west1\n instanceId: disabled-db\n type: USER_DATABASE\n desiredState: DISABLED\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebase Database Instance Default Database\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 _default = new gcp.organizations.Project(\"default\", {\n projectId: \"rtdb-project\",\n name: \"rtdb-project\",\n orgId: \"123456789\",\n deletionPolicy: \"DELETE\",\n labels: {\n firebase: \"enabled\",\n },\n});\nconst firebase = new gcp.projects.Service(\"firebase\", {\n project: _default.projectId,\n service: \"firebase.googleapis.com\",\n disableOnDestroy: false,\n});\nconst defaultProject = new gcp.firebase.Project(\"default\", {project: _default.projectId}, {\n dependsOn: [firebase],\n});\nconst firebaseDatabase = new gcp.projects.Service(\"firebase_database\", {\n project: defaultProject.project,\n service: \"firebasedatabase.googleapis.com\",\n disableOnDestroy: false,\n});\nconst wait60Seconds = new time.index.Sleep(\"wait_60_seconds\", {createDuration: \"60s\"}, {\n dependsOn: [firebaseDatabase],\n});\nconst defaultDatabaseInstance = new gcp.firebase.DatabaseInstance(\"default\", {\n project: defaultProject.project,\n region: \"us-central1\",\n instanceId: \"rtdb-project-default-rtdb\",\n type: \"DEFAULT_DATABASE\",\n}, {\n dependsOn: [wait60Seconds],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\ndefault = gcp.organizations.Project(\"default\",\n project_id=\"rtdb-project\",\n name=\"rtdb-project\",\n org_id=\"123456789\",\n deletion_policy=\"DELETE\",\n labels={\n \"firebase\": \"enabled\",\n })\nfirebase = gcp.projects.Service(\"firebase\",\n project=default.project_id,\n service=\"firebase.googleapis.com\",\n disable_on_destroy=False)\ndefault_project = gcp.firebase.Project(\"default\", project=default.project_id,\nopts = pulumi.ResourceOptions(depends_on=[firebase]))\nfirebase_database = gcp.projects.Service(\"firebase_database\",\n project=default_project.project,\n service=\"firebasedatabase.googleapis.com\",\n disable_on_destroy=False)\nwait60_seconds = time.index.Sleep(\"wait_60_seconds\", create_duration=60s,\nopts = pulumi.ResourceOptions(depends_on=[firebase_database]))\ndefault_database_instance = gcp.firebase.DatabaseInstance(\"default\",\n project=default_project.project,\n region=\"us-central1\",\n instance_id=\"rtdb-project-default-rtdb\",\n type=\"DEFAULT_DATABASE\",\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 @default = new Gcp.Organizations.Project(\"default\", new()\n {\n ProjectId = \"rtdb-project\",\n Name = \"rtdb-project\",\n OrgId = \"123456789\",\n DeletionPolicy = \"DELETE\",\n Labels = \n {\n { \"firebase\", \"enabled\" },\n },\n });\n\n var firebase = new Gcp.Projects.Service(\"firebase\", new()\n {\n Project = @default.ProjectId,\n ServiceName = \"firebase.googleapis.com\",\n DisableOnDestroy = false,\n });\n\n var defaultProject = new Gcp.Firebase.Project(\"default\", new()\n {\n ProjectID = @default.ProjectId,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n firebase,\n },\n });\n\n var firebaseDatabase = new Gcp.Projects.Service(\"firebase_database\", new()\n {\n Project = defaultProject.ProjectID,\n ServiceName = \"firebasedatabase.googleapis.com\",\n DisableOnDestroy = false,\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 firebaseDatabase,\n },\n });\n\n var defaultDatabaseInstance = new Gcp.Firebase.DatabaseInstance(\"default\", new()\n {\n Project = defaultProject.ProjectID,\n Region = \"us-central1\",\n InstanceId = \"rtdb-project-default-rtdb\",\n Type = \"DEFAULT_DATABASE\",\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/firebase\"\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-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_default, err := organizations.NewProject(ctx, \"default\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"rtdb-project\"),\n\t\t\tName: pulumi.String(\"rtdb-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\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\tfirebase, err := projects.NewService(ctx, \"firebase\", \u0026projects.ServiceArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tService: pulumi.String(\"firebase.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\tdefaultProject, err := firebase.NewProject(ctx, \"default\", \u0026firebase.ProjectArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tfirebase,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfirebaseDatabase, err := projects.NewService(ctx, \"firebase_database\", \u0026projects.ServiceArgs{\n\t\t\tProject: defaultProject.Project,\n\t\t\tService: pulumi.String(\"firebasedatabase.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\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\tfirebaseDatabase,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewDatabaseInstance(ctx, \"default\", \u0026firebase.DatabaseInstanceArgs{\n\t\t\tProject: defaultProject.Project,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"rtdb-project-default-rtdb\"),\n\t\t\tType: pulumi.String(\"DEFAULT_DATABASE\"),\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.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.gcp.firebase.Project;\nimport com.pulumi.gcp.firebase.ProjectArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.firebase.DatabaseInstance;\nimport com.pulumi.gcp.firebase.DatabaseInstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"rtdb-project\")\n .name(\"rtdb-project\")\n .orgId(\"123456789\")\n .deletionPolicy(\"DELETE\")\n .labels(Map.of(\"firebase\", \"enabled\"))\n .build());\n\n var firebase = new Service(\"firebase\", ServiceArgs.builder()\n .project(default_.projectId())\n .service(\"firebase.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var defaultProject = new Project(\"defaultProject\", ProjectArgs.builder()\n .project(default_.projectId())\n .build(), CustomResourceOptions.builder()\n .dependsOn(firebase)\n .build());\n\n var firebaseDatabase = new Service(\"firebaseDatabase\", ServiceArgs.builder()\n .project(defaultProject.project())\n .service(\"firebasedatabase.googleapis.com\")\n .disableOnDestroy(false)\n .build());\n\n var wait60Seconds = new Sleep(\"wait60Seconds\", SleepArgs.builder()\n .createDuration(\"60s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(firebaseDatabase)\n .build());\n\n var defaultDatabaseInstance = new DatabaseInstance(\"defaultDatabaseInstance\", DatabaseInstanceArgs.builder()\n .project(defaultProject.project())\n .region(\"us-central1\")\n .instanceId(\"rtdb-project-default-rtdb\")\n .type(\"DEFAULT_DATABASE\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(wait60Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Project\n properties:\n projectId: rtdb-project\n name: rtdb-project\n orgId: '123456789'\n deletionPolicy: DELETE\n labels:\n firebase: enabled\n firebase:\n type: gcp:projects:Service\n properties:\n project: ${default.projectId}\n service: firebase.googleapis.com\n disableOnDestroy: false\n defaultProject:\n type: gcp:firebase:Project\n name: default\n properties:\n project: ${default.projectId}\n options:\n dependsOn:\n - ${firebase}\n firebaseDatabase:\n type: gcp:projects:Service\n name: firebase_database\n properties:\n project: ${defaultProject.project}\n service: firebasedatabase.googleapis.com\n disableOnDestroy: false\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependsOn:\n - ${firebaseDatabase}\n defaultDatabaseInstance:\n type: gcp:firebase:DatabaseInstance\n name: default\n properties:\n project: ${defaultProject.project}\n region: us-central1\n instanceId: rtdb-project-default-rtdb\n type: DEFAULT_DATABASE\n options:\n dependsOn:\n - ${wait60Seconds}\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/{{instance_id}}`\n\n* `{{project}}/{{region}}/{{instance_id}}`\n\n* `{{region}}/{{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/databaseInstance:DatabaseInstance default projects/{{project}}/locations/{{region}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/databaseInstance:DatabaseInstance default {{project}}/{{region}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/databaseInstance:DatabaseInstance default {{region}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/databaseInstance:DatabaseInstance default {{instance_id}}\n```\n\n", "properties": { "databaseUrl": { "type": "string", @@ -222235,7 +222235,7 @@ } }, "gcp:firebase/hostingChannel:HostingChannel": { - "description": "## Example Usage\n\n### Firebasehosting Channel Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-with-channel\",\n});\nconst defaultHostingChannel = new gcp.firebase.HostingChannel(\"default\", {\n siteId: _default.siteId,\n channelId: \"channel-basic\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-with-channel\")\ndefault_hosting_channel = gcp.firebase.HostingChannel(\"default\",\n site_id=default.site_id,\n channel_id=\"channel-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 @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-with-channel\",\n });\n\n var defaultHostingChannel = new Gcp.Firebase.HostingChannel(\"default\", new()\n {\n SiteId = @default.SiteId,\n ChannelId = \"channel-basic\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-with-channel\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingChannel(ctx, \"default\", \u0026firebase.HostingChannelArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tChannelId: pulumi.String(\"channel-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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingChannel;\nimport com.pulumi.gcp.firebase.HostingChannelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-with-channel\")\n .build());\n\n var defaultHostingChannel = new HostingChannel(\"defaultHostingChannel\", HostingChannelArgs.builder()\n .siteId(default_.siteId())\n .channelId(\"channel-basic\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-with-channel\n defaultHostingChannel:\n type: gcp:firebase:HostingChannel\n name: default\n properties:\n siteId: ${default.siteId}\n channelId: channel-basic\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Channel Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-with-channel\",\n});\nconst full = new gcp.firebase.HostingChannel(\"full\", {\n siteId: _default.siteId,\n channelId: \"channel-full\",\n ttl: \"86400s\",\n retainedReleaseCount: 20,\n labels: {\n \"some-key\": \"some-value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-with-channel\")\nfull = gcp.firebase.HostingChannel(\"full\",\n site_id=default.site_id,\n channel_id=\"channel-full\",\n ttl=\"86400s\",\n retained_release_count=20,\n labels={\n \"some-key\": \"some-value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-with-channel\",\n });\n\n var full = new Gcp.Firebase.HostingChannel(\"full\", new()\n {\n SiteId = @default.SiteId,\n ChannelId = \"channel-full\",\n Ttl = \"86400s\",\n RetainedReleaseCount = 20,\n Labels = \n {\n { \"some-key\", \"some-value\" },\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-with-channel\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingChannel(ctx, \"full\", \u0026firebase.HostingChannelArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tChannelId: pulumi.String(\"channel-full\"),\n\t\t\tTtl: pulumi.String(\"86400s\"),\n\t\t\tRetainedReleaseCount: pulumi.Int(20),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"some-key\": pulumi.String(\"some-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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingChannel;\nimport com.pulumi.gcp.firebase.HostingChannelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-with-channel\")\n .build());\n\n var full = new HostingChannel(\"full\", HostingChannelArgs.builder()\n .siteId(default_.siteId())\n .channelId(\"channel-full\")\n .ttl(\"86400s\")\n .retainedReleaseCount(20)\n .labels(Map.of(\"some-key\", \"some-value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-with-channel\n full:\n type: gcp:firebase:HostingChannel\n properties:\n siteId: ${default.siteId}\n channelId: channel-full\n ttl: 86400s\n retainedReleaseCount: 20\n labels:\n some-key: some-value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nChannel can be imported using any of these accepted formats:\n\n* `sites/{{site_id}}/channels/{{channel_id}}`\n\n* `{{site_id}}/{{channel_id}}`\n\nWhen using the `pulumi import` command, Channel can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingChannel:HostingChannel default sites/{{site_id}}/channels/{{channel_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingChannel:HostingChannel default {{site_id}}/{{channel_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebasehosting Channel Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-with-channel\",\n});\nconst defaultHostingChannel = new gcp.firebase.HostingChannel(\"default\", {\n siteId: _default.siteId,\n channelId: \"channel-basic\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-with-channel\")\ndefault_hosting_channel = gcp.firebase.HostingChannel(\"default\",\n site_id=default.site_id,\n channel_id=\"channel-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 @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-with-channel\",\n });\n\n var defaultHostingChannel = new Gcp.Firebase.HostingChannel(\"default\", new()\n {\n SiteId = @default.SiteId,\n ChannelId = \"channel-basic\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-with-channel\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingChannel(ctx, \"default\", \u0026firebase.HostingChannelArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tChannelId: pulumi.String(\"channel-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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingChannel;\nimport com.pulumi.gcp.firebase.HostingChannelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-with-channel\")\n .build());\n\n var defaultHostingChannel = new HostingChannel(\"defaultHostingChannel\", HostingChannelArgs.builder()\n .siteId(default_.siteId())\n .channelId(\"channel-basic\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-with-channel\n defaultHostingChannel:\n type: gcp:firebase:HostingChannel\n name: default\n properties:\n siteId: ${default.siteId}\n channelId: channel-basic\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Channel Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-with-channel\",\n});\nconst full = new gcp.firebase.HostingChannel(\"full\", {\n siteId: _default.siteId,\n channelId: \"channel-full\",\n ttl: \"86400s\",\n retainedReleaseCount: 20,\n labels: {\n \"some-key\": \"some-value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-with-channel\")\nfull = gcp.firebase.HostingChannel(\"full\",\n site_id=default.site_id,\n channel_id=\"channel-full\",\n ttl=\"86400s\",\n retained_release_count=20,\n labels={\n \"some-key\": \"some-value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-with-channel\",\n });\n\n var full = new Gcp.Firebase.HostingChannel(\"full\", new()\n {\n SiteId = @default.SiteId,\n ChannelId = \"channel-full\",\n Ttl = \"86400s\",\n RetainedReleaseCount = 20,\n Labels = \n {\n { \"some-key\", \"some-value\" },\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-with-channel\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingChannel(ctx, \"full\", \u0026firebase.HostingChannelArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tChannelId: pulumi.String(\"channel-full\"),\n\t\t\tTtl: pulumi.String(\"86400s\"),\n\t\t\tRetainedReleaseCount: pulumi.Int(20),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"some-key\": pulumi.String(\"some-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.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingChannel;\nimport com.pulumi.gcp.firebase.HostingChannelArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-with-channel\")\n .build());\n\n var full = new HostingChannel(\"full\", HostingChannelArgs.builder()\n .siteId(default_.siteId())\n .channelId(\"channel-full\")\n .ttl(\"86400s\")\n .retainedReleaseCount(20)\n .labels(Map.of(\"some-key\", \"some-value\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-with-channel\n full:\n type: gcp:firebase:HostingChannel\n properties:\n siteId: ${default.siteId}\n channelId: channel-full\n ttl: 86400s\n retainedReleaseCount: 20\n labels:\n some-key: some-value\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nChannel can be imported using any of these accepted formats:\n\n* `sites/{{site_id}}/channels/{{channel_id}}`\n\n* `{{site_id}}/{{channel_id}}`\n\nWhen using the `pulumi import` command, Channel can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingChannel:HostingChannel default sites/{{site_id}}/channels/{{channel_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingChannel:HostingChannel default {{site_id}}/{{channel_id}}\n```\n\n", "properties": { "channelId": { "type": "string", @@ -222388,7 +222388,7 @@ } }, "gcp:firebase/hostingCustomDomain:HostingCustomDomain": { - "description": "## Example Usage\n\n### Firebasehosting Customdomain Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingCustomDomain(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n customDomain: \"custom.domain.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingCustomDomain(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\",\n custom_domain=\"custom.domain.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingCustomDomain(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n CustomDomain = \"custom.domain.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingCustomDomain(ctx, \"default\", \u0026firebase.HostingCustomDomainArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t\tCustomDomain: pulumi.String(\"custom.domain.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingCustomDomain;\nimport com.pulumi.gcp.firebase.HostingCustomDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingCustomDomain(\"default\", HostingCustomDomainArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .customDomain(\"custom.domain.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingCustomDomain\n properties:\n project: my-project-name\n siteId: site-id\n customDomain: custom.domain.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Customdomain Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id-full\",\n});\nconst defaultHostingCustomDomain = new gcp.firebase.HostingCustomDomain(\"default\", {\n project: \"my-project-name\",\n siteId: _default.siteId,\n customDomain: \"source.domain.com\",\n certPreference: \"GROUPED\",\n redirectTarget: \"destination.domain.com\",\n waitDnsVerification: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id-full\")\ndefault_hosting_custom_domain = gcp.firebase.HostingCustomDomain(\"default\",\n project=\"my-project-name\",\n site_id=default.site_id,\n custom_domain=\"source.domain.com\",\n cert_preference=\"GROUPED\",\n redirect_target=\"destination.domain.com\",\n wait_dns_verification=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id-full\",\n });\n\n var defaultHostingCustomDomain = new Gcp.Firebase.HostingCustomDomain(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = @default.SiteId,\n CustomDomain = \"source.domain.com\",\n CertPreference = \"GROUPED\",\n RedirectTarget = \"destination.domain.com\",\n WaitDnsVerification = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id-full\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingCustomDomain(ctx, \"default\", \u0026firebase.HostingCustomDomainArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: _default.SiteId,\n\t\t\tCustomDomain: pulumi.String(\"source.domain.com\"),\n\t\t\tCertPreference: pulumi.String(\"GROUPED\"),\n\t\t\tRedirectTarget: pulumi.String(\"destination.domain.com\"),\n\t\t\tWaitDnsVerification: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingCustomDomain;\nimport com.pulumi.gcp.firebase.HostingCustomDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id-full\")\n .build());\n\n var defaultHostingCustomDomain = new HostingCustomDomain(\"defaultHostingCustomDomain\", HostingCustomDomainArgs.builder()\n .project(\"my-project-name\")\n .siteId(default_.siteId())\n .customDomain(\"source.domain.com\")\n .certPreference(\"GROUPED\")\n .redirectTarget(\"destination.domain.com\")\n .waitDnsVerification(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id-full\n defaultHostingCustomDomain:\n type: gcp:firebase:HostingCustomDomain\n name: default\n properties:\n project: my-project-name\n siteId: ${default.siteId}\n customDomain: source.domain.com\n certPreference: GROUPED\n redirectTarget: destination.domain.com\n waitDnsVerification: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Customdomain Cloud Run\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultService = new gcp.cloudrunv2.Service(\"default\", {\n project: \"my-project-name\",\n name: \"cloud-run-service-via-hosting\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n deletionProtection: true,\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"/hello/**\",\n run: {\n serviceId: defaultService.name,\n region: defaultService.location,\n },\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Cloud Run Integration\",\n});\nconst defaultHostingCustomDomain = new gcp.firebase.HostingCustomDomain(\"default\", {\n project: \"my-project-name\",\n siteId: _default.siteId,\n customDomain: \"run.custom.domain.com\",\n waitDnsVerification: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_service = gcp.cloudrunv2.Service(\"default\",\n project=\"my-project-name\",\n name=\"cloud-run-service-via-hosting\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n deletion_protection=True)\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"/hello/**\",\n \"run\": {\n \"service_id\": default_service.name,\n \"region\": default_service.location,\n },\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Cloud Run Integration\")\ndefault_hosting_custom_domain = gcp.firebase.HostingCustomDomain(\"default\",\n project=\"my-project-name\",\n site_id=default.site_id,\n custom_domain=\"run.custom.domain.com\",\n wait_dns_verification=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultService = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Project = \"my-project-name\",\n Name = \"cloud-run-service-via-hosting\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n DeletionProtection = true,\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"/hello/**\",\n Run = new Gcp.Firebase.Inputs.HostingVersionConfigRewriteRunArgs\n {\n ServiceId = defaultService.Name,\n Region = defaultService.Location,\n },\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Cloud Run Integration\",\n });\n\n var defaultHostingCustomDomain = new Gcp.Firebase.HostingCustomDomain(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = @default.SiteId,\n CustomDomain = \"run.custom.domain.com\",\n WaitDnsVerification = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultService, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cloud-run-service-via-hosting\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/hello/**\"),\n\t\t\t\t\t\tRun: \u0026firebase.HostingVersionConfigRewriteRunArgs{\n\t\t\t\t\t\t\tServiceId: defaultService.Name,\n\t\t\t\t\t\t\tRegion: defaultService.Location,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Cloud Run Integration\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingCustomDomain(ctx, \"default\", \u0026firebase.HostingCustomDomainArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: _default.SiteId,\n\t\t\tCustomDomain: pulumi.String(\"run.custom.domain.com\"),\n\t\t\tWaitDnsVerification: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport com.pulumi.gcp.firebase.HostingCustomDomain;\nimport com.pulumi.gcp.firebase.HostingCustomDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultService = new Service(\"defaultService\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .name(\"cloud-run-service-via-hosting\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"/hello/**\")\n .run(HostingVersionConfigRewriteRunArgs.builder()\n .serviceId(defaultService.name())\n .region(defaultService.location())\n .build())\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Cloud Run Integration\")\n .build());\n\n var defaultHostingCustomDomain = new HostingCustomDomain(\"defaultHostingCustomDomain\", HostingCustomDomainArgs.builder()\n .project(\"my-project-name\")\n .siteId(default_.siteId())\n .customDomain(\"run.custom.domain.com\")\n .waitDnsVerification(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultService:\n type: gcp:cloudrunv2:Service\n name: default\n properties:\n project: my-project-name\n name: cloud-run-service-via-hosting\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n deletionProtection: true\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: /hello/**\n run:\n serviceId: ${defaultService.name}\n region: ${defaultService.location}\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Cloud Run Integration\n defaultHostingCustomDomain:\n type: gcp:firebase:HostingCustomDomain\n name: default\n properties:\n project: my-project-name\n siteId: ${default.siteId}\n customDomain: run.custom.domain.com\n waitDnsVerification: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCustomDomain can be imported using any of these accepted formats:\n\n* `projects/{{project}}/sites/{{site_id}}/customDomains/{{custom_domain}}`\n\n* `sites/{{site_id}}/customDomains/{{custom_domain}}`\n\n* `{{project}}/{{site_id}}/{{custom_domain}}`\n\n* `{{site_id}}/{{custom_domain}}`\n\nWhen using the `pulumi import` command, CustomDomain can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default projects/{{project}}/sites/{{site_id}}/customDomains/{{custom_domain}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default sites/{{site_id}}/customDomains/{{custom_domain}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default {{project}}/{{site_id}}/{{custom_domain}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default {{site_id}}/{{custom_domain}}\n```\n\n", + "description": "## Example Usage\n\n### Firebasehosting Customdomain Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingCustomDomain(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n customDomain: \"custom.domain.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingCustomDomain(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\",\n custom_domain=\"custom.domain.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingCustomDomain(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n CustomDomain = \"custom.domain.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingCustomDomain(ctx, \"default\", \u0026firebase.HostingCustomDomainArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t\tCustomDomain: pulumi.String(\"custom.domain.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingCustomDomain;\nimport com.pulumi.gcp.firebase.HostingCustomDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingCustomDomain(\"default\", HostingCustomDomainArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .customDomain(\"custom.domain.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingCustomDomain\n properties:\n project: my-project-name\n siteId: site-id\n customDomain: custom.domain.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Customdomain Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id-full\",\n});\nconst defaultHostingCustomDomain = new gcp.firebase.HostingCustomDomain(\"default\", {\n project: \"my-project-name\",\n siteId: _default.siteId,\n customDomain: \"source.domain.com\",\n certPreference: \"GROUPED\",\n redirectTarget: \"destination.domain.com\",\n waitDnsVerification: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id-full\")\ndefault_hosting_custom_domain = gcp.firebase.HostingCustomDomain(\"default\",\n project=\"my-project-name\",\n site_id=default.site_id,\n custom_domain=\"source.domain.com\",\n cert_preference=\"GROUPED\",\n redirect_target=\"destination.domain.com\",\n wait_dns_verification=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id-full\",\n });\n\n var defaultHostingCustomDomain = new Gcp.Firebase.HostingCustomDomain(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = @default.SiteId,\n CustomDomain = \"source.domain.com\",\n CertPreference = \"GROUPED\",\n RedirectTarget = \"destination.domain.com\",\n WaitDnsVerification = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id-full\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingCustomDomain(ctx, \"default\", \u0026firebase.HostingCustomDomainArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: _default.SiteId,\n\t\t\tCustomDomain: pulumi.String(\"source.domain.com\"),\n\t\t\tCertPreference: pulumi.String(\"GROUPED\"),\n\t\t\tRedirectTarget: pulumi.String(\"destination.domain.com\"),\n\t\t\tWaitDnsVerification: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingCustomDomain;\nimport com.pulumi.gcp.firebase.HostingCustomDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id-full\")\n .build());\n\n var defaultHostingCustomDomain = new HostingCustomDomain(\"defaultHostingCustomDomain\", HostingCustomDomainArgs.builder()\n .project(\"my-project-name\")\n .siteId(default_.siteId())\n .customDomain(\"source.domain.com\")\n .certPreference(\"GROUPED\")\n .redirectTarget(\"destination.domain.com\")\n .waitDnsVerification(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id-full\n defaultHostingCustomDomain:\n type: gcp:firebase:HostingCustomDomain\n name: default\n properties:\n project: my-project-name\n siteId: ${default.siteId}\n customDomain: source.domain.com\n certPreference: GROUPED\n redirectTarget: destination.domain.com\n waitDnsVerification: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Customdomain Cloud Run\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultService = new gcp.cloudrunv2.Service(\"default\", {\n project: \"my-project-name\",\n name: \"cloud-run-service-via-hosting\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n deletionProtection: true,\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"/hello/**\",\n run: {\n serviceId: defaultService.name,\n region: defaultService.location,\n },\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Cloud Run Integration\",\n});\nconst defaultHostingCustomDomain = new gcp.firebase.HostingCustomDomain(\"default\", {\n project: \"my-project-name\",\n siteId: _default.siteId,\n customDomain: \"run.custom.domain.com\",\n waitDnsVerification: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_service = gcp.cloudrunv2.Service(\"default\",\n project=\"my-project-name\",\n name=\"cloud-run-service-via-hosting\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n deletion_protection=True)\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"/hello/**\",\n \"run\": {\n \"service_id\": default_service.name,\n \"region\": default_service.location,\n },\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Cloud Run Integration\")\ndefault_hosting_custom_domain = gcp.firebase.HostingCustomDomain(\"default\",\n project=\"my-project-name\",\n site_id=default.site_id,\n custom_domain=\"run.custom.domain.com\",\n wait_dns_verification=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultService = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Project = \"my-project-name\",\n Name = \"cloud-run-service-via-hosting\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n DeletionProtection = true,\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"/hello/**\",\n Run = new Gcp.Firebase.Inputs.HostingVersionConfigRewriteRunArgs\n {\n ServiceId = defaultService.Name,\n Region = defaultService.Location,\n },\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Cloud Run Integration\",\n });\n\n var defaultHostingCustomDomain = new Gcp.Firebase.HostingCustomDomain(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = @default.SiteId,\n CustomDomain = \"run.custom.domain.com\",\n WaitDnsVerification = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultService, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cloud-run-service-via-hosting\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/hello/**\"),\n\t\t\t\t\t\tRun: \u0026firebase.HostingVersionConfigRewriteRunArgs{\n\t\t\t\t\t\t\tServiceId: defaultService.Name,\n\t\t\t\t\t\t\tRegion: defaultService.Location,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Cloud Run Integration\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingCustomDomain(ctx, \"default\", \u0026firebase.HostingCustomDomainArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: _default.SiteId,\n\t\t\tCustomDomain: pulumi.String(\"run.custom.domain.com\"),\n\t\t\tWaitDnsVerification: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport com.pulumi.gcp.firebase.HostingCustomDomain;\nimport com.pulumi.gcp.firebase.HostingCustomDomainArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultService = new Service(\"defaultService\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .name(\"cloud-run-service-via-hosting\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"/hello/**\")\n .run(HostingVersionConfigRewriteRunArgs.builder()\n .serviceId(defaultService.name())\n .region(defaultService.location())\n .build())\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Cloud Run Integration\")\n .build());\n\n var defaultHostingCustomDomain = new HostingCustomDomain(\"defaultHostingCustomDomain\", HostingCustomDomainArgs.builder()\n .project(\"my-project-name\")\n .siteId(default_.siteId())\n .customDomain(\"run.custom.domain.com\")\n .waitDnsVerification(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultService:\n type: gcp:cloudrunv2:Service\n name: default\n properties:\n project: my-project-name\n name: cloud-run-service-via-hosting\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n deletionProtection: true\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: /hello/**\n run:\n serviceId: ${defaultService.name}\n region: ${defaultService.location}\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Cloud Run Integration\n defaultHostingCustomDomain:\n type: gcp:firebase:HostingCustomDomain\n name: default\n properties:\n project: my-project-name\n siteId: ${default.siteId}\n customDomain: run.custom.domain.com\n waitDnsVerification: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCustomDomain can be imported using any of these accepted formats:\n\n* `projects/{{project}}/sites/{{site_id}}/customDomains/{{custom_domain}}`\n\n* `sites/{{site_id}}/customDomains/{{custom_domain}}`\n\n* `{{project}}/{{site_id}}/{{custom_domain}}`\n\n* `{{site_id}}/{{custom_domain}}`\n\nWhen using the `pulumi import` command, CustomDomain can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default projects/{{project}}/sites/{{site_id}}/customDomains/{{custom_domain}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default sites/{{site_id}}/customDomains/{{custom_domain}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default {{project}}/{{site_id}}/{{custom_domain}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingCustomDomain:HostingCustomDomain default {{site_id}}/{{custom_domain}}\n```\n\n", "properties": { "certPreference": { "type": "string", @@ -222614,7 +222614,7 @@ } }, "gcp:firebase/hostingRelease:HostingRelease": { - "description": "## Example Usage\n\n### Firebasehosting Release In Site\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n redirects: [{\n glob: \"/google/**\",\n statusCode: 302,\n location: \"https://www.google.com\",\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Test release\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"redirects\": [{\n \"glob\": \"/google/**\",\n \"status_code\": 302,\n \"location\": \"https://www.google.com\",\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Test release\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Redirects = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRedirectArgs\n {\n Glob = \"/google/**\",\n StatusCode = 302,\n Location = \"https://www.google.com\",\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Test release\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRedirects: firebase.HostingVersionConfigRedirectArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRedirectArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/google/**\"),\n\t\t\t\t\t\tStatusCode: pulumi.Int(302),\n\t\t\t\t\t\tLocation: pulumi.String(\"https://www.google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Test release\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .redirects(HostingVersionConfigRedirectArgs.builder()\n .glob(\"/google/**\")\n .statusCode(302)\n .location(\"https://www.google.com\")\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Test release\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n redirects:\n - glob: /google/**\n statusCode: 302\n location: https://www.google.com\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Test release\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Release In Channel\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-with-channel\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n redirects: [{\n glob: \"/google/**\",\n statusCode: 302,\n location: \"https://www.google.com\",\n }],\n },\n});\nconst defaultHostingChannel = new gcp.firebase.HostingChannel(\"default\", {\n siteId: _default.siteId,\n channelId: \"channel-id\",\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n channelId: defaultHostingChannel.channelId,\n versionName: defaultHostingVersion.name,\n message: \"Test release in channel\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-with-channel\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"redirects\": [{\n \"glob\": \"/google/**\",\n \"status_code\": 302,\n \"location\": \"https://www.google.com\",\n }],\n })\ndefault_hosting_channel = gcp.firebase.HostingChannel(\"default\",\n site_id=default.site_id,\n channel_id=\"channel-id\")\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n channel_id=default_hosting_channel.channel_id,\n version_name=default_hosting_version.name,\n message=\"Test release in channel\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-with-channel\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Redirects = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRedirectArgs\n {\n Glob = \"/google/**\",\n StatusCode = 302,\n Location = \"https://www.google.com\",\n },\n },\n },\n });\n\n var defaultHostingChannel = new Gcp.Firebase.HostingChannel(\"default\", new()\n {\n SiteId = @default.SiteId,\n ChannelId = \"channel-id\",\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n ChannelId = defaultHostingChannel.ChannelId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Test release in channel\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-with-channel\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRedirects: firebase.HostingVersionConfigRedirectArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRedirectArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/google/**\"),\n\t\t\t\t\t\tStatusCode: pulumi.Int(302),\n\t\t\t\t\t\tLocation: pulumi.String(\"https://www.google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingChannel, err := firebase.NewHostingChannel(ctx, \"default\", \u0026firebase.HostingChannelArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tChannelId: pulumi.String(\"channel-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tChannelId: defaultHostingChannel.ChannelId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Test release in channel\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingChannel;\nimport com.pulumi.gcp.firebase.HostingChannelArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-with-channel\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .redirects(HostingVersionConfigRedirectArgs.builder()\n .glob(\"/google/**\")\n .statusCode(302)\n .location(\"https://www.google.com\")\n .build())\n .build())\n .build());\n\n var defaultHostingChannel = new HostingChannel(\"defaultHostingChannel\", HostingChannelArgs.builder()\n .siteId(default_.siteId())\n .channelId(\"channel-id\")\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .channelId(defaultHostingChannel.channelId())\n .versionName(defaultHostingVersion.name())\n .message(\"Test release in channel\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-with-channel\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n redirects:\n - glob: /google/**\n statusCode: 302\n location: https://www.google.com\n defaultHostingChannel:\n type: gcp:firebase:HostingChannel\n name: default\n properties:\n siteId: ${default.siteId}\n channelId: channel-id\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n channelId: ${defaultHostingChannel.channelId}\n versionName: ${defaultHostingVersion.name}\n message: Test release in channel\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Release Disable\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n type: \"SITE_DISABLE\",\n message: \"Take down site\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n type=\"SITE_DISABLE\",\n message=\"Take down site\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n Type = \"SITE_DISABLE\",\n Message = \"Take down site\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tType: pulumi.String(\"SITE_DISABLE\"),\n\t\t\tMessage: pulumi.String(\"Take down site\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .type(\"SITE_DISABLE\")\n .message(\"Take down site\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n type: SITE_DISABLE\n message: Take down site\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRelease can be imported using any of these accepted formats:\n\n* `sites/{{site_id}}/channels/{{channel_id}}/releases/{{release_id}}`\n\n* `sites/{{site_id}}/releases/{{release_id}}`\n\n* `{{site_id}}/{{channel_id}}/{{release_id}}`\n\n* `{{site_id}}/{{release_id}}`\n\nWhen using the `pulumi import` command, Release can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default sites/{{site_id}}/channels/{{channel_id}}/releases/{{release_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default sites/{{site_id}}/releases/{{release_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default {{site_id}}/{{channel_id}}/{{release_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default {{site_id}}/{{release_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebasehosting Release In Site\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n redirects: [{\n glob: \"/google/**\",\n statusCode: 302,\n location: \"https://www.google.com\",\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Test release\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"redirects\": [{\n \"glob\": \"/google/**\",\n \"status_code\": 302,\n \"location\": \"https://www.google.com\",\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Test release\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Redirects = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRedirectArgs\n {\n Glob = \"/google/**\",\n StatusCode = 302,\n Location = \"https://www.google.com\",\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Test release\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRedirects: firebase.HostingVersionConfigRedirectArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRedirectArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/google/**\"),\n\t\t\t\t\t\tStatusCode: pulumi.Int(302),\n\t\t\t\t\t\tLocation: pulumi.String(\"https://www.google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Test release\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .redirects(HostingVersionConfigRedirectArgs.builder()\n .glob(\"/google/**\")\n .statusCode(302)\n .location(\"https://www.google.com\")\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Test release\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n redirects:\n - glob: /google/**\n statusCode: 302\n location: https://www.google.com\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Test release\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Release In Channel\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-with-channel\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n redirects: [{\n glob: \"/google/**\",\n statusCode: 302,\n location: \"https://www.google.com\",\n }],\n },\n});\nconst defaultHostingChannel = new gcp.firebase.HostingChannel(\"default\", {\n siteId: _default.siteId,\n channelId: \"channel-id\",\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n channelId: defaultHostingChannel.channelId,\n versionName: defaultHostingVersion.name,\n message: \"Test release in channel\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-with-channel\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"redirects\": [{\n \"glob\": \"/google/**\",\n \"status_code\": 302,\n \"location\": \"https://www.google.com\",\n }],\n })\ndefault_hosting_channel = gcp.firebase.HostingChannel(\"default\",\n site_id=default.site_id,\n channel_id=\"channel-id\")\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n channel_id=default_hosting_channel.channel_id,\n version_name=default_hosting_version.name,\n message=\"Test release in channel\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-with-channel\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Redirects = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRedirectArgs\n {\n Glob = \"/google/**\",\n StatusCode = 302,\n Location = \"https://www.google.com\",\n },\n },\n },\n });\n\n var defaultHostingChannel = new Gcp.Firebase.HostingChannel(\"default\", new()\n {\n SiteId = @default.SiteId,\n ChannelId = \"channel-id\",\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n ChannelId = defaultHostingChannel.ChannelId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Test release in channel\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-with-channel\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRedirects: firebase.HostingVersionConfigRedirectArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRedirectArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/google/**\"),\n\t\t\t\t\t\tStatusCode: pulumi.Int(302),\n\t\t\t\t\t\tLocation: pulumi.String(\"https://www.google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingChannel, err := firebase.NewHostingChannel(ctx, \"default\", \u0026firebase.HostingChannelArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tChannelId: pulumi.String(\"channel-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tChannelId: defaultHostingChannel.ChannelId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Test release in channel\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingChannel;\nimport com.pulumi.gcp.firebase.HostingChannelArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-with-channel\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .redirects(HostingVersionConfigRedirectArgs.builder()\n .glob(\"/google/**\")\n .statusCode(302)\n .location(\"https://www.google.com\")\n .build())\n .build())\n .build());\n\n var defaultHostingChannel = new HostingChannel(\"defaultHostingChannel\", HostingChannelArgs.builder()\n .siteId(default_.siteId())\n .channelId(\"channel-id\")\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .channelId(defaultHostingChannel.channelId())\n .versionName(defaultHostingVersion.name())\n .message(\"Test release in channel\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-with-channel\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n redirects:\n - glob: /google/**\n statusCode: 302\n location: https://www.google.com\n defaultHostingChannel:\n type: gcp:firebase:HostingChannel\n name: default\n properties:\n siteId: ${default.siteId}\n channelId: channel-id\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n channelId: ${defaultHostingChannel.channelId}\n versionName: ${defaultHostingVersion.name}\n message: Test release in channel\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Release Disable\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n type: \"SITE_DISABLE\",\n message: \"Take down site\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n type=\"SITE_DISABLE\",\n message=\"Take down site\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n Type = \"SITE_DISABLE\",\n Message = \"Take down site\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tType: pulumi.String(\"SITE_DISABLE\"),\n\t\t\tMessage: pulumi.String(\"Take down site\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .type(\"SITE_DISABLE\")\n .message(\"Take down site\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n type: SITE_DISABLE\n message: Take down site\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRelease can be imported using any of these accepted formats:\n\n* `sites/{{site_id}}/channels/{{channel_id}}/releases/{{release_id}}`\n\n* `sites/{{site_id}}/releases/{{release_id}}`\n\n* `{{site_id}}/{{channel_id}}/{{release_id}}`\n\n* `{{site_id}}/{{release_id}}`\n\nWhen using the `pulumi import` command, Release can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default sites/{{site_id}}/channels/{{channel_id}}/releases/{{release_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default sites/{{site_id}}/releases/{{release_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default {{site_id}}/{{channel_id}}/{{release_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingRelease:HostingRelease default {{site_id}}/{{release_id}}\n```\n\n", "properties": { "channelId": { "type": "string", @@ -222722,7 +222722,7 @@ } }, "gcp:firebase/hostingSite:HostingSite": { - "description": "## Example Usage\n\n### Firebasehosting Site Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-no-app\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-no-app\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-no-app\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-no-app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-no-app\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-no-app\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Site Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.WebApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Test web app for Firebase Hosting\",\n});\nconst full = new gcp.firebase.HostingSite(\"full\", {\n project: \"my-project-name\",\n siteId: \"site-with-app\",\n appId: _default.appId,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.WebApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Test web app for Firebase Hosting\")\nfull = gcp.firebase.HostingSite(\"full\",\n project=\"my-project-name\",\n site_id=\"site-with-app\",\n app_id=default.app_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.WebApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Test web app for Firebase Hosting\",\n });\n\n var full = new Gcp.Firebase.HostingSite(\"full\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-with-app\",\n AppId = @default.AppId,\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewWebApp(ctx, \"default\", \u0026firebase.WebAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Test web app for Firebase Hosting\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingSite(ctx, \"full\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-with-app\"),\n\t\t\tAppId: _default.AppId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.WebApp;\nimport com.pulumi.gcp.firebase.WebAppArgs;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new WebApp(\"default\", WebAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Test web app for Firebase Hosting\")\n .build());\n\n var full = new HostingSite(\"full\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-with-app\")\n .appId(default_.appId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:WebApp\n properties:\n project: my-project-name\n displayName: Test web app for Firebase Hosting\n full:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-with-app\n appId: ${default.appId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSite can be imported using any of these accepted formats:\n\n* `projects/{{project}}/sites/{{site_id}}`\n\n* `{{project}}/{{site_id}}`\n\n* `sites/{{site_id}}`\n\n* `{{site_id}}`\n\nWhen using the `pulumi import` command, Site can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingSite:HostingSite default projects/{{project}}/sites/{{site_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingSite:HostingSite default {{project}}/{{site_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingSite:HostingSite default sites/{{site_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingSite:HostingSite default {{site_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebasehosting Site Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-no-app\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-no-app\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-no-app\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-no-app\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-no-app\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-no-app\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Site Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.WebApp(\"default\", {\n project: \"my-project-name\",\n displayName: \"Test web app for Firebase Hosting\",\n});\nconst full = new gcp.firebase.HostingSite(\"full\", {\n project: \"my-project-name\",\n siteId: \"site-with-app\",\n appId: _default.appId,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.WebApp(\"default\",\n project=\"my-project-name\",\n display_name=\"Test web app for Firebase Hosting\")\nfull = gcp.firebase.HostingSite(\"full\",\n project=\"my-project-name\",\n site_id=\"site-with-app\",\n app_id=default.app_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.WebApp(\"default\", new()\n {\n Project = \"my-project-name\",\n DisplayName = \"Test web app for Firebase Hosting\",\n });\n\n var full = new Gcp.Firebase.HostingSite(\"full\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-with-app\",\n AppId = @default.AppId,\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewWebApp(ctx, \"default\", \u0026firebase.WebAppArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tDisplayName: pulumi.String(\"Test web app for Firebase Hosting\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingSite(ctx, \"full\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-with-app\"),\n\t\t\tAppId: _default.AppId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.WebApp;\nimport com.pulumi.gcp.firebase.WebAppArgs;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new WebApp(\"default\", WebAppArgs.builder()\n .project(\"my-project-name\")\n .displayName(\"Test web app for Firebase Hosting\")\n .build());\n\n var full = new HostingSite(\"full\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-with-app\")\n .appId(default_.appId())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:WebApp\n properties:\n project: my-project-name\n displayName: Test web app for Firebase Hosting\n full:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-with-app\n appId: ${default.appId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSite can be imported using any of these accepted formats:\n\n* `projects/{{project}}/sites/{{site_id}}`\n\n* `{{project}}/{{site_id}}`\n\n* `sites/{{site_id}}`\n\n* `{{site_id}}`\n\nWhen using the `pulumi import` command, Site can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingSite:HostingSite default projects/{{project}}/sites/{{site_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingSite:HostingSite default {{project}}/{{site_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingSite:HostingSite default sites/{{site_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingSite:HostingSite default {{site_id}}\n```\n\n", "properties": { "appId": { "type": "string", @@ -222796,7 +222796,7 @@ } }, "gcp:firebase/hostingVersion:HostingVersion": { - "description": "## Example Usage\n\n### Firebasehosting Version Redirect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n redirects: [{\n glob: \"/google/**\",\n statusCode: 302,\n location: \"https://www.google.com\",\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Redirect to Google\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"redirects\": [{\n \"glob\": \"/google/**\",\n \"status_code\": 302,\n \"location\": \"https://www.google.com\",\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Redirect to Google\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Redirects = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRedirectArgs\n {\n Glob = \"/google/**\",\n StatusCode = 302,\n Location = \"https://www.google.com\",\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Redirect to Google\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRedirects: firebase.HostingVersionConfigRedirectArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRedirectArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/google/**\"),\n\t\t\t\t\t\tStatusCode: pulumi.Int(302),\n\t\t\t\t\t\tLocation: pulumi.String(\"https://www.google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Redirect to Google\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .redirects(HostingVersionConfigRedirectArgs.builder()\n .glob(\"/google/**\")\n .statusCode(302)\n .location(\"https://www.google.com\")\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Redirect to Google\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n redirects:\n - glob: /google/**\n statusCode: 302\n location: https://www.google.com\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Redirect to Google\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Headers\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n headers: [{\n glob: \"/headers/**\",\n headers: {\n \"my-header\": \"my-value\",\n },\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"With custom headers\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"headers\": [{\n \"glob\": \"/headers/**\",\n \"headers\": {\n \"my-header\": \"my-value\",\n },\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"With custom headers\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Headers = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigHeaderArgs\n {\n Glob = \"/headers/**\",\n Headers = \n {\n { \"my-header\", \"my-value\" },\n },\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"With custom headers\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tHeaders: firebase.HostingVersionConfigHeaderArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigHeaderArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/headers/**\"),\n\t\t\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\t\t\"my-header\": pulumi.String(\"my-value\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"With custom headers\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .headers(HostingVersionConfigHeaderArgs.builder()\n .glob(\"/headers/**\")\n .headers(Map.of(\"my-header\", \"my-value\"))\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"With custom headers\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n headers:\n - glob: /headers/**\n headers:\n my-header: my-value\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: With custom headers\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Headers Regex\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n headers: [{\n regex: \"^~/headers$\",\n headers: {\n \"my-header\": \"my-value\",\n },\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"With custom headers\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"headers\": [{\n \"regex\": \"^~/headers$\",\n \"headers\": {\n \"my-header\": \"my-value\",\n },\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"With custom headers\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Headers = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigHeaderArgs\n {\n Regex = \"^~/headers$\",\n Headers = \n {\n { \"my-header\", \"my-value\" },\n },\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"With custom headers\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tHeaders: firebase.HostingVersionConfigHeaderArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigHeaderArgs{\n\t\t\t\t\t\tRegex: pulumi.String(\"^~/headers$\"),\n\t\t\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\t\t\"my-header\": pulumi.String(\"my-value\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"With custom headers\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .headers(HostingVersionConfigHeaderArgs.builder()\n .regex(\"^~/headers$\")\n .headers(Map.of(\"my-header\", \"my-value\"))\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"With custom headers\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n headers:\n - regex: ^~/headers$\n headers:\n my-header: my-value\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: With custom headers\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Path\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"**\",\n path: \"/index.html\",\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Path Rewrite\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"**\",\n \"path\": \"/index.html\",\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Path Rewrite\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"**\",\n Path = \"/index.html\",\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Path Rewrite\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"**\"),\n\t\t\t\t\t\tPath: pulumi.String(\"/index.html\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Path Rewrite\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"**\")\n .path(\"/index.html\")\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Path Rewrite\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: '**'\n path: /index.html\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Path Rewrite\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Cloud Run\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultService = new gcp.cloudrunv2.Service(\"default\", {\n project: \"my-project-name\",\n name: \"cloud-run-service-via-hosting\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n deletionProtection: true,\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"/hello/**\",\n run: {\n serviceId: defaultService.name,\n region: defaultService.location,\n },\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Cloud Run Integration\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_service = gcp.cloudrunv2.Service(\"default\",\n project=\"my-project-name\",\n name=\"cloud-run-service-via-hosting\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n deletion_protection=True)\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"/hello/**\",\n \"run\": {\n \"service_id\": default_service.name,\n \"region\": default_service.location,\n },\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Cloud Run Integration\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultService = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Project = \"my-project-name\",\n Name = \"cloud-run-service-via-hosting\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n DeletionProtection = true,\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"/hello/**\",\n Run = new Gcp.Firebase.Inputs.HostingVersionConfigRewriteRunArgs\n {\n ServiceId = defaultService.Name,\n Region = defaultService.Location,\n },\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Cloud Run Integration\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultService, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cloud-run-service-via-hosting\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/hello/**\"),\n\t\t\t\t\t\tRun: \u0026firebase.HostingVersionConfigRewriteRunArgs{\n\t\t\t\t\t\t\tServiceId: defaultService.Name,\n\t\t\t\t\t\t\tRegion: defaultService.Location,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Cloud Run Integration\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultService = new Service(\"defaultService\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .name(\"cloud-run-service-via-hosting\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"/hello/**\")\n .run(HostingVersionConfigRewriteRunArgs.builder()\n .serviceId(defaultService.name())\n .region(defaultService.location())\n .build())\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Cloud Run Integration\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultService:\n type: gcp:cloudrunv2:Service\n name: default\n properties:\n project: my-project-name\n name: cloud-run-service-via-hosting\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n deletionProtection: true\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: /hello/**\n run:\n serviceId: ${defaultService.name}\n region: ${defaultService.location}\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Cloud Run Integration\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Cloud Functions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n project: \"my-project-name\",\n name: \"site-id-function-source\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctions.Function(\"function\", {\n project: \"my-project-name\",\n name: \"cloud-function-via-hosting\",\n description: \"A Cloud Function connected to Firebase Hosing\",\n runtime: \"nodejs16\",\n availableMemoryMb: 128,\n sourceArchiveBucket: bucket.name,\n sourceArchiveObject: object.name,\n triggerHttp: true,\n entryPoint: \"helloHttp\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"/hello/**\",\n \"function\": _function.name,\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Cloud Functions Integration\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\nbucket = gcp.storage.Bucket(\"bucket\",\n project=\"my-project-name\",\n name=\"site-id-function-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctions.Function(\"function\",\n project=\"my-project-name\",\n name=\"cloud-function-via-hosting\",\n description=\"A Cloud Function connected to Firebase Hosing\",\n runtime=\"nodejs16\",\n available_memory_mb=128,\n source_archive_bucket=bucket.name,\n source_archive_object=object.name,\n trigger_http=True,\n entry_point=\"helloHttp\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"/hello/**\",\n \"function\": function.name,\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Cloud Functions Integration\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Project = \"my-project-name\",\n Name = \"site-id-function-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctions.Function(\"function\", new()\n {\n Project = \"my-project-name\",\n Name = \"cloud-function-via-hosting\",\n Description = \"A Cloud Function connected to Firebase Hosing\",\n Runtime = \"nodejs16\",\n AvailableMemoryMb = 128,\n SourceArchiveBucket = bucket.Name,\n SourceArchiveObject = @object.Name,\n TriggerHttp = true,\n EntryPoint = \"helloHttp\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"/hello/**\",\n Function = function.Name,\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Cloud Functions Integration\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctions\"\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\t_, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"site-id-function-source\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctions.NewFunction(ctx, \"function\", \u0026cloudfunctions.FunctionArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cloud-function-via-hosting\"),\n\t\t\tDescription: pulumi.String(\"A Cloud Function connected to Firebase Hosing\"),\n\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\tAvailableMemoryMb: pulumi.Int(128),\n\t\t\tSourceArchiveBucket: bucket.Name,\n\t\t\tSourceArchiveObject: object.Name,\n\t\t\tTriggerHttp: pulumi.Bool(true),\n\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/hello/**\"),\n\t\t\t\t\t\tFunction: function.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Cloud Functions Integration\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctions.Function;\nimport com.pulumi.gcp.cloudfunctions.FunctionArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .project(\"my-project-name\")\n .name(\"site-id-function-source\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .project(\"my-project-name\")\n .name(\"cloud-function-via-hosting\")\n .description(\"A Cloud Function connected to Firebase Hosing\")\n .runtime(\"nodejs16\")\n .availableMemoryMb(128)\n .sourceArchiveBucket(bucket.name())\n .sourceArchiveObject(object.name())\n .triggerHttp(true)\n .entryPoint(\"helloHttp\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"/hello/**\")\n .function(function.name())\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Cloud Functions Integration\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n bucket:\n type: gcp:storage:Bucket\n properties:\n project: my-project-name\n name: site-id-function-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctions:Function\n properties:\n project: my-project-name\n name: cloud-function-via-hosting\n description: A Cloud Function connected to Firebase Hosing\n runtime: nodejs16\n availableMemoryMb: 128\n sourceArchiveBucket: ${bucket.name}\n sourceArchiveObject: ${object.name}\n triggerHttp: true\n entryPoint: helloHttp\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: /hello/**\n function: ${function.name}\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Cloud Functions Integration\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVersion can be imported using any of these accepted formats:\n\n* `sites/{{site_id}}/versions/{{version_id}}`\n\n* `{{site_id}}/{{version_id}}`\n\nWhen using the `pulumi import` command, Version can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingVersion:HostingVersion default sites/{{site_id}}/versions/{{version_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingVersion:HostingVersion default {{site_id}}/{{version_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebasehosting Version Redirect\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n redirects: [{\n glob: \"/google/**\",\n statusCode: 302,\n location: \"https://www.google.com\",\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Redirect to Google\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"redirects\": [{\n \"glob\": \"/google/**\",\n \"status_code\": 302,\n \"location\": \"https://www.google.com\",\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Redirect to Google\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Redirects = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRedirectArgs\n {\n Glob = \"/google/**\",\n StatusCode = 302,\n Location = \"https://www.google.com\",\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Redirect to Google\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRedirects: firebase.HostingVersionConfigRedirectArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRedirectArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/google/**\"),\n\t\t\t\t\t\tStatusCode: pulumi.Int(302),\n\t\t\t\t\t\tLocation: pulumi.String(\"https://www.google.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Redirect to Google\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .redirects(HostingVersionConfigRedirectArgs.builder()\n .glob(\"/google/**\")\n .statusCode(302)\n .location(\"https://www.google.com\")\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Redirect to Google\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n redirects:\n - glob: /google/**\n statusCode: 302\n location: https://www.google.com\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Redirect to Google\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Headers\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n headers: [{\n glob: \"/headers/**\",\n headers: {\n \"my-header\": \"my-value\",\n },\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"With custom headers\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"headers\": [{\n \"glob\": \"/headers/**\",\n \"headers\": {\n \"my-header\": \"my-value\",\n },\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"With custom headers\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Headers = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigHeaderArgs\n {\n Glob = \"/headers/**\",\n Headers = \n {\n { \"my-header\", \"my-value\" },\n },\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"With custom headers\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tHeaders: firebase.HostingVersionConfigHeaderArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigHeaderArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/headers/**\"),\n\t\t\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\t\t\"my-header\": pulumi.String(\"my-value\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"With custom headers\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .headers(HostingVersionConfigHeaderArgs.builder()\n .glob(\"/headers/**\")\n .headers(Map.of(\"my-header\", \"my-value\"))\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"With custom headers\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n headers:\n - glob: /headers/**\n headers:\n my-header: my-value\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: With custom headers\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Headers Regex\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n headers: [{\n regex: \"^~/headers$\",\n headers: {\n \"my-header\": \"my-value\",\n },\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"With custom headers\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"headers\": [{\n \"regex\": \"^~/headers$\",\n \"headers\": {\n \"my-header\": \"my-value\",\n },\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"With custom headers\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Headers = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigHeaderArgs\n {\n Regex = \"^~/headers$\",\n Headers = \n {\n { \"my-header\", \"my-value\" },\n },\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"With custom headers\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tHeaders: firebase.HostingVersionConfigHeaderArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigHeaderArgs{\n\t\t\t\t\t\tRegex: pulumi.String(\"^~/headers$\"),\n\t\t\t\t\t\tHeaders: pulumi.StringMap{\n\t\t\t\t\t\t\t\"my-header\": pulumi.String(\"my-value\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"With custom headers\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .headers(HostingVersionConfigHeaderArgs.builder()\n .regex(\"^~/headers$\")\n .headers(Map.of(\"my-header\", \"my-value\"))\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"With custom headers\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n headers:\n - regex: ^~/headers$\n headers:\n my-header: my-value\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: With custom headers\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Path\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"**\",\n path: \"/index.html\",\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Path Rewrite\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"**\",\n \"path\": \"/index.html\",\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Path Rewrite\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"**\",\n Path = \"/index.html\",\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Path Rewrite\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"**\"),\n\t\t\t\t\t\tPath: pulumi.String(\"/index.html\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Path Rewrite\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"**\")\n .path(\"/index.html\")\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Path Rewrite\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: '**'\n path: /index.html\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Path Rewrite\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Cloud Run\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst defaultService = new gcp.cloudrunv2.Service(\"default\", {\n project: \"my-project-name\",\n name: \"cloud-run-service-via-hosting\",\n location: \"us-central1\",\n ingress: \"INGRESS_TRAFFIC_ALL\",\n template: {\n containers: [{\n image: \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n deletionProtection: true,\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"/hello/**\",\n run: {\n serviceId: defaultService.name,\n region: defaultService.location,\n },\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Cloud Run Integration\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\ndefault_service = gcp.cloudrunv2.Service(\"default\",\n project=\"my-project-name\",\n name=\"cloud-run-service-via-hosting\",\n location=\"us-central1\",\n ingress=\"INGRESS_TRAFFIC_ALL\",\n template={\n \"containers\": [{\n \"image\": \"us-docker.pkg.dev/cloudrun/container/hello\",\n }],\n },\n deletion_protection=True)\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"/hello/**\",\n \"run\": {\n \"service_id\": default_service.name,\n \"region\": default_service.location,\n },\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Cloud Run Integration\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var defaultService = new Gcp.CloudRunV2.Service(\"default\", new()\n {\n Project = \"my-project-name\",\n Name = \"cloud-run-service-via-hosting\",\n Location = \"us-central1\",\n Ingress = \"INGRESS_TRAFFIC_ALL\",\n Template = new Gcp.CloudRunV2.Inputs.ServiceTemplateArgs\n {\n Containers = new[]\n {\n new Gcp.CloudRunV2.Inputs.ServiceTemplateContainerArgs\n {\n Image = \"us-docker.pkg.dev/cloudrun/container/hello\",\n },\n },\n },\n DeletionProtection = true,\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"/hello/**\",\n Run = new Gcp.Firebase.Inputs.HostingVersionConfigRewriteRunArgs\n {\n ServiceId = defaultService.Name,\n Region = defaultService.Location,\n },\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Cloud Run Integration\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudrunv2\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/firebase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultService, err := cloudrunv2.NewService(ctx, \"default\", \u0026cloudrunv2.ServiceArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cloud-run-service-via-hosting\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tIngress: pulumi.String(\"INGRESS_TRAFFIC_ALL\"),\n\t\t\tTemplate: \u0026cloudrunv2.ServiceTemplateArgs{\n\t\t\t\tContainers: cloudrunv2.ServiceTemplateContainerArray{\n\t\t\t\t\t\u0026cloudrunv2.ServiceTemplateContainerArgs{\n\t\t\t\t\t\tImage: pulumi.String(\"us-docker.pkg.dev/cloudrun/container/hello\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/hello/**\"),\n\t\t\t\t\t\tRun: \u0026firebase.HostingVersionConfigRewriteRunArgs{\n\t\t\t\t\t\t\tServiceId: defaultService.Name,\n\t\t\t\t\t\t\tRegion: defaultService.Location,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Cloud Run Integration\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.cloudrunv2.Service;\nimport com.pulumi.gcp.cloudrunv2.ServiceArgs;\nimport com.pulumi.gcp.cloudrunv2.inputs.ServiceTemplateArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var defaultService = new Service(\"defaultService\", ServiceArgs.builder()\n .project(\"my-project-name\")\n .name(\"cloud-run-service-via-hosting\")\n .location(\"us-central1\")\n .ingress(\"INGRESS_TRAFFIC_ALL\")\n .template(ServiceTemplateArgs.builder()\n .containers(ServiceTemplateContainerArgs.builder()\n .image(\"us-docker.pkg.dev/cloudrun/container/hello\")\n .build())\n .build())\n .deletionProtection(true)\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"/hello/**\")\n .run(HostingVersionConfigRewriteRunArgs.builder()\n .serviceId(defaultService.name())\n .region(defaultService.location())\n .build())\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Cloud Run Integration\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n defaultService:\n type: gcp:cloudrunv2:Service\n name: default\n properties:\n project: my-project-name\n name: cloud-run-service-via-hosting\n location: us-central1\n ingress: INGRESS_TRAFFIC_ALL\n template:\n containers:\n - image: us-docker.pkg.dev/cloudrun/container/hello\n deletionProtection: true\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: /hello/**\n run:\n serviceId: ${defaultService.name}\n region: ${defaultService.location}\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Cloud Run Integration\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Firebasehosting Version Cloud Functions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.firebase.HostingSite(\"default\", {\n project: \"my-project-name\",\n siteId: \"site-id\",\n});\nconst bucket = new gcp.storage.Bucket(\"bucket\", {\n project: \"my-project-name\",\n name: \"site-id-function-source\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst object = new gcp.storage.BucketObject(\"object\", {\n name: \"function-source.zip\",\n bucket: bucket.name,\n source: new pulumi.asset.FileAsset(\"function-source.zip\"),\n});\nconst _function = new gcp.cloudfunctions.Function(\"function\", {\n project: \"my-project-name\",\n name: \"cloud-function-via-hosting\",\n description: \"A Cloud Function connected to Firebase Hosing\",\n runtime: \"nodejs16\",\n availableMemoryMb: 128,\n sourceArchiveBucket: bucket.name,\n sourceArchiveObject: object.name,\n triggerHttp: true,\n entryPoint: \"helloHttp\",\n});\nconst defaultHostingVersion = new gcp.firebase.HostingVersion(\"default\", {\n siteId: _default.siteId,\n config: {\n rewrites: [{\n glob: \"/hello/**\",\n \"function\": _function.name,\n }],\n },\n});\nconst defaultHostingRelease = new gcp.firebase.HostingRelease(\"default\", {\n siteId: _default.siteId,\n versionName: defaultHostingVersion.name,\n message: \"Cloud Functions Integration\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.firebase.HostingSite(\"default\",\n project=\"my-project-name\",\n site_id=\"site-id\")\nbucket = gcp.storage.Bucket(\"bucket\",\n project=\"my-project-name\",\n name=\"site-id-function-source\",\n location=\"US\",\n uniform_bucket_level_access=True)\nobject = gcp.storage.BucketObject(\"object\",\n name=\"function-source.zip\",\n bucket=bucket.name,\n source=pulumi.FileAsset(\"function-source.zip\"))\nfunction = gcp.cloudfunctions.Function(\"function\",\n project=\"my-project-name\",\n name=\"cloud-function-via-hosting\",\n description=\"A Cloud Function connected to Firebase Hosing\",\n runtime=\"nodejs16\",\n available_memory_mb=128,\n source_archive_bucket=bucket.name,\n source_archive_object=object.name,\n trigger_http=True,\n entry_point=\"helloHttp\")\ndefault_hosting_version = gcp.firebase.HostingVersion(\"default\",\n site_id=default.site_id,\n config={\n \"rewrites\": [{\n \"glob\": \"/hello/**\",\n \"function\": function.name,\n }],\n })\ndefault_hosting_release = gcp.firebase.HostingRelease(\"default\",\n site_id=default.site_id,\n version_name=default_hosting_version.name,\n message=\"Cloud Functions Integration\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Firebase.HostingSite(\"default\", new()\n {\n Project = \"my-project-name\",\n SiteId = \"site-id\",\n });\n\n var bucket = new Gcp.Storage.Bucket(\"bucket\", new()\n {\n Project = \"my-project-name\",\n Name = \"site-id-function-source\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var @object = new Gcp.Storage.BucketObject(\"object\", new()\n {\n Name = \"function-source.zip\",\n Bucket = bucket.Name,\n Source = new FileAsset(\"function-source.zip\"),\n });\n\n var function = new Gcp.CloudFunctions.Function(\"function\", new()\n {\n Project = \"my-project-name\",\n Name = \"cloud-function-via-hosting\",\n Description = \"A Cloud Function connected to Firebase Hosing\",\n Runtime = \"nodejs16\",\n AvailableMemoryMb = 128,\n SourceArchiveBucket = bucket.Name,\n SourceArchiveObject = @object.Name,\n TriggerHttp = true,\n EntryPoint = \"helloHttp\",\n });\n\n var defaultHostingVersion = new Gcp.Firebase.HostingVersion(\"default\", new()\n {\n SiteId = @default.SiteId,\n Config = new Gcp.Firebase.Inputs.HostingVersionConfigArgs\n {\n Rewrites = new[]\n {\n new Gcp.Firebase.Inputs.HostingVersionConfigRewriteArgs\n {\n Glob = \"/hello/**\",\n Function = function.Name,\n },\n },\n },\n });\n\n var defaultHostingRelease = new Gcp.Firebase.HostingRelease(\"default\", new()\n {\n SiteId = @default.SiteId,\n VersionName = defaultHostingVersion.Name,\n Message = \"Cloud Functions Integration\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/cloudfunctions\"\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\t_default, err := firebase.NewHostingSite(ctx, \"default\", \u0026firebase.HostingSiteArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tSiteId: pulumi.String(\"site-id\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbucket, err := storage.NewBucket(ctx, \"bucket\", \u0026storage.BucketArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"site-id-function-source\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tobject, err := storage.NewBucketObject(ctx, \"object\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"function-source.zip\"),\n\t\t\tBucket: bucket.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"function-source.zip\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfunction, err := cloudfunctions.NewFunction(ctx, \"function\", \u0026cloudfunctions.FunctionArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tName: pulumi.String(\"cloud-function-via-hosting\"),\n\t\t\tDescription: pulumi.String(\"A Cloud Function connected to Firebase Hosing\"),\n\t\t\tRuntime: pulumi.String(\"nodejs16\"),\n\t\t\tAvailableMemoryMb: pulumi.Int(128),\n\t\t\tSourceArchiveBucket: bucket.Name,\n\t\t\tSourceArchiveObject: object.Name,\n\t\t\tTriggerHttp: pulumi.Bool(true),\n\t\t\tEntryPoint: pulumi.String(\"helloHttp\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultHostingVersion, err := firebase.NewHostingVersion(ctx, \"default\", \u0026firebase.HostingVersionArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tConfig: \u0026firebase.HostingVersionConfigArgs{\n\t\t\t\tRewrites: firebase.HostingVersionConfigRewriteArray{\n\t\t\t\t\t\u0026firebase.HostingVersionConfigRewriteArgs{\n\t\t\t\t\t\tGlob: pulumi.String(\"/hello/**\"),\n\t\t\t\t\t\tFunction: function.Name,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = firebase.NewHostingRelease(ctx, \"default\", \u0026firebase.HostingReleaseArgs{\n\t\t\tSiteId: _default.SiteId,\n\t\t\tVersionName: defaultHostingVersion.Name,\n\t\t\tMessage: pulumi.String(\"Cloud Functions Integration\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.firebase.HostingSite;\nimport com.pulumi.gcp.firebase.HostingSiteArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketObject;\nimport com.pulumi.gcp.storage.BucketObjectArgs;\nimport com.pulumi.gcp.cloudfunctions.Function;\nimport com.pulumi.gcp.cloudfunctions.FunctionArgs;\nimport com.pulumi.gcp.firebase.HostingVersion;\nimport com.pulumi.gcp.firebase.HostingVersionArgs;\nimport com.pulumi.gcp.firebase.inputs.HostingVersionConfigArgs;\nimport com.pulumi.gcp.firebase.HostingRelease;\nimport com.pulumi.gcp.firebase.HostingReleaseArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new HostingSite(\"default\", HostingSiteArgs.builder()\n .project(\"my-project-name\")\n .siteId(\"site-id\")\n .build());\n\n var bucket = new Bucket(\"bucket\", BucketArgs.builder()\n .project(\"my-project-name\")\n .name(\"site-id-function-source\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var object = new BucketObject(\"object\", BucketObjectArgs.builder()\n .name(\"function-source.zip\")\n .bucket(bucket.name())\n .source(new FileAsset(\"function-source.zip\"))\n .build());\n\n var function = new Function(\"function\", FunctionArgs.builder()\n .project(\"my-project-name\")\n .name(\"cloud-function-via-hosting\")\n .description(\"A Cloud Function connected to Firebase Hosing\")\n .runtime(\"nodejs16\")\n .availableMemoryMb(128)\n .sourceArchiveBucket(bucket.name())\n .sourceArchiveObject(object.name())\n .triggerHttp(true)\n .entryPoint(\"helloHttp\")\n .build());\n\n var defaultHostingVersion = new HostingVersion(\"defaultHostingVersion\", HostingVersionArgs.builder()\n .siteId(default_.siteId())\n .config(HostingVersionConfigArgs.builder()\n .rewrites(HostingVersionConfigRewriteArgs.builder()\n .glob(\"/hello/**\")\n .function(function.name())\n .build())\n .build())\n .build());\n\n var defaultHostingRelease = new HostingRelease(\"defaultHostingRelease\", HostingReleaseArgs.builder()\n .siteId(default_.siteId())\n .versionName(defaultHostingVersion.name())\n .message(\"Cloud Functions Integration\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:firebase:HostingSite\n properties:\n project: my-project-name\n siteId: site-id\n bucket:\n type: gcp:storage:Bucket\n properties:\n project: my-project-name\n name: site-id-function-source\n location: US\n uniformBucketLevelAccess: true\n object:\n type: gcp:storage:BucketObject\n properties:\n name: function-source.zip\n bucket: ${bucket.name}\n source:\n fn::FileAsset: function-source.zip\n function:\n type: gcp:cloudfunctions:Function\n properties:\n project: my-project-name\n name: cloud-function-via-hosting\n description: A Cloud Function connected to Firebase Hosing\n runtime: nodejs16\n availableMemoryMb: 128\n sourceArchiveBucket: ${bucket.name}\n sourceArchiveObject: ${object.name}\n triggerHttp: true\n entryPoint: helloHttp\n defaultHostingVersion:\n type: gcp:firebase:HostingVersion\n name: default\n properties:\n siteId: ${default.siteId}\n config:\n rewrites:\n - glob: /hello/**\n function: ${function.name}\n defaultHostingRelease:\n type: gcp:firebase:HostingRelease\n name: default\n properties:\n siteId: ${default.siteId}\n versionName: ${defaultHostingVersion.name}\n message: Cloud Functions Integration\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVersion can be imported using any of these accepted formats:\n\n* `sites/{{site_id}}/versions/{{version_id}}`\n\n* `{{site_id}}/{{version_id}}`\n\nWhen using the `pulumi import` command, Version can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/hostingVersion:HostingVersion default sites/{{site_id}}/versions/{{version_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/hostingVersion:HostingVersion default {{site_id}}/{{version_id}}\n```\n\n", "properties": { "config": { "$ref": "#/types/gcp:firebase/HostingVersionConfig:HostingVersionConfig", @@ -222861,7 +222861,7 @@ } }, "gcp:firebase/project:Project": { - "description": "A Google Cloud Firebase instance. This enables Firebase resources on a given Google Project.\nSince a FirebaseProject is actually also a GCP Project, a FirebaseProject uses underlying GCP\nidentifiers (most importantly, the projectId) as its own for easy interop with GCP APIs.\nOnce Firebase has been added to a Google Project it cannot be removed.\n\nTo get more information about Project, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects)\n* How-to Guides\n * Official Documentation\n\n\u003e **Note:** This resource should usually be used with a provider configuration\nwith `user_project_override = true` unless you wish for your quota\nproject to be different from the Firebase project.\n\n## Example Usage\n\n### Firebase Project 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 deletionPolicy: \"DELETE\",\n labels: {\n firebase: \"enabled\",\n },\n});\nconst defaultProject = new gcp.firebase.Project(\"default\", {project: _default.projectId});\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 deletion_policy=\"DELETE\",\n labels={\n \"firebase\": \"enabled\",\n })\ndefault_project = gcp.firebase.Project(\"default\", project=default.project_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Organizations.Project(\"default\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n DeletionPolicy = \"DELETE\",\n Labels = \n {\n { \"firebase\", \"enabled\" },\n },\n });\n\n var defaultProject = new Gcp.Firebase.Project(\"default\", new()\n {\n ProjectID = @default.ProjectId,\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/organizations\"\n\t\"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\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 = firebase.NewProject(ctx, \"default\", \u0026firebase.ProjectArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.firebase.Project;\nimport com.pulumi.gcp.firebase.ProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Project(\"default\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .deletionPolicy(\"DELETE\")\n .labels(Map.of(\"firebase\", \"enabled\"))\n .build());\n\n var defaultProject = new Project(\"defaultProject\", ProjectArgs.builder()\n .project(default_.projectId())\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 deletionPolicy: DELETE\n labels:\n firebase: enabled\n defaultProject:\n type: gcp:firebase:Project\n name: default\n properties:\n project: ${default.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProject can be imported using any of these accepted formats:\n\n* `projects/{{project}}`\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, Project can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/project:Project default projects/{{project}}\n```\n\n```sh\n$ pulumi import gcp:firebase/project:Project default {{project}}\n```\n\n", + "description": "A Google Cloud Firebase instance. This enables Firebase resources on a given Google Project.\nSince a FirebaseProject is actually also a GCP Project, a FirebaseProject uses underlying GCP\nidentifiers (most importantly, the projectId) as its own for easy interop with GCP APIs.\nOnce Firebase has been added to a Google Project it cannot be removed.\n\nTo get more information about Project, see:\n\n* [API documentation](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects)\n* How-to Guides\n * Official Documentation\n\n\u003e **Note:** This resource should usually be used with a provider configuration\nwith `user_project_override = true` unless you wish for your quota\nproject to be different from the Firebase project.\n\n## Example Usage\n\n### Firebase Project 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 deletionPolicy: \"DELETE\",\n labels: {\n firebase: \"enabled\",\n },\n});\nconst defaultProject = new gcp.firebase.Project(\"default\", {project: _default.projectId});\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 deletion_policy=\"DELETE\",\n labels={\n \"firebase\": \"enabled\",\n })\ndefault_project = gcp.firebase.Project(\"default\", project=default.project_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Organizations.Project(\"default\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n DeletionPolicy = \"DELETE\",\n Labels = \n {\n { \"firebase\", \"enabled\" },\n },\n });\n\n var defaultProject = new Gcp.Firebase.Project(\"default\", new()\n {\n ProjectID = @default.ProjectId,\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/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := organizations.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\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 = firebase.NewProject(ctx, \"default\", \u0026firebase.ProjectArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.firebase.Project;\nimport com.pulumi.gcp.firebase.ProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Project(\"default\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .deletionPolicy(\"DELETE\")\n .labels(Map.of(\"firebase\", \"enabled\"))\n .build());\n\n var defaultProject = new Project(\"defaultProject\", ProjectArgs.builder()\n .project(default_.projectId())\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 deletionPolicy: DELETE\n labels:\n firebase: enabled\n defaultProject:\n type: gcp:firebase:Project\n name: default\n properties:\n project: ${default.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nProject can be imported using any of these accepted formats:\n\n* `projects/{{project}}`\n\n* `{{project}}`\n\nWhen using the `pulumi import` command, Project can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/project:Project default projects/{{project}}\n```\n\n```sh\n$ pulumi import gcp:firebase/project:Project default {{project}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -222924,7 +222924,7 @@ } }, "gcp:firebase/storageBucket:StorageBucket": { - "description": "## Example Usage\n\n### Firebasestorage Bucket Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.storage.Bucket(\"default\", {\n name: \"test_bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst defaultStorageBucket = new gcp.firebase.StorageBucket(\"default\", {\n project: \"my-project-name\",\n bucketId: _default.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.Bucket(\"default\",\n name=\"test_bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\ndefault_storage_bucket = gcp.firebase.StorageBucket(\"default\",\n project=\"my-project-name\",\n bucket_id=default.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"test_bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var defaultStorageBucket = new Gcp.Firebase.StorageBucket(\"default\", new()\n {\n Project = \"my-project-name\",\n BucketId = @default.Id,\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\t_, err := storage.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"test_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 = firebase.NewStorageBucket(ctx, \"default\", \u0026firebase.StorageBucketArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tBucketId: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.firebase.StorageBucket;\nimport com.pulumi.gcp.firebase.StorageBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Bucket(\"default\", BucketArgs.builder()\n .name(\"test_bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var defaultStorageBucket = new StorageBucket(\"defaultStorageBucket\", StorageBucketArgs.builder()\n .project(\"my-project-name\")\n .bucketId(default_.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:storage:Bucket\n properties:\n name: test_bucket\n location: US\n uniformBucketLevelAccess: true\n defaultStorageBucket:\n type: gcp:firebase:StorageBucket\n name: default\n properties:\n project: my-project-name\n bucketId: ${default.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBucket can be imported using any of these accepted formats:\n\n* `projects/{{project}}/buckets/{{bucket_id}}`\n\n* `{{project}}/{{bucket_id}}`\n\n* `{{bucket_id}}`\n\nWhen using the `pulumi import` command, Bucket can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/storageBucket:StorageBucket default projects/{{project}}/buckets/{{bucket_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/storageBucket:StorageBucket default {{project}}/{{bucket_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/storageBucket:StorageBucket default {{bucket_id}}\n```\n\n", + "description": "## Example Usage\n\n### Firebasestorage Bucket Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.storage.Bucket(\"default\", {\n name: \"test_bucket\",\n location: \"US\",\n uniformBucketLevelAccess: true,\n});\nconst defaultStorageBucket = new gcp.firebase.StorageBucket(\"default\", {\n project: \"my-project-name\",\n bucketId: _default.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.Bucket(\"default\",\n name=\"test_bucket\",\n location=\"US\",\n uniform_bucket_level_access=True)\ndefault_storage_bucket = gcp.firebase.StorageBucket(\"default\",\n project=\"my-project-name\",\n bucket_id=default.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"test_bucket\",\n Location = \"US\",\n UniformBucketLevelAccess = true,\n });\n\n var defaultStorageBucket = new Gcp.Firebase.StorageBucket(\"default\", new()\n {\n Project = \"my-project-name\",\n BucketId = @default.Id,\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\t_default, err := storage.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"test_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 = firebase.NewStorageBucket(ctx, \"default\", \u0026firebase.StorageBucketArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tBucketId: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.firebase.StorageBucket;\nimport com.pulumi.gcp.firebase.StorageBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Bucket(\"default\", BucketArgs.builder()\n .name(\"test_bucket\")\n .location(\"US\")\n .uniformBucketLevelAccess(true)\n .build());\n\n var defaultStorageBucket = new StorageBucket(\"defaultStorageBucket\", StorageBucketArgs.builder()\n .project(\"my-project-name\")\n .bucketId(default_.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:storage:Bucket\n properties:\n name: test_bucket\n location: US\n uniformBucketLevelAccess: true\n defaultStorageBucket:\n type: gcp:firebase:StorageBucket\n name: default\n properties:\n project: my-project-name\n bucketId: ${default.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBucket can be imported using any of these accepted formats:\n\n* `projects/{{project}}/buckets/{{bucket_id}}`\n\n* `{{project}}/{{bucket_id}}`\n\n* `{{bucket_id}}`\n\nWhen using the `pulumi import` command, Bucket can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:firebase/storageBucket:StorageBucket default projects/{{project}}/buckets/{{bucket_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/storageBucket:StorageBucket default {{project}}/{{bucket_id}}\n```\n\n```sh\n$ pulumi import gcp:firebase/storageBucket:StorageBucket default {{bucket_id}}\n```\n\n", "properties": { "bucketId": { "type": "string", @@ -229574,7 +229574,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: 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", + "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\tdefault_basic, 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\tdefault_full, 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", @@ -230214,7 +230214,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: 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", + "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\tdefault_basic, 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\tdefault_full, 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", @@ -230808,7 +230808,7 @@ } }, "gcp:healthcare/consentStore:ConsentStore": { - "description": "The Consent Management API is a tool for tracking user consents and the documentation associated with the consents.\n\n\nTo get more information about ConsentStore, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets.consentStores)\n* How-to Guides\n * [Creating a Consent store](https://cloud.google.com/healthcare/docs/how-tos/consent)\n\n## Example Usage\n\n### Healthcare Consent Store Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n location: \"us-central1\",\n name: \"my-dataset\",\n});\nconst my_consent = new gcp.healthcare.ConsentStore(\"my-consent\", {\n dataset: dataset.id,\n name: \"my-consent-store\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n location=\"us-central1\",\n name=\"my-dataset\")\nmy_consent = gcp.healthcare.ConsentStore(\"my-consent\",\n dataset=dataset.id,\n name=\"my-consent-store\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n Name = \"my-dataset\",\n });\n\n var my_consent = new Gcp.Healthcare.ConsentStore(\"my-consent\", new()\n {\n Dataset = dataset.Id,\n Name = \"my-consent-store\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewConsentStore(ctx, \"my-consent\", \u0026healthcare.ConsentStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tName: pulumi.String(\"my-consent-store\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.ConsentStore;\nimport com.pulumi.gcp.healthcare.ConsentStoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .location(\"us-central1\")\n .name(\"my-dataset\")\n .build());\n\n var my_consent = new ConsentStore(\"my-consent\", ConsentStoreArgs.builder()\n .dataset(dataset.id())\n .name(\"my-consent-store\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n name: my-dataset\n my-consent:\n type: gcp:healthcare:ConsentStore\n properties:\n dataset: ${dataset.id}\n name: my-consent-store\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Consent Store Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n location: \"us-central1\",\n name: \"my-dataset\",\n});\nconst my_consent = new gcp.healthcare.ConsentStore(\"my-consent\", {\n dataset: dataset.id,\n name: \"my-consent-store\",\n enableConsentCreateOnUpdate: true,\n defaultConsentTtl: \"90000s\",\n labels: {\n label1: \"labelvalue1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n location=\"us-central1\",\n name=\"my-dataset\")\nmy_consent = gcp.healthcare.ConsentStore(\"my-consent\",\n dataset=dataset.id,\n name=\"my-consent-store\",\n enable_consent_create_on_update=True,\n default_consent_ttl=\"90000s\",\n labels={\n \"label1\": \"labelvalue1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n Name = \"my-dataset\",\n });\n\n var my_consent = new Gcp.Healthcare.ConsentStore(\"my-consent\", new()\n {\n Dataset = dataset.Id,\n Name = \"my-consent-store\",\n EnableConsentCreateOnUpdate = true,\n DefaultConsentTtl = \"90000s\",\n Labels = \n {\n { \"label1\", \"labelvalue1\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewConsentStore(ctx, \"my-consent\", \u0026healthcare.ConsentStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tName: pulumi.String(\"my-consent-store\"),\n\t\t\tEnableConsentCreateOnUpdate: pulumi.Bool(true),\n\t\t\tDefaultConsentTtl: pulumi.String(\"90000s\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label1\": pulumi.String(\"labelvalue1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.ConsentStore;\nimport com.pulumi.gcp.healthcare.ConsentStoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .location(\"us-central1\")\n .name(\"my-dataset\")\n .build());\n\n var my_consent = new ConsentStore(\"my-consent\", ConsentStoreArgs.builder()\n .dataset(dataset.id())\n .name(\"my-consent-store\")\n .enableConsentCreateOnUpdate(true)\n .defaultConsentTtl(\"90000s\")\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n name: my-dataset\n my-consent:\n type: gcp:healthcare:ConsentStore\n properties:\n dataset: ${dataset.id}\n name: my-consent-store\n enableConsentCreateOnUpdate: true\n defaultConsentTtl: 90000s\n labels:\n label1: labelvalue1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Consent Store Iam\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n location: \"us-central1\",\n name: \"my-dataset\",\n});\nconst my_consent = new gcp.healthcare.ConsentStore(\"my-consent\", {\n dataset: dataset.id,\n name: \"my-consent-store\",\n});\nconst test_account = new gcp.serviceaccount.Account(\"test-account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst test_iam = new gcp.healthcare.ConsentStoreIamMember(\"test-iam\", {\n dataset: dataset.id,\n consentStoreId: my_consent.name,\n role: \"roles/editor\",\n member: pulumi.interpolate`serviceAccount:${test_account.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n location=\"us-central1\",\n name=\"my-dataset\")\nmy_consent = gcp.healthcare.ConsentStore(\"my-consent\",\n dataset=dataset.id,\n name=\"my-consent-store\")\ntest_account = gcp.serviceaccount.Account(\"test-account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\ntest_iam = gcp.healthcare.ConsentStoreIamMember(\"test-iam\",\n dataset=dataset.id,\n consent_store_id=my_consent.name,\n role=\"roles/editor\",\n member=test_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n Name = \"my-dataset\",\n });\n\n var my_consent = new Gcp.Healthcare.ConsentStore(\"my-consent\", new()\n {\n Dataset = dataset.Id,\n Name = \"my-consent-store\",\n });\n\n var test_account = new Gcp.ServiceAccount.Account(\"test-account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var test_iam = new Gcp.Healthcare.ConsentStoreIamMember(\"test-iam\", new()\n {\n Dataset = dataset.Id,\n ConsentStoreId = my_consent.Name,\n Role = \"roles/editor\",\n Member = test_account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewConsentStore(ctx, \"my-consent\", \u0026healthcare.ConsentStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tName: pulumi.String(\"my-consent-store\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewAccount(ctx, \"test-account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewConsentStoreIamMember(ctx, \"test-iam\", \u0026healthcare.ConsentStoreIamMemberArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tConsentStoreId: my_consent.Name,\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: test_account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.ConsentStore;\nimport com.pulumi.gcp.healthcare.ConsentStoreArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.healthcare.ConsentStoreIamMember;\nimport com.pulumi.gcp.healthcare.ConsentStoreIamMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .location(\"us-central1\")\n .name(\"my-dataset\")\n .build());\n\n var my_consent = new ConsentStore(\"my-consent\", ConsentStoreArgs.builder()\n .dataset(dataset.id())\n .name(\"my-consent-store\")\n .build());\n\n var test_account = new Account(\"test-account\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Test Service Account\")\n .build());\n\n var test_iam = new ConsentStoreIamMember(\"test-iam\", ConsentStoreIamMemberArgs.builder()\n .dataset(dataset.id())\n .consentStoreId(my_consent.name())\n .role(\"roles/editor\")\n .member(test_account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n name: my-dataset\n my-consent:\n type: gcp:healthcare:ConsentStore\n properties:\n dataset: ${dataset.id}\n name: my-consent-store\n test-account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-account\n displayName: Test Service Account\n test-iam:\n type: gcp:healthcare:ConsentStoreIamMember\n properties:\n dataset: ${dataset.id}\n consentStoreId: ${[\"my-consent\"].name}\n role: roles/editor\n member: serviceAccount:${[\"test-account\"].email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConsentStore can be imported using any of these accepted formats:\n\n* `{{dataset}}/consentStores/{{name}}`\n\nWhen using the `pulumi import` command, ConsentStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/consentStore:ConsentStore default {{dataset}}/consentStores/{{name}}\n```\n\n", + "description": "The Consent Management API is a tool for tracking user consents and the documentation associated with the consents.\n\n\nTo get more information about ConsentStore, see:\n\n* [API documentation](https://cloud.google.com/healthcare/docs/reference/rest/v1/projects.locations.datasets.consentStores)\n* How-to Guides\n * [Creating a Consent store](https://cloud.google.com/healthcare/docs/how-tos/consent)\n\n## Example Usage\n\n### Healthcare Consent Store Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n location: \"us-central1\",\n name: \"my-dataset\",\n});\nconst my_consent = new gcp.healthcare.ConsentStore(\"my-consent\", {\n dataset: dataset.id,\n name: \"my-consent-store\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n location=\"us-central1\",\n name=\"my-dataset\")\nmy_consent = gcp.healthcare.ConsentStore(\"my-consent\",\n dataset=dataset.id,\n name=\"my-consent-store\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n Name = \"my-dataset\",\n });\n\n var my_consent = new Gcp.Healthcare.ConsentStore(\"my-consent\", new()\n {\n Dataset = dataset.Id,\n Name = \"my-consent-store\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewConsentStore(ctx, \"my-consent\", \u0026healthcare.ConsentStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tName: pulumi.String(\"my-consent-store\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.ConsentStore;\nimport com.pulumi.gcp.healthcare.ConsentStoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .location(\"us-central1\")\n .name(\"my-dataset\")\n .build());\n\n var my_consent = new ConsentStore(\"my-consent\", ConsentStoreArgs.builder()\n .dataset(dataset.id())\n .name(\"my-consent-store\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n name: my-dataset\n my-consent:\n type: gcp:healthcare:ConsentStore\n properties:\n dataset: ${dataset.id}\n name: my-consent-store\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Consent Store Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n location: \"us-central1\",\n name: \"my-dataset\",\n});\nconst my_consent = new gcp.healthcare.ConsentStore(\"my-consent\", {\n dataset: dataset.id,\n name: \"my-consent-store\",\n enableConsentCreateOnUpdate: true,\n defaultConsentTtl: \"90000s\",\n labels: {\n label1: \"labelvalue1\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n location=\"us-central1\",\n name=\"my-dataset\")\nmy_consent = gcp.healthcare.ConsentStore(\"my-consent\",\n dataset=dataset.id,\n name=\"my-consent-store\",\n enable_consent_create_on_update=True,\n default_consent_ttl=\"90000s\",\n labels={\n \"label1\": \"labelvalue1\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n Name = \"my-dataset\",\n });\n\n var my_consent = new Gcp.Healthcare.ConsentStore(\"my-consent\", new()\n {\n Dataset = dataset.Id,\n Name = \"my-consent-store\",\n EnableConsentCreateOnUpdate = true,\n DefaultConsentTtl = \"90000s\",\n Labels = \n {\n { \"label1\", \"labelvalue1\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewConsentStore(ctx, \"my-consent\", \u0026healthcare.ConsentStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tName: pulumi.String(\"my-consent-store\"),\n\t\t\tEnableConsentCreateOnUpdate: pulumi.Bool(true),\n\t\t\tDefaultConsentTtl: pulumi.String(\"90000s\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label1\": pulumi.String(\"labelvalue1\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.ConsentStore;\nimport com.pulumi.gcp.healthcare.ConsentStoreArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .location(\"us-central1\")\n .name(\"my-dataset\")\n .build());\n\n var my_consent = new ConsentStore(\"my-consent\", ConsentStoreArgs.builder()\n .dataset(dataset.id())\n .name(\"my-consent-store\")\n .enableConsentCreateOnUpdate(true)\n .defaultConsentTtl(\"90000s\")\n .labels(Map.of(\"label1\", \"labelvalue1\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n name: my-dataset\n my-consent:\n type: gcp:healthcare:ConsentStore\n properties:\n dataset: ${dataset.id}\n name: my-consent-store\n enableConsentCreateOnUpdate: true\n defaultConsentTtl: 90000s\n labels:\n label1: labelvalue1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Healthcare Consent Store Iam\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst dataset = new gcp.healthcare.Dataset(\"dataset\", {\n location: \"us-central1\",\n name: \"my-dataset\",\n});\nconst my_consent = new gcp.healthcare.ConsentStore(\"my-consent\", {\n dataset: dataset.id,\n name: \"my-consent-store\",\n});\nconst test_account = new gcp.serviceaccount.Account(\"test-account\", {\n accountId: \"my-account\",\n displayName: \"Test Service Account\",\n});\nconst test_iam = new gcp.healthcare.ConsentStoreIamMember(\"test-iam\", {\n dataset: dataset.id,\n consentStoreId: my_consent.name,\n role: \"roles/editor\",\n member: pulumi.interpolate`serviceAccount:${test_account.email}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndataset = gcp.healthcare.Dataset(\"dataset\",\n location=\"us-central1\",\n name=\"my-dataset\")\nmy_consent = gcp.healthcare.ConsentStore(\"my-consent\",\n dataset=dataset.id,\n name=\"my-consent-store\")\ntest_account = gcp.serviceaccount.Account(\"test-account\",\n account_id=\"my-account\",\n display_name=\"Test Service Account\")\ntest_iam = gcp.healthcare.ConsentStoreIamMember(\"test-iam\",\n dataset=dataset.id,\n consent_store_id=my_consent.name,\n role=\"roles/editor\",\n member=test_account.email.apply(lambda email: f\"serviceAccount:{email}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var dataset = new Gcp.Healthcare.Dataset(\"dataset\", new()\n {\n Location = \"us-central1\",\n Name = \"my-dataset\",\n });\n\n var my_consent = new Gcp.Healthcare.ConsentStore(\"my-consent\", new()\n {\n Dataset = dataset.Id,\n Name = \"my-consent-store\",\n });\n\n var test_account = new Gcp.ServiceAccount.Account(\"test-account\", new()\n {\n AccountId = \"my-account\",\n DisplayName = \"Test Service Account\",\n });\n\n var test_iam = new Gcp.Healthcare.ConsentStoreIamMember(\"test-iam\", new()\n {\n Dataset = dataset.Id,\n ConsentStoreId = my_consent.Name,\n Role = \"roles/editor\",\n Member = test_account.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/healthcare\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/serviceaccount\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tdataset, err := healthcare.NewDataset(ctx, \"dataset\", \u0026healthcare.DatasetArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tName: pulumi.String(\"my-dataset\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmy_consent, err := healthcare.NewConsentStore(ctx, \"my-consent\", \u0026healthcare.ConsentStoreArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tName: pulumi.String(\"my-consent-store\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest_account, err := serviceaccount.NewAccount(ctx, \"test-account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"my-account\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = healthcare.NewConsentStoreIamMember(ctx, \"test-iam\", \u0026healthcare.ConsentStoreIamMemberArgs{\n\t\t\tDataset: dataset.ID(),\n\t\t\tConsentStoreId: my_consent.Name,\n\t\t\tRole: pulumi.String(\"roles/editor\"),\n\t\t\tMember: test_account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:%v\", email), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.healthcare.Dataset;\nimport com.pulumi.gcp.healthcare.DatasetArgs;\nimport com.pulumi.gcp.healthcare.ConsentStore;\nimport com.pulumi.gcp.healthcare.ConsentStoreArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.healthcare.ConsentStoreIamMember;\nimport com.pulumi.gcp.healthcare.ConsentStoreIamMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var dataset = new Dataset(\"dataset\", DatasetArgs.builder()\n .location(\"us-central1\")\n .name(\"my-dataset\")\n .build());\n\n var my_consent = new ConsentStore(\"my-consent\", ConsentStoreArgs.builder()\n .dataset(dataset.id())\n .name(\"my-consent-store\")\n .build());\n\n var test_account = new Account(\"test-account\", AccountArgs.builder()\n .accountId(\"my-account\")\n .displayName(\"Test Service Account\")\n .build());\n\n var test_iam = new ConsentStoreIamMember(\"test-iam\", ConsentStoreIamMemberArgs.builder()\n .dataset(dataset.id())\n .consentStoreId(my_consent.name())\n .role(\"roles/editor\")\n .member(test_account.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n dataset:\n type: gcp:healthcare:Dataset\n properties:\n location: us-central1\n name: my-dataset\n my-consent:\n type: gcp:healthcare:ConsentStore\n properties:\n dataset: ${dataset.id}\n name: my-consent-store\n test-account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: my-account\n displayName: Test Service Account\n test-iam:\n type: gcp:healthcare:ConsentStoreIamMember\n properties:\n dataset: ${dataset.id}\n consentStoreId: ${[\"my-consent\"].name}\n role: roles/editor\n member: serviceAccount:${[\"test-account\"].email}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nConsentStore can be imported using any of these accepted formats:\n\n* `{{dataset}}/consentStores/{{name}}`\n\nWhen using the `pulumi import` command, ConsentStore can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:healthcare/consentStore:ConsentStore default {{dataset}}/consentStores/{{name}}\n```\n\n", "properties": { "dataset": { "type": "string", @@ -233131,7 +233131,7 @@ } }, "gcp:iam/accessBoundaryPolicy:AccessBoundaryPolicy": { - "description": "Represents a collection of access boundary policies to apply to a given resource.\n**NOTE**: This is a private feature and users should contact GCP support\nif they would like to test it.\n\n\n\n## Example Usage\n\n### Iam Access Boundary Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: project.orgId.apply(orgId =\u003e `organizations/${orgId}`),\n title: \"my policy\",\n});\nconst test_access = new gcp.accesscontextmanager.AccessLevel(\"test-access\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\nconst example = new gcp.iam.AccessBoundaryPolicy(\"example\", {\n parent: std.urlencodeOutput({\n input: pulumi.interpolate`cloudresourcemanager.googleapis.com/projects/${project.projectId}`,\n }).apply(invoke =\u003e invoke.result),\n name: \"my-ab-policy\",\n displayName: \"My AB policy\",\n rules: [{\n description: \"AB rule\",\n accessBoundaryRule: {\n availableResource: \"*\",\n availablePermissions: [\"*\"],\n availabilityCondition: {\n title: \"Access level expr\",\n expression: pulumi.all([project.orgId, test_access.name]).apply(([orgId, name]) =\u003e `request.matchAccessLevels('${orgId}', ['${name}'])`),\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.Project(\"project\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=project.org_id.apply(lambda org_id: f\"organizations/{org_id}\"),\n title=\"my policy\")\ntest_access = gcp.accesscontextmanager.AccessLevel(\"test-access\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\nexample = gcp.iam.AccessBoundaryPolicy(\"example\",\n parent=std.urlencode_output(input=project.project_id.apply(lambda project_id: f\"cloudresourcemanager.googleapis.com/projects/{project_id}\")).apply(lambda invoke: invoke.result),\n name=\"my-ab-policy\",\n display_name=\"My AB policy\",\n rules=[{\n \"description\": \"AB rule\",\n \"access_boundary_rule\": {\n \"available_resource\": \"*\",\n \"available_permissions\": [\"*\"],\n \"availability_condition\": {\n \"title\": \"Access level expr\",\n \"expression\": pulumi.Output.all(\n org_id=project.org_id,\n name=test_access.name\n).apply(lambda resolved_outputs: f\"request.matchAccessLevels('{resolved_outputs['org_id']}', ['{resolved_outputs['name']}'])\")\n,\n },\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = project.OrgId.Apply(orgId =\u003e $\"organizations/{orgId}\"),\n Title = \"my policy\",\n });\n\n var test_access = new Gcp.AccessContextManager.AccessLevel(\"test-access\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n var example = new Gcp.Iam.AccessBoundaryPolicy(\"example\", new()\n {\n Parent = Std.Urlencode.Invoke(new()\n {\n Input = project.ProjectId.Apply(projectId =\u003e $\"cloudresourcemanager.googleapis.com/projects/{projectId}\"),\n }).Apply(invoke =\u003e invoke.Result),\n Name = \"my-ab-policy\",\n DisplayName = \"My AB policy\",\n Rules = new[]\n {\n new Gcp.Iam.Inputs.AccessBoundaryPolicyRuleArgs\n {\n Description = \"AB rule\",\n AccessBoundaryRule = new Gcp.Iam.Inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleArgs\n {\n AvailableResource = \"*\",\n AvailablePermissions = new[]\n {\n \"*\",\n },\n AvailabilityCondition = new Gcp.Iam.Inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs\n {\n Title = \"Access level expr\",\n Expression = Output.Tuple(project.OrgId, test_access.Name).Apply(values =\u003e\n {\n var orgId = values.Item1;\n var name = values.Item2;\n return $\"request.matchAccessLevels('{orgId}', ['{name}'])\";\n }),\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/iam\"\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.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: project.OrgId.ApplyT(func(orgId *string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"organizations/%v\", orgId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.NewAccessLevel(ctx, \"test-access\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewAccessBoundaryPolicy(ctx, \"example\", \u0026iam.AccessBoundaryPolicyArgs{\n\t\t\tParent: pulumi.String(std.UrlencodeOutput(ctx, std.UrlencodeOutputArgs{\n\t\t\t\tInput: project.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"cloudresourcemanager.googleapis.com/projects/%v\", projectId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t}, nil).ApplyT(func(invoke std.UrlencodeResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tName: pulumi.String(\"my-ab-policy\"),\n\t\t\tDisplayName: pulumi.String(\"My AB policy\"),\n\t\t\tRules: iam.AccessBoundaryPolicyRuleArray{\n\t\t\t\t\u0026iam.AccessBoundaryPolicyRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"AB rule\"),\n\t\t\t\t\tAccessBoundaryRule: \u0026iam.AccessBoundaryPolicyRuleAccessBoundaryRuleArgs{\n\t\t\t\t\t\tAvailableResource: pulumi.String(\"*\"),\n\t\t\t\t\t\tAvailablePermissions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAvailabilityCondition: \u0026iam.AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs{\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Access level expr\"),\n\t\t\t\t\t\t\tExpression: pulumi.All(project.OrgId, test_access.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\t\torgId := _args[0].(*string)\n\t\t\t\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"request.matchAccessLevels('%v', ['%v'])\", orgId, name), nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.iam.AccessBoundaryPolicy;\nimport com.pulumi.gcp.iam.AccessBoundaryPolicyArgs;\nimport com.pulumi.gcp.iam.inputs.AccessBoundaryPolicyRuleArgs;\nimport com.pulumi.gcp.iam.inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleArgs;\nimport com.pulumi.gcp.iam.inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(project.orgId().applyValue(orgId -\u003e String.format(\"organizations/%s\", orgId)))\n .title(\"my policy\")\n .build());\n\n var test_access = new AccessLevel(\"test-access\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n var example = new AccessBoundaryPolicy(\"example\", AccessBoundaryPolicyArgs.builder()\n .parent(StdFunctions.urlencode().applyValue(invoke -\u003e invoke.result()))\n .name(\"my-ab-policy\")\n .displayName(\"My AB policy\")\n .rules(AccessBoundaryPolicyRuleArgs.builder()\n .description(\"AB rule\")\n .accessBoundaryRule(AccessBoundaryPolicyRuleAccessBoundaryRuleArgs.builder()\n .availableResource(\"*\")\n .availablePermissions(\"*\")\n .availabilityCondition(AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs.builder()\n .title(\"Access level expr\")\n .expression(Output.tuple(project.orgId(), test_access.name()).applyValue(values -\u003e {\n var orgId = values.t1;\n var name = values.t2;\n return String.format(\"request.matchAccessLevels('%s', ['%s'])\", orgId,name);\n }))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n test-access:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/${project.orgId}\n title: my policy\n example:\n type: gcp:iam:AccessBoundaryPolicy\n properties:\n parent:\n fn::invoke:\n function: std:urlencode\n arguments:\n input: cloudresourcemanager.googleapis.com/projects/${project.projectId}\n return: result\n name: my-ab-policy\n displayName: My AB policy\n rules:\n - description: AB rule\n accessBoundaryRule:\n availableResource: '*'\n availablePermissions:\n - '*'\n availabilityCondition:\n title: Access level expr\n expression: request.matchAccessLevels('${project.orgId}', ['${[\"test-access\"].name}'])\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAccessBoundaryPolicy can be imported using any of these accepted formats:\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, AccessBoundaryPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/accessBoundaryPolicy:AccessBoundaryPolicy default {{parent}}/{{name}}\n```\n\n", + "description": "Represents a collection of access boundary policies to apply to a given resource.\n**NOTE**: This is a private feature and users should contact GCP support\nif they would like to test it.\n\n\n\n## Example Usage\n\n### Iam Access Boundary Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst access_policy = new gcp.accesscontextmanager.AccessPolicy(\"access-policy\", {\n parent: project.orgId.apply(orgId =\u003e `organizations/${orgId}`),\n title: \"my policy\",\n});\nconst test_access = new gcp.accesscontextmanager.AccessLevel(\"test-access\", {\n parent: pulumi.interpolate`accessPolicies/${access_policy.name}`,\n name: pulumi.interpolate`accessPolicies/${access_policy.name}/accessLevels/chromeos_no_lock`,\n title: \"chromeos_no_lock\",\n basic: {\n conditions: [{\n devicePolicy: {\n requireScreenLock: true,\n osConstraints: [{\n osType: \"DESKTOP_CHROME_OS\",\n }],\n },\n regions: [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n },\n});\nconst example = new gcp.iam.AccessBoundaryPolicy(\"example\", {\n parent: std.urlencodeOutput({\n input: pulumi.interpolate`cloudresourcemanager.googleapis.com/projects/${project.projectId}`,\n }).apply(invoke =\u003e invoke.result),\n name: \"my-ab-policy\",\n displayName: \"My AB policy\",\n rules: [{\n description: \"AB rule\",\n accessBoundaryRule: {\n availableResource: \"*\",\n availablePermissions: [\"*\"],\n availabilityCondition: {\n title: \"Access level expr\",\n expression: pulumi.all([project.orgId, test_access.name]).apply(([orgId, name]) =\u003e `request.matchAccessLevels('${orgId}', ['${name}'])`),\n },\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.Project(\"project\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\naccess_policy = gcp.accesscontextmanager.AccessPolicy(\"access-policy\",\n parent=project.org_id.apply(lambda org_id: f\"organizations/{org_id}\"),\n title=\"my policy\")\ntest_access = gcp.accesscontextmanager.AccessLevel(\"test-access\",\n parent=access_policy.name.apply(lambda name: f\"accessPolicies/{name}\"),\n name=access_policy.name.apply(lambda name: f\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n title=\"chromeos_no_lock\",\n basic={\n \"conditions\": [{\n \"device_policy\": {\n \"require_screen_lock\": True,\n \"os_constraints\": [{\n \"os_type\": \"DESKTOP_CHROME_OS\",\n }],\n },\n \"regions\": [\n \"CH\",\n \"IT\",\n \"US\",\n ],\n }],\n })\nexample = gcp.iam.AccessBoundaryPolicy(\"example\",\n parent=std.urlencode_output(input=project.project_id.apply(lambda project_id: f\"cloudresourcemanager.googleapis.com/projects/{project_id}\")).apply(lambda invoke: invoke.result),\n name=\"my-ab-policy\",\n display_name=\"My AB policy\",\n rules=[{\n \"description\": \"AB rule\",\n \"access_boundary_rule\": {\n \"available_resource\": \"*\",\n \"available_permissions\": [\"*\"],\n \"availability_condition\": {\n \"title\": \"Access level expr\",\n \"expression\": pulumi.Output.all(\n org_id=project.org_id,\n name=test_access.name\n).apply(lambda resolved_outputs: f\"request.matchAccessLevels('{resolved_outputs['org_id']}', ['{resolved_outputs['name']}'])\")\n,\n },\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var access_policy = new Gcp.AccessContextManager.AccessPolicy(\"access-policy\", new()\n {\n Parent = project.OrgId.Apply(orgId =\u003e $\"organizations/{orgId}\"),\n Title = \"my policy\",\n });\n\n var test_access = new Gcp.AccessContextManager.AccessLevel(\"test-access\", new()\n {\n Parent = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}\"),\n Name = access_policy.Name.Apply(name =\u003e $\"accessPolicies/{name}/accessLevels/chromeos_no_lock\"),\n Title = \"chromeos_no_lock\",\n Basic = new Gcp.AccessContextManager.Inputs.AccessLevelBasicArgs\n {\n Conditions = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionArgs\n {\n DevicePolicy = new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyArgs\n {\n RequireScreenLock = true,\n OsConstraints = new[]\n {\n new Gcp.AccessContextManager.Inputs.AccessLevelBasicConditionDevicePolicyOsConstraintArgs\n {\n OsType = \"DESKTOP_CHROME_OS\",\n },\n },\n },\n Regions = new[]\n {\n \"CH\",\n \"IT\",\n \"US\",\n },\n },\n },\n },\n });\n\n var example = new Gcp.Iam.AccessBoundaryPolicy(\"example\", new()\n {\n Parent = Std.Urlencode.Invoke(new()\n {\n Input = project.ProjectId.Apply(projectId =\u003e $\"cloudresourcemanager.googleapis.com/projects/{projectId}\"),\n }).Apply(invoke =\u003e invoke.Result),\n Name = \"my-ab-policy\",\n DisplayName = \"My AB policy\",\n Rules = new[]\n {\n new Gcp.Iam.Inputs.AccessBoundaryPolicyRuleArgs\n {\n Description = \"AB rule\",\n AccessBoundaryRule = new Gcp.Iam.Inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleArgs\n {\n AvailableResource = \"*\",\n AvailablePermissions = new[]\n {\n \"*\",\n },\n AvailabilityCondition = new Gcp.Iam.Inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs\n {\n Title = \"Access level expr\",\n Expression = Output.Tuple(project.OrgId, test_access.Name).Apply(values =\u003e\n {\n var orgId = values.Item1;\n var name = values.Item2;\n return $\"request.matchAccessLevels('{orgId}', ['{name}'])\";\n }),\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/iam\"\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.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taccess_policy, err := accesscontextmanager.NewAccessPolicy(ctx, \"access-policy\", \u0026accesscontextmanager.AccessPolicyArgs{\n\t\t\tParent: project.OrgId.ApplyT(func(orgId *string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"organizations/%v\", orgId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"my policy\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest_access, err := accesscontextmanager.NewAccessLevel(ctx, \"test-access\", \u0026accesscontextmanager.AccessLevelArgs{\n\t\t\tParent: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tName: access_policy.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"accessPolicies/%v/accessLevels/chromeos_no_lock\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tTitle: pulumi.String(\"chromeos_no_lock\"),\n\t\t\tBasic: \u0026accesscontextmanager.AccessLevelBasicArgs{\n\t\t\t\tConditions: accesscontextmanager.AccessLevelBasicConditionArray{\n\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionArgs{\n\t\t\t\t\t\tDevicePolicy: \u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyArgs{\n\t\t\t\t\t\t\tRequireScreenLock: pulumi.Bool(true),\n\t\t\t\t\t\t\tOsConstraints: accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArray{\n\t\t\t\t\t\t\t\t\u0026accesscontextmanager.AccessLevelBasicConditionDevicePolicyOsConstraintArgs{\n\t\t\t\t\t\t\t\t\tOsType: pulumi.String(\"DESKTOP_CHROME_OS\"),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tRegions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"CH\"),\n\t\t\t\t\t\t\tpulumi.String(\"IT\"),\n\t\t\t\t\t\t\tpulumi.String(\"US\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewAccessBoundaryPolicy(ctx, \"example\", \u0026iam.AccessBoundaryPolicyArgs{\n\t\t\tParent: pulumi.String(std.UrlencodeOutput(ctx, std.UrlencodeOutputArgs{\n\t\t\t\tInput: project.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"cloudresourcemanager.googleapis.com/projects/%v\", projectId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t}, nil).ApplyT(func(invoke std.UrlencodeResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tName: pulumi.String(\"my-ab-policy\"),\n\t\t\tDisplayName: pulumi.String(\"My AB policy\"),\n\t\t\tRules: iam.AccessBoundaryPolicyRuleArray{\n\t\t\t\t\u0026iam.AccessBoundaryPolicyRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"AB rule\"),\n\t\t\t\t\tAccessBoundaryRule: \u0026iam.AccessBoundaryPolicyRuleAccessBoundaryRuleArgs{\n\t\t\t\t\t\tAvailableResource: pulumi.String(\"*\"),\n\t\t\t\t\t\tAvailablePermissions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"*\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAvailabilityCondition: \u0026iam.AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs{\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Access level expr\"),\n\t\t\t\t\t\t\tExpression: pulumi.All(project.OrgId, test_access.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\t\torgId := _args[0].(*string)\n\t\t\t\t\t\t\t\tname := _args[1].(string)\n\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"request.matchAccessLevels('%v', ['%v'])\", orgId, name), nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicy;\nimport com.pulumi.gcp.accesscontextmanager.AccessPolicyArgs;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevel;\nimport com.pulumi.gcp.accesscontextmanager.AccessLevelArgs;\nimport com.pulumi.gcp.accesscontextmanager.inputs.AccessLevelBasicArgs;\nimport com.pulumi.gcp.iam.AccessBoundaryPolicy;\nimport com.pulumi.gcp.iam.AccessBoundaryPolicyArgs;\nimport com.pulumi.gcp.iam.inputs.AccessBoundaryPolicyRuleArgs;\nimport com.pulumi.gcp.iam.inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleArgs;\nimport com.pulumi.gcp.iam.inputs.AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var access_policy = new AccessPolicy(\"access-policy\", AccessPolicyArgs.builder()\n .parent(project.orgId().applyValue(orgId -\u003e String.format(\"organizations/%s\", orgId)))\n .title(\"my policy\")\n .build());\n\n var test_access = new AccessLevel(\"test-access\", AccessLevelArgs.builder()\n .parent(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s\", name)))\n .name(access_policy.name().applyValue(name -\u003e String.format(\"accessPolicies/%s/accessLevels/chromeos_no_lock\", name)))\n .title(\"chromeos_no_lock\")\n .basic(AccessLevelBasicArgs.builder()\n .conditions(AccessLevelBasicConditionArgs.builder()\n .devicePolicy(AccessLevelBasicConditionDevicePolicyArgs.builder()\n .requireScreenLock(true)\n .osConstraints(AccessLevelBasicConditionDevicePolicyOsConstraintArgs.builder()\n .osType(\"DESKTOP_CHROME_OS\")\n .build())\n .build())\n .regions( \n \"CH\",\n \"IT\",\n \"US\")\n .build())\n .build())\n .build());\n\n var example = new AccessBoundaryPolicy(\"example\", AccessBoundaryPolicyArgs.builder()\n .parent(StdFunctions.urlencode().applyValue(invoke -\u003e invoke.result()))\n .name(\"my-ab-policy\")\n .displayName(\"My AB policy\")\n .rules(AccessBoundaryPolicyRuleArgs.builder()\n .description(\"AB rule\")\n .accessBoundaryRule(AccessBoundaryPolicyRuleAccessBoundaryRuleArgs.builder()\n .availableResource(\"*\")\n .availablePermissions(\"*\")\n .availabilityCondition(AccessBoundaryPolicyRuleAccessBoundaryRuleAvailabilityConditionArgs.builder()\n .title(\"Access level expr\")\n .expression(Output.tuple(project.orgId(), test_access.name()).applyValue(values -\u003e {\n var orgId = values.t1;\n var name = values.t2;\n return String.format(\"request.matchAccessLevels('%s', ['%s'])\", orgId,name);\n }))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n test-access:\n type: gcp:accesscontextmanager:AccessLevel\n properties:\n parent: accessPolicies/${[\"access-policy\"].name}\n name: accessPolicies/${[\"access-policy\"].name}/accessLevels/chromeos_no_lock\n title: chromeos_no_lock\n basic:\n conditions:\n - devicePolicy:\n requireScreenLock: true\n osConstraints:\n - osType: DESKTOP_CHROME_OS\n regions:\n - CH\n - IT\n - US\n access-policy:\n type: gcp:accesscontextmanager:AccessPolicy\n properties:\n parent: organizations/${project.orgId}\n title: my policy\n example:\n type: gcp:iam:AccessBoundaryPolicy\n properties:\n parent:\n fn::invoke:\n function: std:urlencode\n arguments:\n input: cloudresourcemanager.googleapis.com/projects/${project.projectId}\n return: result\n name: my-ab-policy\n displayName: My AB policy\n rules:\n - description: AB rule\n accessBoundaryRule:\n availableResource: '*'\n availablePermissions:\n - '*'\n availabilityCondition:\n title: Access level expr\n expression: request.matchAccessLevels('${project.orgId}', ['${[\"test-access\"].name}'])\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAccessBoundaryPolicy can be imported using any of these accepted formats:\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, AccessBoundaryPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/accessBoundaryPolicy:AccessBoundaryPolicy default {{parent}}/{{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -233223,7 +233223,7 @@ } }, "gcp:iam/denyPolicy:DenyPolicy": { - "description": "Represents a collection of denial policies to apply to a given resource.\n\n\nTo get more information about DenyPolicy, see:\n\n* [API documentation](https://cloud.google.com/iam/docs/reference/rest/v2/policies)\n* How-to Guides\n * [Permissions supported in deny policies](https://cloud.google.com/iam/docs/deny-permissions-support)\n\n## Example Usage\n\n### Iam Deny Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst test_account = new gcp.serviceaccount.Account(\"test-account\", {\n accountId: \"svc-acc\",\n displayName: \"Test Service Account\",\n project: project.projectId,\n});\nconst example = new gcp.iam.DenyPolicy(\"example\", {\n parent: std.urlencodeOutput({\n input: pulumi.interpolate`cloudresourcemanager.googleapis.com/projects/${project.projectId}`,\n }).apply(invoke =\u003e invoke.result),\n name: \"my-deny-policy\",\n displayName: \"A deny rule\",\n rules: [\n {\n description: \"First rule\",\n denyRule: {\n deniedPrincipals: [\"principalSet://goog/public:all\"],\n denialCondition: {\n title: \"Some expr\",\n expression: \"!resource.matchTag('12345678/env', 'test')\",\n },\n deniedPermissions: [\"cloudresourcemanager.googleapis.com/projects.update\"],\n },\n },\n {\n description: \"Second rule\",\n denyRule: {\n deniedPrincipals: [\"principalSet://goog/public:all\"],\n denialCondition: {\n title: \"Some expr\",\n expression: \"!resource.matchTag('12345678/env', 'test')\",\n },\n deniedPermissions: [\"cloudresourcemanager.googleapis.com/projects.update\"],\n exceptionPrincipals: [pulumi.interpolate`principal://iam.googleapis.com/projects/-/serviceAccounts/${test_account.email}`],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.Project(\"project\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\ntest_account = gcp.serviceaccount.Account(\"test-account\",\n account_id=\"svc-acc\",\n display_name=\"Test Service Account\",\n project=project.project_id)\nexample = gcp.iam.DenyPolicy(\"example\",\n parent=std.urlencode_output(input=project.project_id.apply(lambda project_id: f\"cloudresourcemanager.googleapis.com/projects/{project_id}\")).apply(lambda invoke: invoke.result),\n name=\"my-deny-policy\",\n display_name=\"A deny rule\",\n rules=[\n {\n \"description\": \"First rule\",\n \"deny_rule\": {\n \"denied_principals\": [\"principalSet://goog/public:all\"],\n \"denial_condition\": {\n \"title\": \"Some expr\",\n \"expression\": \"!resource.matchTag('12345678/env', 'test')\",\n },\n \"denied_permissions\": [\"cloudresourcemanager.googleapis.com/projects.update\"],\n },\n },\n {\n \"description\": \"Second rule\",\n \"deny_rule\": {\n \"denied_principals\": [\"principalSet://goog/public:all\"],\n \"denial_condition\": {\n \"title\": \"Some expr\",\n \"expression\": \"!resource.matchTag('12345678/env', 'test')\",\n },\n \"denied_permissions\": [\"cloudresourcemanager.googleapis.com/projects.update\"],\n \"exception_principals\": [test_account.email.apply(lambda email: f\"principal://iam.googleapis.com/projects/-/serviceAccounts/{email}\")],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var test_account = new Gcp.ServiceAccount.Account(\"test-account\", new()\n {\n AccountId = \"svc-acc\",\n DisplayName = \"Test Service Account\",\n Project = project.ProjectId,\n });\n\n var example = new Gcp.Iam.DenyPolicy(\"example\", new()\n {\n Parent = Std.Urlencode.Invoke(new()\n {\n Input = project.ProjectId.Apply(projectId =\u003e $\"cloudresourcemanager.googleapis.com/projects/{projectId}\"),\n }).Apply(invoke =\u003e invoke.Result),\n Name = \"my-deny-policy\",\n DisplayName = \"A deny rule\",\n Rules = new[]\n {\n new Gcp.Iam.Inputs.DenyPolicyRuleArgs\n {\n Description = \"First rule\",\n DenyRule = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleArgs\n {\n DeniedPrincipals = new[]\n {\n \"principalSet://goog/public:all\",\n },\n DenialCondition = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleDenialConditionArgs\n {\n Title = \"Some expr\",\n Expression = \"!resource.matchTag('12345678/env', 'test')\",\n },\n DeniedPermissions = new[]\n {\n \"cloudresourcemanager.googleapis.com/projects.update\",\n },\n },\n },\n new Gcp.Iam.Inputs.DenyPolicyRuleArgs\n {\n Description = \"Second rule\",\n DenyRule = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleArgs\n {\n DeniedPrincipals = new[]\n {\n \"principalSet://goog/public:all\",\n },\n DenialCondition = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleDenialConditionArgs\n {\n Title = \"Some expr\",\n Expression = \"!resource.matchTag('12345678/env', 'test')\",\n },\n DeniedPermissions = new[]\n {\n \"cloudresourcemanager.googleapis.com/projects.update\",\n },\n ExceptionPrincipals = new[]\n {\n test_account.Email.Apply(email =\u003e $\"principal://iam.googleapis.com/projects/-/serviceAccounts/{email}\"),\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/iam\"\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-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = serviceaccount.NewAccount(ctx, \"test-account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"svc-acc\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t\tProject: project.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewDenyPolicy(ctx, \"example\", \u0026iam.DenyPolicyArgs{\n\t\t\tParent: pulumi.String(std.UrlencodeOutput(ctx, std.UrlencodeOutputArgs{\n\t\t\t\tInput: project.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"cloudresourcemanager.googleapis.com/projects/%v\", projectId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t}, nil).ApplyT(func(invoke std.UrlencodeResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tName: pulumi.String(\"my-deny-policy\"),\n\t\t\tDisplayName: pulumi.String(\"A deny rule\"),\n\t\t\tRules: iam.DenyPolicyRuleArray{\n\t\t\t\t\u0026iam.DenyPolicyRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"First rule\"),\n\t\t\t\t\tDenyRule: \u0026iam.DenyPolicyRuleDenyRuleArgs{\n\t\t\t\t\t\tDeniedPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"principalSet://goog/public:all\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDenialCondition: \u0026iam.DenyPolicyRuleDenyRuleDenialConditionArgs{\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Some expr\"),\n\t\t\t\t\t\t\tExpression: pulumi.String(\"!resource.matchTag('12345678/env', 'test')\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDeniedPermissions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com/projects.update\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.DenyPolicyRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Second rule\"),\n\t\t\t\t\tDenyRule: \u0026iam.DenyPolicyRuleDenyRuleArgs{\n\t\t\t\t\t\tDeniedPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"principalSet://goog/public:all\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDenialCondition: \u0026iam.DenyPolicyRuleDenyRuleDenialConditionArgs{\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Some expr\"),\n\t\t\t\t\t\t\tExpression: pulumi.String(\"!resource.matchTag('12345678/env', 'test')\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDeniedPermissions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com/projects.update\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExceptionPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\ttest_account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"principal://iam.googleapis.com/projects/-/serviceAccounts/%v\", email), nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.iam.DenyPolicy;\nimport com.pulumi.gcp.iam.DenyPolicyArgs;\nimport com.pulumi.gcp.iam.inputs.DenyPolicyRuleArgs;\nimport com.pulumi.gcp.iam.inputs.DenyPolicyRuleDenyRuleArgs;\nimport com.pulumi.gcp.iam.inputs.DenyPolicyRuleDenyRuleDenialConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var test_account = new Account(\"test-account\", AccountArgs.builder()\n .accountId(\"svc-acc\")\n .displayName(\"Test Service Account\")\n .project(project.projectId())\n .build());\n\n var example = new DenyPolicy(\"example\", DenyPolicyArgs.builder()\n .parent(StdFunctions.urlencode().applyValue(invoke -\u003e invoke.result()))\n .name(\"my-deny-policy\")\n .displayName(\"A deny rule\")\n .rules( \n DenyPolicyRuleArgs.builder()\n .description(\"First rule\")\n .denyRule(DenyPolicyRuleDenyRuleArgs.builder()\n .deniedPrincipals(\"principalSet://goog/public:all\")\n .denialCondition(DenyPolicyRuleDenyRuleDenialConditionArgs.builder()\n .title(\"Some expr\")\n .expression(\"!resource.matchTag('12345678/env', 'test')\")\n .build())\n .deniedPermissions(\"cloudresourcemanager.googleapis.com/projects.update\")\n .build())\n .build(),\n DenyPolicyRuleArgs.builder()\n .description(\"Second rule\")\n .denyRule(DenyPolicyRuleDenyRuleArgs.builder()\n .deniedPrincipals(\"principalSet://goog/public:all\")\n .denialCondition(DenyPolicyRuleDenyRuleDenialConditionArgs.builder()\n .title(\"Some expr\")\n .expression(\"!resource.matchTag('12345678/env', 'test')\")\n .build())\n .deniedPermissions(\"cloudresourcemanager.googleapis.com/projects.update\")\n .exceptionPrincipals(test_account.email().applyValue(email -\u003e String.format(\"principal://iam.googleapis.com/projects/-/serviceAccounts/%s\", email)))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n example:\n type: gcp:iam:DenyPolicy\n properties:\n parent:\n fn::invoke:\n function: std:urlencode\n arguments:\n input: cloudresourcemanager.googleapis.com/projects/${project.projectId}\n return: result\n name: my-deny-policy\n displayName: A deny rule\n rules:\n - description: First rule\n denyRule:\n deniedPrincipals:\n - principalSet://goog/public:all\n denialCondition:\n title: Some expr\n expression: '!resource.matchTag(''12345678/env'', ''test'')'\n deniedPermissions:\n - cloudresourcemanager.googleapis.com/projects.update\n - description: Second rule\n denyRule:\n deniedPrincipals:\n - principalSet://goog/public:all\n denialCondition:\n title: Some expr\n expression: '!resource.matchTag(''12345678/env'', ''test'')'\n deniedPermissions:\n - cloudresourcemanager.googleapis.com/projects.update\n exceptionPrincipals:\n - principal://iam.googleapis.com/projects/-/serviceAccounts/${[\"test-account\"].email}\n test-account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: svc-acc\n displayName: Test Service Account\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDenyPolicy can be imported using any of these accepted formats:\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, DenyPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/denyPolicy:DenyPolicy default {{parent}}/{{name}}\n```\n\n", + "description": "Represents a collection of denial policies to apply to a given resource.\n\n\nTo get more information about DenyPolicy, see:\n\n* [API documentation](https://cloud.google.com/iam/docs/reference/rest/v2/policies)\n* How-to Guides\n * [Permissions supported in deny policies](https://cloud.google.com/iam/docs/deny-permissions-support)\n\n## Example Usage\n\n### Iam Deny Policy Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"my-project\",\n name: \"my-project\",\n orgId: \"123456789\",\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n});\nconst test_account = new gcp.serviceaccount.Account(\"test-account\", {\n accountId: \"svc-acc\",\n displayName: \"Test Service Account\",\n project: project.projectId,\n});\nconst example = new gcp.iam.DenyPolicy(\"example\", {\n parent: std.urlencodeOutput({\n input: pulumi.interpolate`cloudresourcemanager.googleapis.com/projects/${project.projectId}`,\n }).apply(invoke =\u003e invoke.result),\n name: \"my-deny-policy\",\n displayName: \"A deny rule\",\n rules: [\n {\n description: \"First rule\",\n denyRule: {\n deniedPrincipals: [\"principalSet://goog/public:all\"],\n denialCondition: {\n title: \"Some expr\",\n expression: \"!resource.matchTag('12345678/env', 'test')\",\n },\n deniedPermissions: [\"cloudresourcemanager.googleapis.com/projects.update\"],\n },\n },\n {\n description: \"Second rule\",\n denyRule: {\n deniedPrincipals: [\"principalSet://goog/public:all\"],\n denialCondition: {\n title: \"Some expr\",\n expression: \"!resource.matchTag('12345678/env', 'test')\",\n },\n deniedPermissions: [\"cloudresourcemanager.googleapis.com/projects.update\"],\n exceptionPrincipals: [pulumi.interpolate`principal://iam.googleapis.com/projects/-/serviceAccounts/${test_account.email}`],\n },\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nproject = gcp.organizations.Project(\"project\",\n project_id=\"my-project\",\n name=\"my-project\",\n org_id=\"123456789\",\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\")\ntest_account = gcp.serviceaccount.Account(\"test-account\",\n account_id=\"svc-acc\",\n display_name=\"Test Service Account\",\n project=project.project_id)\nexample = gcp.iam.DenyPolicy(\"example\",\n parent=std.urlencode_output(input=project.project_id.apply(lambda project_id: f\"cloudresourcemanager.googleapis.com/projects/{project_id}\")).apply(lambda invoke: invoke.result),\n name=\"my-deny-policy\",\n display_name=\"A deny rule\",\n rules=[\n {\n \"description\": \"First rule\",\n \"deny_rule\": {\n \"denied_principals\": [\"principalSet://goog/public:all\"],\n \"denial_condition\": {\n \"title\": \"Some expr\",\n \"expression\": \"!resource.matchTag('12345678/env', 'test')\",\n },\n \"denied_permissions\": [\"cloudresourcemanager.googleapis.com/projects.update\"],\n },\n },\n {\n \"description\": \"Second rule\",\n \"deny_rule\": {\n \"denied_principals\": [\"principalSet://goog/public:all\"],\n \"denial_condition\": {\n \"title\": \"Some expr\",\n \"expression\": \"!resource.matchTag('12345678/env', 'test')\",\n },\n \"denied_permissions\": [\"cloudresourcemanager.googleapis.com/projects.update\"],\n \"exception_principals\": [test_account.email.apply(lambda email: f\"principal://iam.googleapis.com/projects/-/serviceAccounts/{email}\")],\n },\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = new Gcp.Organizations.Project(\"project\", new()\n {\n ProjectId = \"my-project\",\n Name = \"my-project\",\n OrgId = \"123456789\",\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n });\n\n var test_account = new Gcp.ServiceAccount.Account(\"test-account\", new()\n {\n AccountId = \"svc-acc\",\n DisplayName = \"Test Service Account\",\n Project = project.ProjectId,\n });\n\n var example = new Gcp.Iam.DenyPolicy(\"example\", new()\n {\n Parent = Std.Urlencode.Invoke(new()\n {\n Input = project.ProjectId.Apply(projectId =\u003e $\"cloudresourcemanager.googleapis.com/projects/{projectId}\"),\n }).Apply(invoke =\u003e invoke.Result),\n Name = \"my-deny-policy\",\n DisplayName = \"A deny rule\",\n Rules = new[]\n {\n new Gcp.Iam.Inputs.DenyPolicyRuleArgs\n {\n Description = \"First rule\",\n DenyRule = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleArgs\n {\n DeniedPrincipals = new[]\n {\n \"principalSet://goog/public:all\",\n },\n DenialCondition = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleDenialConditionArgs\n {\n Title = \"Some expr\",\n Expression = \"!resource.matchTag('12345678/env', 'test')\",\n },\n DeniedPermissions = new[]\n {\n \"cloudresourcemanager.googleapis.com/projects.update\",\n },\n },\n },\n new Gcp.Iam.Inputs.DenyPolicyRuleArgs\n {\n Description = \"Second rule\",\n DenyRule = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleArgs\n {\n DeniedPrincipals = new[]\n {\n \"principalSet://goog/public:all\",\n },\n DenialCondition = new Gcp.Iam.Inputs.DenyPolicyRuleDenyRuleDenialConditionArgs\n {\n Title = \"Some expr\",\n Expression = \"!resource.matchTag('12345678/env', 'test')\",\n },\n DeniedPermissions = new[]\n {\n \"cloudresourcemanager.googleapis.com/projects.update\",\n },\n ExceptionPrincipals = new[]\n {\n test_account.Email.Apply(email =\u003e $\"principal://iam.googleapis.com/projects/-/serviceAccounts/{email}\"),\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/iam\"\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-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.NewProject(ctx, \"project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"my-project\"),\n\t\t\tName: pulumi.String(\"my-project\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttest_account, err := serviceaccount.NewAccount(ctx, \"test-account\", \u0026serviceaccount.AccountArgs{\n\t\t\tAccountId: pulumi.String(\"svc-acc\"),\n\t\t\tDisplayName: pulumi.String(\"Test Service Account\"),\n\t\t\tProject: project.ProjectId,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iam.NewDenyPolicy(ctx, \"example\", \u0026iam.DenyPolicyArgs{\n\t\t\tParent: pulumi.String(std.UrlencodeOutput(ctx, std.UrlencodeOutputArgs{\n\t\t\t\tInput: project.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\t\treturn fmt.Sprintf(\"cloudresourcemanager.googleapis.com/projects/%v\", projectId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t}, nil).ApplyT(func(invoke std.UrlencodeResult) (*string, error) {\n\t\t\t\treturn invoke.Result, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tName: pulumi.String(\"my-deny-policy\"),\n\t\t\tDisplayName: pulumi.String(\"A deny rule\"),\n\t\t\tRules: iam.DenyPolicyRuleArray{\n\t\t\t\t\u0026iam.DenyPolicyRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"First rule\"),\n\t\t\t\t\tDenyRule: \u0026iam.DenyPolicyRuleDenyRuleArgs{\n\t\t\t\t\t\tDeniedPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"principalSet://goog/public:all\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDenialCondition: \u0026iam.DenyPolicyRuleDenyRuleDenialConditionArgs{\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Some expr\"),\n\t\t\t\t\t\t\tExpression: pulumi.String(\"!resource.matchTag('12345678/env', 'test')\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDeniedPermissions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com/projects.update\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t\u0026iam.DenyPolicyRuleArgs{\n\t\t\t\t\tDescription: pulumi.String(\"Second rule\"),\n\t\t\t\t\tDenyRule: \u0026iam.DenyPolicyRuleDenyRuleArgs{\n\t\t\t\t\t\tDeniedPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"principalSet://goog/public:all\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDenialCondition: \u0026iam.DenyPolicyRuleDenyRuleDenialConditionArgs{\n\t\t\t\t\t\t\tTitle: pulumi.String(\"Some expr\"),\n\t\t\t\t\t\t\tExpression: pulumi.String(\"!resource.matchTag('12345678/env', 'test')\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDeniedPermissions: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"cloudresourcemanager.googleapis.com/projects.update\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExceptionPrincipals: pulumi.StringArray{\n\t\t\t\t\t\t\ttest_account.Email.ApplyT(func(email string) (string, error) {\n\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"principal://iam.googleapis.com/projects/-/serviceAccounts/%v\", email), nil\n\t\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.serviceaccount.Account;\nimport com.pulumi.gcp.serviceaccount.AccountArgs;\nimport com.pulumi.gcp.iam.DenyPolicy;\nimport com.pulumi.gcp.iam.DenyPolicyArgs;\nimport com.pulumi.gcp.iam.inputs.DenyPolicyRuleArgs;\nimport com.pulumi.gcp.iam.inputs.DenyPolicyRuleDenyRuleArgs;\nimport com.pulumi.gcp.iam.inputs.DenyPolicyRuleDenyRuleDenialConditionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var project = new Project(\"project\", ProjectArgs.builder()\n .projectId(\"my-project\")\n .name(\"my-project\")\n .orgId(\"123456789\")\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build());\n\n var test_account = new Account(\"test-account\", AccountArgs.builder()\n .accountId(\"svc-acc\")\n .displayName(\"Test Service Account\")\n .project(project.projectId())\n .build());\n\n var example = new DenyPolicy(\"example\", DenyPolicyArgs.builder()\n .parent(StdFunctions.urlencode().applyValue(invoke -\u003e invoke.result()))\n .name(\"my-deny-policy\")\n .displayName(\"A deny rule\")\n .rules( \n DenyPolicyRuleArgs.builder()\n .description(\"First rule\")\n .denyRule(DenyPolicyRuleDenyRuleArgs.builder()\n .deniedPrincipals(\"principalSet://goog/public:all\")\n .denialCondition(DenyPolicyRuleDenyRuleDenialConditionArgs.builder()\n .title(\"Some expr\")\n .expression(\"!resource.matchTag('12345678/env', 'test')\")\n .build())\n .deniedPermissions(\"cloudresourcemanager.googleapis.com/projects.update\")\n .build())\n .build(),\n DenyPolicyRuleArgs.builder()\n .description(\"Second rule\")\n .denyRule(DenyPolicyRuleDenyRuleArgs.builder()\n .deniedPrincipals(\"principalSet://goog/public:all\")\n .denialCondition(DenyPolicyRuleDenyRuleDenialConditionArgs.builder()\n .title(\"Some expr\")\n .expression(\"!resource.matchTag('12345678/env', 'test')\")\n .build())\n .deniedPermissions(\"cloudresourcemanager.googleapis.com/projects.update\")\n .exceptionPrincipals(test_account.email().applyValue(email -\u003e String.format(\"principal://iam.googleapis.com/projects/-/serviceAccounts/%s\", email)))\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n project:\n type: gcp:organizations:Project\n properties:\n projectId: my-project\n name: my-project\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n example:\n type: gcp:iam:DenyPolicy\n properties:\n parent:\n fn::invoke:\n function: std:urlencode\n arguments:\n input: cloudresourcemanager.googleapis.com/projects/${project.projectId}\n return: result\n name: my-deny-policy\n displayName: A deny rule\n rules:\n - description: First rule\n denyRule:\n deniedPrincipals:\n - principalSet://goog/public:all\n denialCondition:\n title: Some expr\n expression: '!resource.matchTag(''12345678/env'', ''test'')'\n deniedPermissions:\n - cloudresourcemanager.googleapis.com/projects.update\n - description: Second rule\n denyRule:\n deniedPrincipals:\n - principalSet://goog/public:all\n denialCondition:\n title: Some expr\n expression: '!resource.matchTag(''12345678/env'', ''test'')'\n deniedPermissions:\n - cloudresourcemanager.googleapis.com/projects.update\n exceptionPrincipals:\n - principal://iam.googleapis.com/projects/-/serviceAccounts/${[\"test-account\"].email}\n test-account:\n type: gcp:serviceaccount:Account\n properties:\n accountId: svc-acc\n displayName: Test Service Account\n project: ${project.projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nDenyPolicy can be imported using any of these accepted formats:\n\n* `{{parent}}/{{name}}`\n\nWhen using the `pulumi import` command, DenyPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iam/denyPolicy:DenyPolicy default {{parent}}/{{name}}\n```\n\n", "properties": { "displayName": { "type": "string", @@ -235640,7 +235640,7 @@ } }, "gcp:iap/settings:Settings": { - "description": "IAP settings - manage IAP settings\n\n\nTo get more information about Settings, see:\n\n* [API documentation](https://cloud.google.com/iap/docs/reference/rest/v1/IapSettings)\n* How-to Guides\n * [Customizing IAP](https://cloud.google.com/iap/docs/customizing)\n\n\n\n## Example Usage\n\n### Iap Settings Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"iap-bs-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n name: \"iap-settings-tf\",\n region: \"us-central1\",\n healthChecks: defaultHealthCheck.id,\n connectionDrainingTimeoutSec: 10,\n sessionAffinity: \"CLIENT_IP\",\n});\nconst iapSettings = new gcp.iap.Settings(\"iap_settings\", {\n name: pulumi.all([project, _default.name]).apply(([project, name]) =\u003e `projects/${project.number}/iap_web/compute-us-central1/services/${name}`),\n accessSettings: {\n identitySources: [\"WORKFORCE_IDENTITY_FEDERATION\"],\n allowedDomainsSettings: {\n domains: [\"test.abc.com\"],\n enable: true,\n },\n corsSettings: {\n allowHttpOptions: true,\n },\n reauthSettings: {\n method: \"SECURE_KEY\",\n maxAge: \"305s\",\n policyType: \"MINIMUM\",\n },\n gcipSettings: {\n loginPageUri: \"https://test.com/?apiKey=abc\",\n },\n oauthSettings: {\n loginHint: \"test\",\n },\n workforceIdentitySettings: {\n workforcePools: \"wif-pool\",\n oauth2: {\n clientId: \"test-client-id\",\n clientSecret: \"test-client-secret\",\n },\n },\n },\n applicationSettings: {\n cookieDomain: \"test.abc.com\",\n csmSettings: {\n rctokenAud: \"test-aud-set\",\n },\n accessDeniedPageSettings: {\n accessDeniedPageUri: \"test-uri\",\n generateTroubleshootingUri: true,\n remediationTokenGenerationEnabled: false,\n },\n attributePropagationSettings: {\n outputCredentials: [\"HEADER\"],\n expression: \"attributes.saml_attributes.filter(attribute, attribute.name in [\\\"test1\\\", \\\"test2\\\"])\",\n enable: false,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"iap-bs-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n name=\"iap-settings-tf\",\n region=\"us-central1\",\n health_checks=default_health_check.id,\n connection_draining_timeout_sec=10,\n session_affinity=\"CLIENT_IP\")\niap_settings = gcp.iap.Settings(\"iap_settings\",\n name=default.name.apply(lambda name: f\"projects/{project.number}/iap_web/compute-us-central1/services/{name}\"),\n access_settings={\n \"identity_sources\": [\"WORKFORCE_IDENTITY_FEDERATION\"],\n \"allowed_domains_settings\": {\n \"domains\": [\"test.abc.com\"],\n \"enable\": True,\n },\n \"cors_settings\": {\n \"allow_http_options\": True,\n },\n \"reauth_settings\": {\n \"method\": \"SECURE_KEY\",\n \"max_age\": \"305s\",\n \"policy_type\": \"MINIMUM\",\n },\n \"gcip_settings\": {\n \"login_page_uri\": \"https://test.com/?apiKey=abc\",\n },\n \"oauth_settings\": {\n \"login_hint\": \"test\",\n },\n \"workforce_identity_settings\": {\n \"workforce_pools\": \"wif-pool\",\n \"oauth2\": {\n \"client_id\": \"test-client-id\",\n \"client_secret\": \"test-client-secret\",\n },\n },\n },\n application_settings={\n \"cookie_domain\": \"test.abc.com\",\n \"csm_settings\": {\n \"rctoken_aud\": \"test-aud-set\",\n },\n \"access_denied_page_settings\": {\n \"access_denied_page_uri\": \"test-uri\",\n \"generate_troubleshooting_uri\": True,\n \"remediation_token_generation_enabled\": False,\n },\n \"attribute_propagation_settings\": {\n \"output_credentials\": [\"HEADER\"],\n \"expression\": \"attributes.saml_attributes.filter(attribute, attribute.name in [\\\"test1\\\", \\\"test2\\\"])\",\n \"enable\": False,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"iap-bs-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"iap-settings-tf\",\n Region = \"us-central1\",\n HealthChecks = defaultHealthCheck.Id,\n ConnectionDrainingTimeoutSec = 10,\n SessionAffinity = \"CLIENT_IP\",\n });\n\n var iapSettings = new Gcp.Iap.Settings(\"iap_settings\", new()\n {\n Name = Output.Tuple(project, @default.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/iap_web/compute-us-central1/services/{name}\";\n }),\n AccessSettings = new Gcp.Iap.Inputs.SettingsAccessSettingsArgs\n {\n IdentitySources = new[]\n {\n \"WORKFORCE_IDENTITY_FEDERATION\",\n },\n AllowedDomainsSettings = new Gcp.Iap.Inputs.SettingsAccessSettingsAllowedDomainsSettingsArgs\n {\n Domains = new[]\n {\n \"test.abc.com\",\n },\n Enable = true,\n },\n CorsSettings = new Gcp.Iap.Inputs.SettingsAccessSettingsCorsSettingsArgs\n {\n AllowHttpOptions = true,\n },\n ReauthSettings = new Gcp.Iap.Inputs.SettingsAccessSettingsReauthSettingsArgs\n {\n Method = \"SECURE_KEY\",\n MaxAge = \"305s\",\n PolicyType = \"MINIMUM\",\n },\n GcipSettings = new Gcp.Iap.Inputs.SettingsAccessSettingsGcipSettingsArgs\n {\n LoginPageUri = \"https://test.com/?apiKey=abc\",\n },\n OauthSettings = new Gcp.Iap.Inputs.SettingsAccessSettingsOauthSettingsArgs\n {\n LoginHint = \"test\",\n },\n WorkforceIdentitySettings = new Gcp.Iap.Inputs.SettingsAccessSettingsWorkforceIdentitySettingsArgs\n {\n WorkforcePools = \"wif-pool\",\n Oauth2 = new Gcp.Iap.Inputs.SettingsAccessSettingsWorkforceIdentitySettingsOauth2Args\n {\n ClientId = \"test-client-id\",\n ClientSecret = \"test-client-secret\",\n },\n },\n },\n ApplicationSettings = new Gcp.Iap.Inputs.SettingsApplicationSettingsArgs\n {\n CookieDomain = \"test.abc.com\",\n CsmSettings = new Gcp.Iap.Inputs.SettingsApplicationSettingsCsmSettingsArgs\n {\n RctokenAud = \"test-aud-set\",\n },\n AccessDeniedPageSettings = new Gcp.Iap.Inputs.SettingsApplicationSettingsAccessDeniedPageSettingsArgs\n {\n AccessDeniedPageUri = \"test-uri\",\n GenerateTroubleshootingUri = true,\n RemediationTokenGenerationEnabled = false,\n },\n AttributePropagationSettings = new Gcp.Iap.Inputs.SettingsApplicationSettingsAttributePropagationSettingsArgs\n {\n OutputCredentials = new[]\n {\n \"HEADER\",\n },\n Expression = \"attributes.saml_attributes.filter(attribute, attribute.name in [\\\"test1\\\", \\\"test2\\\"])\",\n Enable = false,\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/iap\"\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\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"iap-bs-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"iap-settings-tf\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t\tConnectionDrainingTimeoutSec: pulumi.Int(10),\n\t\t\tSessionAffinity: pulumi.String(\"CLIENT_IP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iap.NewSettings(ctx, \"iap_settings\", \u0026iap.SettingsArgs{\n\t\t\tName: _default.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/iap_web/compute-us-central1/services/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tAccessSettings: \u0026iap.SettingsAccessSettingsArgs{\n\t\t\t\tIdentitySources: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"WORKFORCE_IDENTITY_FEDERATION\"),\n\t\t\t\t},\n\t\t\t\tAllowedDomainsSettings: \u0026iap.SettingsAccessSettingsAllowedDomainsSettingsArgs{\n\t\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test.abc.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tCorsSettings: \u0026iap.SettingsAccessSettingsCorsSettingsArgs{\n\t\t\t\t\tAllowHttpOptions: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tReauthSettings: \u0026iap.SettingsAccessSettingsReauthSettingsArgs{\n\t\t\t\t\tMethod: pulumi.String(\"SECURE_KEY\"),\n\t\t\t\t\tMaxAge: pulumi.String(\"305s\"),\n\t\t\t\t\tPolicyType: pulumi.String(\"MINIMUM\"),\n\t\t\t\t},\n\t\t\t\tGcipSettings: \u0026iap.SettingsAccessSettingsGcipSettingsArgs{\n\t\t\t\t\tLoginPageUri: pulumi.String(\"https://test.com/?apiKey=abc\"),\n\t\t\t\t},\n\t\t\t\tOauthSettings: \u0026iap.SettingsAccessSettingsOauthSettingsArgs{\n\t\t\t\t\tLoginHint: pulumi.String(\"test\"),\n\t\t\t\t},\n\t\t\t\tWorkforceIdentitySettings: \u0026iap.SettingsAccessSettingsWorkforceIdentitySettingsArgs{\n\t\t\t\t\tWorkforcePools: pulumi.String(\"wif-pool\"),\n\t\t\t\t\tOauth2: \u0026iap.SettingsAccessSettingsWorkforceIdentitySettingsOauth2Args{\n\t\t\t\t\t\tClientId: pulumi.String(\"test-client-id\"),\n\t\t\t\t\t\tClientSecret: pulumi.String(\"test-client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tApplicationSettings: \u0026iap.SettingsApplicationSettingsArgs{\n\t\t\t\tCookieDomain: pulumi.String(\"test.abc.com\"),\n\t\t\t\tCsmSettings: \u0026iap.SettingsApplicationSettingsCsmSettingsArgs{\n\t\t\t\t\tRctokenAud: pulumi.String(\"test-aud-set\"),\n\t\t\t\t},\n\t\t\t\tAccessDeniedPageSettings: \u0026iap.SettingsApplicationSettingsAccessDeniedPageSettingsArgs{\n\t\t\t\t\tAccessDeniedPageUri: pulumi.String(\"test-uri\"),\n\t\t\t\t\tGenerateTroubleshootingUri: pulumi.Bool(true),\n\t\t\t\t\tRemediationTokenGenerationEnabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tAttributePropagationSettings: \u0026iap.SettingsApplicationSettingsAttributePropagationSettingsArgs{\n\t\t\t\t\tOutputCredentials: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"HEADER\"),\n\t\t\t\t\t},\n\t\t\t\t\tExpression: pulumi.String(\"attributes.saml_attributes.filter(attribute, attribute.name in [\\\"test1\\\", \\\"test2\\\"])\"),\n\t\t\t\t\tEnable: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.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.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.iap.Settings;\nimport com.pulumi.gcp.iap.SettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsAllowedDomainsSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsCorsSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsReauthSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsGcipSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsOauthSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsWorkforceIdentitySettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsWorkforceIdentitySettingsOauth2Args;\nimport com.pulumi.gcp.iap.inputs.SettingsApplicationSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsApplicationSettingsCsmSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsApplicationSettingsAccessDeniedPageSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsApplicationSettingsAttributePropagationSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"iap-bs-health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .name(\"iap-settings-tf\")\n .region(\"us-central1\")\n .healthChecks(defaultHealthCheck.id())\n .connectionDrainingTimeoutSec(10)\n .sessionAffinity(\"CLIENT_IP\")\n .build());\n\n var iapSettings = new Settings(\"iapSettings\", SettingsArgs.builder()\n .name(default_.name().applyValue(name -\u003e String.format(\"projects/%s/iap_web/compute-us-central1/services/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .accessSettings(SettingsAccessSettingsArgs.builder()\n .identitySources(\"WORKFORCE_IDENTITY_FEDERATION\")\n .allowedDomainsSettings(SettingsAccessSettingsAllowedDomainsSettingsArgs.builder()\n .domains(\"test.abc.com\")\n .enable(true)\n .build())\n .corsSettings(SettingsAccessSettingsCorsSettingsArgs.builder()\n .allowHttpOptions(true)\n .build())\n .reauthSettings(SettingsAccessSettingsReauthSettingsArgs.builder()\n .method(\"SECURE_KEY\")\n .maxAge(\"305s\")\n .policyType(\"MINIMUM\")\n .build())\n .gcipSettings(SettingsAccessSettingsGcipSettingsArgs.builder()\n .loginPageUri(\"https://test.com/?apiKey=abc\")\n .build())\n .oauthSettings(SettingsAccessSettingsOauthSettingsArgs.builder()\n .loginHint(\"test\")\n .build())\n .workforceIdentitySettings(SettingsAccessSettingsWorkforceIdentitySettingsArgs.builder()\n .workforcePools(\"wif-pool\")\n .oauth2(SettingsAccessSettingsWorkforceIdentitySettingsOauth2Args.builder()\n .clientId(\"test-client-id\")\n .clientSecret(\"test-client-secret\")\n .build())\n .build())\n .build())\n .applicationSettings(SettingsApplicationSettingsArgs.builder()\n .cookieDomain(\"test.abc.com\")\n .csmSettings(SettingsApplicationSettingsCsmSettingsArgs.builder()\n .rctokenAud(\"test-aud-set\")\n .build())\n .accessDeniedPageSettings(SettingsApplicationSettingsAccessDeniedPageSettingsArgs.builder()\n .accessDeniedPageUri(\"test-uri\")\n .generateTroubleshootingUri(true)\n .remediationTokenGenerationEnabled(false)\n .build())\n .attributePropagationSettings(SettingsApplicationSettingsAttributePropagationSettingsArgs.builder()\n .outputCredentials(\"HEADER\")\n .expression(\"attributes.saml_attributes.filter(attribute, attribute.name in [\\\"test1\\\", \\\"test2\\\"])\")\n .enable(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n name: iap-settings-tf\n region: us-central1\n healthChecks: ${defaultHealthCheck.id}\n connectionDrainingTimeoutSec: 10\n sessionAffinity: CLIENT_IP\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: iap-bs-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n iapSettings:\n type: gcp:iap:Settings\n name: iap_settings\n properties:\n name: projects/${project.number}/iap_web/compute-us-central1/services/${default.name}\n accessSettings:\n identitySources:\n - WORKFORCE_IDENTITY_FEDERATION\n allowedDomainsSettings:\n domains:\n - test.abc.com\n enable: true\n corsSettings:\n allowHttpOptions: true\n reauthSettings:\n method: SECURE_KEY\n maxAge: 305s\n policyType: MINIMUM\n gcipSettings:\n loginPageUri: https://test.com/?apiKey=abc\n oauthSettings:\n loginHint: test\n workforceIdentitySettings:\n workforcePools: wif-pool\n oauth2:\n clientId: test-client-id\n clientSecret: test-client-secret\n applicationSettings:\n cookieDomain: test.abc.com\n csmSettings:\n rctokenAud: test-aud-set\n accessDeniedPageSettings:\n accessDeniedPageUri: test-uri\n generateTroubleshootingUri: true\n remediationTokenGenerationEnabled: false\n attributePropagationSettings:\n outputCredentials:\n - HEADER\n expression: attributes.saml_attributes.filter(attribute, attribute.name in [\"test1\", \"test2\"])\n enable: false\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSettings can be imported using any of these accepted formats:\n\n* `{{name}}/iapSettings`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Settings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iap/settings:Settings default {{name}}/iapSettings\n```\n\n```sh\n$ pulumi import gcp:iap/settings:Settings default {{name}}\n```\n\n", + "description": "IAP settings - manage IAP settings\n\n\nTo get more information about Settings, see:\n\n* [API documentation](https://cloud.google.com/iap/docs/reference/rest/v1/IapSettings)\n* How-to Guides\n * [Customizing IAP](https://cloud.google.com/iap/docs/customizing)\n\n\n\n## Example Usage\n\n### Iap Settings Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst defaultHealthCheck = new gcp.compute.HealthCheck(\"default\", {\n name: \"iap-bs-health-check\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n tcpHealthCheck: {\n port: 80,\n },\n});\nconst _default = new gcp.compute.RegionBackendService(\"default\", {\n name: \"iap-settings-tf\",\n region: \"us-central1\",\n healthChecks: defaultHealthCheck.id,\n connectionDrainingTimeoutSec: 10,\n sessionAffinity: \"CLIENT_IP\",\n});\nconst iapSettings = new gcp.iap.Settings(\"iap_settings\", {\n name: pulumi.all([project, _default.name]).apply(([project, name]) =\u003e `projects/${project.number}/iap_web/compute-us-central1/services/${name}`),\n accessSettings: {\n identitySources: [\"WORKFORCE_IDENTITY_FEDERATION\"],\n allowedDomainsSettings: {\n domains: [\"test.abc.com\"],\n enable: true,\n },\n corsSettings: {\n allowHttpOptions: true,\n },\n reauthSettings: {\n method: \"SECURE_KEY\",\n maxAge: \"305s\",\n policyType: \"MINIMUM\",\n },\n gcipSettings: {\n loginPageUri: \"https://test.com/?apiKey=abc\",\n },\n oauthSettings: {\n loginHint: \"test\",\n },\n workforceIdentitySettings: {\n workforcePools: \"wif-pool\",\n oauth2: {\n clientId: \"test-client-id\",\n clientSecret: \"test-client-secret\",\n },\n },\n },\n applicationSettings: {\n cookieDomain: \"test.abc.com\",\n csmSettings: {\n rctokenAud: \"test-aud-set\",\n },\n accessDeniedPageSettings: {\n accessDeniedPageUri: \"test-uri\",\n generateTroubleshootingUri: true,\n remediationTokenGenerationEnabled: false,\n },\n attributePropagationSettings: {\n outputCredentials: [\"HEADER\"],\n expression: \"attributes.saml_attributes.filter(attribute, attribute.name in [\\\"test1\\\", \\\"test2\\\"])\",\n enable: false,\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ndefault_health_check = gcp.compute.HealthCheck(\"default\",\n name=\"iap-bs-health-check\",\n check_interval_sec=1,\n timeout_sec=1,\n tcp_health_check={\n \"port\": 80,\n })\ndefault = gcp.compute.RegionBackendService(\"default\",\n name=\"iap-settings-tf\",\n region=\"us-central1\",\n health_checks=default_health_check.id,\n connection_draining_timeout_sec=10,\n session_affinity=\"CLIENT_IP\")\niap_settings = gcp.iap.Settings(\"iap_settings\",\n name=default.name.apply(lambda name: f\"projects/{project.number}/iap_web/compute-us-central1/services/{name}\"),\n access_settings={\n \"identity_sources\": [\"WORKFORCE_IDENTITY_FEDERATION\"],\n \"allowed_domains_settings\": {\n \"domains\": [\"test.abc.com\"],\n \"enable\": True,\n },\n \"cors_settings\": {\n \"allow_http_options\": True,\n },\n \"reauth_settings\": {\n \"method\": \"SECURE_KEY\",\n \"max_age\": \"305s\",\n \"policy_type\": \"MINIMUM\",\n },\n \"gcip_settings\": {\n \"login_page_uri\": \"https://test.com/?apiKey=abc\",\n },\n \"oauth_settings\": {\n \"login_hint\": \"test\",\n },\n \"workforce_identity_settings\": {\n \"workforce_pools\": \"wif-pool\",\n \"oauth2\": {\n \"client_id\": \"test-client-id\",\n \"client_secret\": \"test-client-secret\",\n },\n },\n },\n application_settings={\n \"cookie_domain\": \"test.abc.com\",\n \"csm_settings\": {\n \"rctoken_aud\": \"test-aud-set\",\n },\n \"access_denied_page_settings\": {\n \"access_denied_page_uri\": \"test-uri\",\n \"generate_troubleshooting_uri\": True,\n \"remediation_token_generation_enabled\": False,\n },\n \"attribute_propagation_settings\": {\n \"output_credentials\": [\"HEADER\"],\n \"expression\": \"attributes.saml_attributes.filter(attribute, attribute.name in [\\\"test1\\\", \\\"test2\\\"])\",\n \"enable\": False,\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var defaultHealthCheck = new Gcp.Compute.HealthCheck(\"default\", new()\n {\n Name = \"iap-bs-health-check\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n TcpHealthCheck = new Gcp.Compute.Inputs.HealthCheckTcpHealthCheckArgs\n {\n Port = 80,\n },\n });\n\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"iap-settings-tf\",\n Region = \"us-central1\",\n HealthChecks = defaultHealthCheck.Id,\n ConnectionDrainingTimeoutSec = 10,\n SessionAffinity = \"CLIENT_IP\",\n });\n\n var iapSettings = new Gcp.Iap.Settings(\"iap_settings\", new()\n {\n Name = Output.Tuple(project, @default.Name).Apply(values =\u003e\n {\n var project = values.Item1;\n var name = values.Item2;\n return $\"projects/{project.Apply(getProjectResult =\u003e getProjectResult.Number)}/iap_web/compute-us-central1/services/{name}\";\n }),\n AccessSettings = new Gcp.Iap.Inputs.SettingsAccessSettingsArgs\n {\n IdentitySources = new[]\n {\n \"WORKFORCE_IDENTITY_FEDERATION\",\n },\n AllowedDomainsSettings = new Gcp.Iap.Inputs.SettingsAccessSettingsAllowedDomainsSettingsArgs\n {\n Domains = new[]\n {\n \"test.abc.com\",\n },\n Enable = true,\n },\n CorsSettings = new Gcp.Iap.Inputs.SettingsAccessSettingsCorsSettingsArgs\n {\n AllowHttpOptions = true,\n },\n ReauthSettings = new Gcp.Iap.Inputs.SettingsAccessSettingsReauthSettingsArgs\n {\n Method = \"SECURE_KEY\",\n MaxAge = \"305s\",\n PolicyType = \"MINIMUM\",\n },\n GcipSettings = new Gcp.Iap.Inputs.SettingsAccessSettingsGcipSettingsArgs\n {\n LoginPageUri = \"https://test.com/?apiKey=abc\",\n },\n OauthSettings = new Gcp.Iap.Inputs.SettingsAccessSettingsOauthSettingsArgs\n {\n LoginHint = \"test\",\n },\n WorkforceIdentitySettings = new Gcp.Iap.Inputs.SettingsAccessSettingsWorkforceIdentitySettingsArgs\n {\n WorkforcePools = \"wif-pool\",\n Oauth2 = new Gcp.Iap.Inputs.SettingsAccessSettingsWorkforceIdentitySettingsOauth2Args\n {\n ClientId = \"test-client-id\",\n ClientSecret = \"test-client-secret\",\n },\n },\n },\n ApplicationSettings = new Gcp.Iap.Inputs.SettingsApplicationSettingsArgs\n {\n CookieDomain = \"test.abc.com\",\n CsmSettings = new Gcp.Iap.Inputs.SettingsApplicationSettingsCsmSettingsArgs\n {\n RctokenAud = \"test-aud-set\",\n },\n AccessDeniedPageSettings = new Gcp.Iap.Inputs.SettingsApplicationSettingsAccessDeniedPageSettingsArgs\n {\n AccessDeniedPageUri = \"test-uri\",\n GenerateTroubleshootingUri = true,\n RemediationTokenGenerationEnabled = false,\n },\n AttributePropagationSettings = new Gcp.Iap.Inputs.SettingsApplicationSettingsAttributePropagationSettingsArgs\n {\n OutputCredentials = new[]\n {\n \"HEADER\",\n },\n Expression = \"attributes.saml_attributes.filter(attribute, attribute.name in [\\\"test1\\\", \\\"test2\\\"])\",\n Enable = false,\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/iap\"\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\tdefaultHealthCheck, err := compute.NewHealthCheck(ctx, \"default\", \u0026compute.HealthCheckArgs{\n\t\t\tName: pulumi.String(\"iap-bs-health-check\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t\tTcpHealthCheck: \u0026compute.HealthCheckTcpHealthCheckArgs{\n\t\t\t\tPort: pulumi.Int(80),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"iap-settings-tf\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tHealthChecks: defaultHealthCheck.ID(),\n\t\t\tConnectionDrainingTimeoutSec: pulumi.Int(10),\n\t\t\tSessionAffinity: pulumi.String(\"CLIENT_IP\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = iap.NewSettings(ctx, \"iap_settings\", \u0026iap.SettingsArgs{\n\t\t\tName: _default.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v/iap_web/compute-us-central1/services/%v\", project.Number, name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tAccessSettings: \u0026iap.SettingsAccessSettingsArgs{\n\t\t\t\tIdentitySources: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"WORKFORCE_IDENTITY_FEDERATION\"),\n\t\t\t\t},\n\t\t\t\tAllowedDomainsSettings: \u0026iap.SettingsAccessSettingsAllowedDomainsSettingsArgs{\n\t\t\t\t\tDomains: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"test.abc.com\"),\n\t\t\t\t\t},\n\t\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tCorsSettings: \u0026iap.SettingsAccessSettingsCorsSettingsArgs{\n\t\t\t\t\tAllowHttpOptions: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tReauthSettings: \u0026iap.SettingsAccessSettingsReauthSettingsArgs{\n\t\t\t\t\tMethod: pulumi.String(\"SECURE_KEY\"),\n\t\t\t\t\tMaxAge: pulumi.String(\"305s\"),\n\t\t\t\t\tPolicyType: pulumi.String(\"MINIMUM\"),\n\t\t\t\t},\n\t\t\t\tGcipSettings: \u0026iap.SettingsAccessSettingsGcipSettingsArgs{\n\t\t\t\t\tLoginPageUri: pulumi.String(\"https://test.com/?apiKey=abc\"),\n\t\t\t\t},\n\t\t\t\tOauthSettings: \u0026iap.SettingsAccessSettingsOauthSettingsArgs{\n\t\t\t\t\tLoginHint: pulumi.String(\"test\"),\n\t\t\t\t},\n\t\t\t\tWorkforceIdentitySettings: \u0026iap.SettingsAccessSettingsWorkforceIdentitySettingsArgs{\n\t\t\t\t\tWorkforcePools: pulumi.String(\"wif-pool\"),\n\t\t\t\t\tOauth2: \u0026iap.SettingsAccessSettingsWorkforceIdentitySettingsOauth2Args{\n\t\t\t\t\t\tClientId: pulumi.String(\"test-client-id\"),\n\t\t\t\t\t\tClientSecret: pulumi.String(\"test-client-secret\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tApplicationSettings: \u0026iap.SettingsApplicationSettingsArgs{\n\t\t\t\tCookieDomain: pulumi.String(\"test.abc.com\"),\n\t\t\t\tCsmSettings: \u0026iap.SettingsApplicationSettingsCsmSettingsArgs{\n\t\t\t\t\tRctokenAud: pulumi.String(\"test-aud-set\"),\n\t\t\t\t},\n\t\t\t\tAccessDeniedPageSettings: \u0026iap.SettingsApplicationSettingsAccessDeniedPageSettingsArgs{\n\t\t\t\t\tAccessDeniedPageUri: pulumi.String(\"test-uri\"),\n\t\t\t\t\tGenerateTroubleshootingUri: pulumi.Bool(true),\n\t\t\t\t\tRemediationTokenGenerationEnabled: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tAttributePropagationSettings: \u0026iap.SettingsApplicationSettingsAttributePropagationSettingsArgs{\n\t\t\t\t\tOutputCredentials: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"HEADER\"),\n\t\t\t\t\t},\n\t\t\t\t\tExpression: pulumi.String(\"attributes.saml_attributes.filter(attribute, attribute.name in [\\\"test1\\\", \\\"test2\\\"])\"),\n\t\t\t\t\tEnable: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.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.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.iap.Settings;\nimport com.pulumi.gcp.iap.SettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsAllowedDomainsSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsCorsSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsReauthSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsGcipSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsOauthSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsWorkforceIdentitySettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsAccessSettingsWorkforceIdentitySettingsOauth2Args;\nimport com.pulumi.gcp.iap.inputs.SettingsApplicationSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsApplicationSettingsCsmSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsApplicationSettingsAccessDeniedPageSettingsArgs;\nimport com.pulumi.gcp.iap.inputs.SettingsApplicationSettingsAttributePropagationSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var defaultHealthCheck = new HealthCheck(\"defaultHealthCheck\", HealthCheckArgs.builder()\n .name(\"iap-bs-health-check\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .tcpHealthCheck(HealthCheckTcpHealthCheckArgs.builder()\n .port(\"80\")\n .build())\n .build());\n\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .name(\"iap-settings-tf\")\n .region(\"us-central1\")\n .healthChecks(defaultHealthCheck.id())\n .connectionDrainingTimeoutSec(10)\n .sessionAffinity(\"CLIENT_IP\")\n .build());\n\n var iapSettings = new Settings(\"iapSettings\", SettingsArgs.builder()\n .name(default_.name().applyValue(name -\u003e String.format(\"projects/%s/iap_web/compute-us-central1/services/%s\", project.applyValue(getProjectResult -\u003e getProjectResult.number()),name)))\n .accessSettings(SettingsAccessSettingsArgs.builder()\n .identitySources(\"WORKFORCE_IDENTITY_FEDERATION\")\n .allowedDomainsSettings(SettingsAccessSettingsAllowedDomainsSettingsArgs.builder()\n .domains(\"test.abc.com\")\n .enable(true)\n .build())\n .corsSettings(SettingsAccessSettingsCorsSettingsArgs.builder()\n .allowHttpOptions(true)\n .build())\n .reauthSettings(SettingsAccessSettingsReauthSettingsArgs.builder()\n .method(\"SECURE_KEY\")\n .maxAge(\"305s\")\n .policyType(\"MINIMUM\")\n .build())\n .gcipSettings(SettingsAccessSettingsGcipSettingsArgs.builder()\n .loginPageUri(\"https://test.com/?apiKey=abc\")\n .build())\n .oauthSettings(SettingsAccessSettingsOauthSettingsArgs.builder()\n .loginHint(\"test\")\n .build())\n .workforceIdentitySettings(SettingsAccessSettingsWorkforceIdentitySettingsArgs.builder()\n .workforcePools(\"wif-pool\")\n .oauth2(SettingsAccessSettingsWorkforceIdentitySettingsOauth2Args.builder()\n .clientId(\"test-client-id\")\n .clientSecret(\"test-client-secret\")\n .build())\n .build())\n .build())\n .applicationSettings(SettingsApplicationSettingsArgs.builder()\n .cookieDomain(\"test.abc.com\")\n .csmSettings(SettingsApplicationSettingsCsmSettingsArgs.builder()\n .rctokenAud(\"test-aud-set\")\n .build())\n .accessDeniedPageSettings(SettingsApplicationSettingsAccessDeniedPageSettingsArgs.builder()\n .accessDeniedPageUri(\"test-uri\")\n .generateTroubleshootingUri(true)\n .remediationTokenGenerationEnabled(false)\n .build())\n .attributePropagationSettings(SettingsApplicationSettingsAttributePropagationSettingsArgs.builder()\n .outputCredentials(\"HEADER\")\n .expression(\"attributes.saml_attributes.filter(attribute, attribute.name in [\\\"test1\\\", \\\"test2\\\"])\")\n .enable(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n name: iap-settings-tf\n region: us-central1\n healthChecks: ${defaultHealthCheck.id}\n connectionDrainingTimeoutSec: 10\n sessionAffinity: CLIENT_IP\n defaultHealthCheck:\n type: gcp:compute:HealthCheck\n name: default\n properties:\n name: iap-bs-health-check\n checkIntervalSec: 1\n timeoutSec: 1\n tcpHealthCheck:\n port: '80'\n iapSettings:\n type: gcp:iap:Settings\n name: iap_settings\n properties:\n name: projects/${project.number}/iap_web/compute-us-central1/services/${default.name}\n accessSettings:\n identitySources:\n - WORKFORCE_IDENTITY_FEDERATION\n allowedDomainsSettings:\n domains:\n - test.abc.com\n enable: true\n corsSettings:\n allowHttpOptions: true\n reauthSettings:\n method: SECURE_KEY\n maxAge: 305s\n policyType: MINIMUM\n gcipSettings:\n loginPageUri: https://test.com/?apiKey=abc\n oauthSettings:\n loginHint: test\n workforceIdentitySettings:\n workforcePools: wif-pool\n oauth2:\n clientId: test-client-id\n clientSecret: test-client-secret\n applicationSettings:\n cookieDomain: test.abc.com\n csmSettings:\n rctokenAud: test-aud-set\n accessDeniedPageSettings:\n accessDeniedPageUri: test-uri\n generateTroubleshootingUri: true\n remediationTokenGenerationEnabled: false\n attributePropagationSettings:\n outputCredentials:\n - HEADER\n expression: attributes.saml_attributes.filter(attribute, attribute.name in [\"test1\", \"test2\"])\n enable: false\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSettings can be imported using any of these accepted formats:\n\n* `{{name}}/iapSettings`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Settings can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:iap/settings:Settings default {{name}}/iapSettings\n```\n\n```sh\n$ pulumi import gcp:iap/settings:Settings default {{name}}\n```\n\n", "properties": { "accessSettings": { "$ref": "#/types/gcp:iap/SettingsAccessSettings:SettingsAccessSettings", @@ -238044,7 +238044,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: \"2014-10-02T15:01:23Z\",\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\": \"2014-10-02T15:01:23Z\",\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 = \"2014-10-02T15:01:23Z\",\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(\"2014-10-02T15:01:23Z\"),\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(\"2014-10-02T15:01:23Z\")\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: 2014-10-02T15:01:23Z\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: \"2014-10-02T15:01:23Z\",\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\": \"2014-10-02T15:01:23Z\",\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 = \"2014-10-02T15:01:23Z\",\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_default, 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(\"2014-10-02T15:01:23Z\"),\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(\"2014-10-02T15:01:23Z\")\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: 2014-10-02T15:01:23Z\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", @@ -238971,7 +238971,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, \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", + "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\tsecret_basic, 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\tsecret_version_basic, 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", @@ -239725,7 +239725,7 @@ } }, "gcp:kms/autokeyConfig:AutokeyConfig": { - "description": "## Example Usage\n\n### Kms Autokey Config All\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\n// Create Folder in GCP Organization\nconst autokmsFolder = new gcp.organizations.Folder(\"autokms_folder\", {\n displayName: \"my-folder\",\n parent: \"organizations/123456789\",\n deletionProtection: false,\n});\n// Create the key project\nconst keyProject = new gcp.organizations.Project(\"key_project\", {\n projectId: \"key-proj\",\n name: \"key-proj\",\n folderId: autokmsFolder.folderId,\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n}, {\n dependsOn: [autokmsFolder],\n});\n// Enable the Cloud KMS API\nconst kmsApiService = new gcp.projects.Service(\"kms_api_service\", {\n service: \"cloudkms.googleapis.com\",\n project: keyProject.projectId,\n disableOnDestroy: false,\n disableDependentServices: true,\n}, {\n dependsOn: [keyProject],\n});\n// Wait delay after enabling APIs\nconst waitEnableServiceApi = new time.index.Sleep(\"wait_enable_service_api\", {createDuration: \"30s\"}, {\n dependsOn: [kmsApiService],\n});\n//Create KMS Service Agent\nconst kmsServiceAgent = new gcp.projects.ServiceIdentity(\"kms_service_agent\", {\n service: \"cloudkms.googleapis.com\",\n project: keyProject.number,\n}, {\n dependsOn: [waitEnableServiceApi],\n});\n// Wait delay after creating service agent.\nconst waitServiceAgent = new time.index.Sleep(\"wait_service_agent\", {createDuration: \"10s\"}, {\n dependsOn: [kmsServiceAgent],\n});\n//Grant the KMS Service Agent the Cloud KMS Admin role\nconst autokeyProjectAdmin = new gcp.projects.IAMMember(\"autokey_project_admin\", {\n project: keyProject.projectId,\n role: \"roles/cloudkms.admin\",\n member: pulumi.interpolate`serviceAccount:service-${keyProject.number}@gcp-sa-cloudkms.iam.gserviceaccount.com`,\n}, {\n dependsOn: [waitServiceAgent],\n});\n// Wait delay after granting IAM permissions\nconst waitSrvAccPermissions = new time.index.Sleep(\"wait_srv_acc_permissions\", {createDuration: \"10s\"}, {\n dependsOn: [autokeyProjectAdmin],\n});\nconst example_autokeyconfig = new gcp.kms.AutokeyConfig(\"example-autokeyconfig\", {\n folder: autokmsFolder.id,\n keyProject: pulumi.interpolate`projects/${keyProject.projectId}`,\n}, {\n dependsOn: [waitSrvAccPermissions],\n});\n// Wait delay after setting AutokeyConfig, to prevent diffs on reapply,\n// because setting the config takes a little to fully propagate.\nconst waitAutokeyPropagation = new time.index.Sleep(\"wait_autokey_propagation\", {createDuration: \"30s\"}, {\n dependsOn: [example_autokeyconfig],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\n# Create Folder in GCP Organization\nautokms_folder = gcp.organizations.Folder(\"autokms_folder\",\n display_name=\"my-folder\",\n parent=\"organizations/123456789\",\n deletion_protection=False)\n# Create the key project\nkey_project = gcp.organizations.Project(\"key_project\",\n project_id=\"key-proj\",\n name=\"key-proj\",\n folder_id=autokms_folder.folder_id,\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\",\n opts = pulumi.ResourceOptions(depends_on=[autokms_folder]))\n# Enable the Cloud KMS API\nkms_api_service = gcp.projects.Service(\"kms_api_service\",\n service=\"cloudkms.googleapis.com\",\n project=key_project.project_id,\n disable_on_destroy=False,\n disable_dependent_services=True,\n opts = pulumi.ResourceOptions(depends_on=[key_project]))\n# Wait delay after enabling APIs\nwait_enable_service_api = time.index.Sleep(\"wait_enable_service_api\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[kms_api_service]))\n#Create KMS Service Agent\nkms_service_agent = gcp.projects.ServiceIdentity(\"kms_service_agent\",\n service=\"cloudkms.googleapis.com\",\n project=key_project.number,\n opts = pulumi.ResourceOptions(depends_on=[wait_enable_service_api]))\n# Wait delay after creating service agent.\nwait_service_agent = time.index.Sleep(\"wait_service_agent\", create_duration=10s,\nopts = pulumi.ResourceOptions(depends_on=[kms_service_agent]))\n#Grant the KMS Service Agent the Cloud KMS Admin role\nautokey_project_admin = gcp.projects.IAMMember(\"autokey_project_admin\",\n project=key_project.project_id,\n role=\"roles/cloudkms.admin\",\n member=key_project.number.apply(lambda number: f\"serviceAccount:service-{number}@gcp-sa-cloudkms.iam.gserviceaccount.com\"),\n opts = pulumi.ResourceOptions(depends_on=[wait_service_agent]))\n# Wait delay after granting IAM permissions\nwait_srv_acc_permissions = time.index.Sleep(\"wait_srv_acc_permissions\", create_duration=10s,\nopts = pulumi.ResourceOptions(depends_on=[autokey_project_admin]))\nexample_autokeyconfig = gcp.kms.AutokeyConfig(\"example-autokeyconfig\",\n folder=autokms_folder.id,\n key_project=key_project.project_id.apply(lambda project_id: f\"projects/{project_id}\"),\n opts = pulumi.ResourceOptions(depends_on=[wait_srv_acc_permissions]))\n# Wait delay after setting AutokeyConfig, to prevent diffs on reapply,\n# because setting the config takes a little to fully propagate.\nwait_autokey_propagation = time.index.Sleep(\"wait_autokey_propagation\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[example_autokeyconfig]))\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 // Create Folder in GCP Organization\n var autokmsFolder = new Gcp.Organizations.Folder(\"autokms_folder\", new()\n {\n DisplayName = \"my-folder\",\n Parent = \"organizations/123456789\",\n DeletionProtection = false,\n });\n\n // Create the key project\n var keyProject = new Gcp.Organizations.Project(\"key_project\", new()\n {\n ProjectId = \"key-proj\",\n Name = \"key-proj\",\n FolderId = autokmsFolder.FolderId,\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n autokmsFolder,\n },\n });\n\n // Enable the Cloud KMS API\n var kmsApiService = new Gcp.Projects.Service(\"kms_api_service\", new()\n {\n ServiceName = \"cloudkms.googleapis.com\",\n Project = keyProject.ProjectId,\n DisableOnDestroy = false,\n DisableDependentServices = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n keyProject,\n },\n });\n\n // Wait delay after enabling APIs\n var waitEnableServiceApi = new Time.Index.Sleep(\"wait_enable_service_api\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n kmsApiService,\n },\n });\n\n //Create KMS Service Agent\n var kmsServiceAgent = new Gcp.Projects.ServiceIdentity(\"kms_service_agent\", new()\n {\n Service = \"cloudkms.googleapis.com\",\n Project = keyProject.Number,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n waitEnableServiceApi,\n },\n });\n\n // Wait delay after creating service agent.\n var waitServiceAgent = new Time.Index.Sleep(\"wait_service_agent\", new()\n {\n CreateDuration = \"10s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n kmsServiceAgent,\n },\n });\n\n //Grant the KMS Service Agent the Cloud KMS Admin role\n var autokeyProjectAdmin = new Gcp.Projects.IAMMember(\"autokey_project_admin\", new()\n {\n Project = keyProject.ProjectId,\n Role = \"roles/cloudkms.admin\",\n Member = keyProject.Number.Apply(number =\u003e $\"serviceAccount:service-{number}@gcp-sa-cloudkms.iam.gserviceaccount.com\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n waitServiceAgent,\n },\n });\n\n // Wait delay after granting IAM permissions\n var waitSrvAccPermissions = new Time.Index.Sleep(\"wait_srv_acc_permissions\", new()\n {\n CreateDuration = \"10s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n autokeyProjectAdmin,\n },\n });\n\n var example_autokeyconfig = new Gcp.Kms.AutokeyConfig(\"example-autokeyconfig\", new()\n {\n Folder = autokmsFolder.Id,\n KeyProject = keyProject.ProjectId.Apply(projectId =\u003e $\"projects/{projectId}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n waitSrvAccPermissions,\n },\n });\n\n // Wait delay after setting AutokeyConfig, to prevent diffs on reapply,\n // because setting the config takes a little to fully propagate.\n var waitAutokeyPropagation = new Time.Index.Sleep(\"wait_autokey_propagation\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_autokeyconfig,\n },\n });\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/projects\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create Folder in GCP Organization\n\t\tautokmsFolder, err := organizations.NewFolder(ctx, \"autokms_folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"my-folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create the key project\n\t\tkeyProject, err := organizations.NewProject(ctx, \"key_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"key-proj\"),\n\t\t\tName: pulumi.String(\"key-proj\"),\n\t\t\tFolderId: autokmsFolder.FolderId,\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tautokmsFolder,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Enable the Cloud KMS API\n\t\tkmsApiService, err := projects.NewService(ctx, \"kms_api_service\", \u0026projects.ServiceArgs{\n\t\t\tService: pulumi.String(\"cloudkms.googleapis.com\"),\n\t\t\tProject: keyProject.ProjectId,\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t\tDisableDependentServices: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkeyProject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait delay after enabling APIs\n\t\twaitEnableServiceApi, err := time.NewSleep(ctx, \"wait_enable_service_api\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkmsApiService,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create KMS Service Agent\n\t\tkmsServiceAgent, err := projects.NewServiceIdentity(ctx, \"kms_service_agent\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"cloudkms.googleapis.com\"),\n\t\t\tProject: keyProject.Number,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twaitEnableServiceApi,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait delay after creating service agent.\n\t\twaitServiceAgent, err := time.NewSleep(ctx, \"wait_service_agent\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"10s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkmsServiceAgent,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Grant the KMS Service Agent the Cloud KMS Admin role\n\t\tautokeyProjectAdmin, err := projects.NewIAMMember(ctx, \"autokey_project_admin\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: keyProject.ProjectId,\n\t\t\tRole: pulumi.String(\"roles/cloudkms.admin\"),\n\t\t\tMember: keyProject.Number.ApplyT(func(number string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-cloudkms.iam.gserviceaccount.com\", number), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twaitServiceAgent,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait delay after granting IAM permissions\n\t\twaitSrvAccPermissions, err := time.NewSleep(ctx, \"wait_srv_acc_permissions\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"10s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tautokeyProjectAdmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = kms.NewAutokeyConfig(ctx, \"example-autokeyconfig\", \u0026kms.AutokeyConfigArgs{\n\t\t\tFolder: autokmsFolder.ID(),\n\t\t\tKeyProject: keyProject.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v\", projectId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twaitSrvAccPermissions,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait delay after setting AutokeyConfig, to prevent diffs on reapply,\n\t\t// because setting the config takes a little to fully propagate.\n\t\t_, err = time.NewSleep(ctx, \"wait_autokey_propagation\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_autokeyconfig,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.kms.AutokeyConfig;\nimport com.pulumi.gcp.kms.AutokeyConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Create Folder in GCP Organization\n var autokmsFolder = new Folder(\"autokmsFolder\", FolderArgs.builder()\n .displayName(\"my-folder\")\n .parent(\"organizations/123456789\")\n .deletionProtection(false)\n .build());\n\n // Create the key project\n var keyProject = new Project(\"keyProject\", ProjectArgs.builder()\n .projectId(\"key-proj\")\n .name(\"key-proj\")\n .folderId(autokmsFolder.folderId())\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(autokmsFolder)\n .build());\n\n // Enable the Cloud KMS API\n var kmsApiService = new Service(\"kmsApiService\", ServiceArgs.builder()\n .service(\"cloudkms.googleapis.com\")\n .project(keyProject.projectId())\n .disableOnDestroy(false)\n .disableDependentServices(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(keyProject)\n .build());\n\n // Wait delay after enabling APIs\n var waitEnableServiceApi = new Sleep(\"waitEnableServiceApi\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(kmsApiService)\n .build());\n\n //Create KMS Service Agent\n var kmsServiceAgent = new ServiceIdentity(\"kmsServiceAgent\", ServiceIdentityArgs.builder()\n .service(\"cloudkms.googleapis.com\")\n .project(keyProject.number())\n .build(), CustomResourceOptions.builder()\n .dependsOn(waitEnableServiceApi)\n .build());\n\n // Wait delay after creating service agent.\n var waitServiceAgent = new Sleep(\"waitServiceAgent\", SleepArgs.builder()\n .createDuration(\"10s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(kmsServiceAgent)\n .build());\n\n //Grant the KMS Service Agent the Cloud KMS Admin role\n var autokeyProjectAdmin = new IAMMember(\"autokeyProjectAdmin\", IAMMemberArgs.builder()\n .project(keyProject.projectId())\n .role(\"roles/cloudkms.admin\")\n .member(keyProject.number().applyValue(number -\u003e String.format(\"serviceAccount:service-%s@gcp-sa-cloudkms.iam.gserviceaccount.com\", number)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(waitServiceAgent)\n .build());\n\n // Wait delay after granting IAM permissions\n var waitSrvAccPermissions = new Sleep(\"waitSrvAccPermissions\", SleepArgs.builder()\n .createDuration(\"10s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(autokeyProjectAdmin)\n .build());\n\n var example_autokeyconfig = new AutokeyConfig(\"example-autokeyconfig\", AutokeyConfigArgs.builder()\n .folder(autokmsFolder.id())\n .keyProject(keyProject.projectId().applyValue(projectId -\u003e String.format(\"projects/%s\", projectId)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(waitSrvAccPermissions)\n .build());\n\n // Wait delay after setting AutokeyConfig, to prevent diffs on reapply,\n // because setting the config takes a little to fully propagate.\n var waitAutokeyPropagation = new Sleep(\"waitAutokeyPropagation\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(example_autokeyconfig)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create Folder in GCP Organization\n autokmsFolder:\n type: gcp:organizations:Folder\n name: autokms_folder\n properties:\n displayName: my-folder\n parent: organizations/123456789\n deletionProtection: false\n # Create the key project\n keyProject:\n type: gcp:organizations:Project\n name: key_project\n properties:\n projectId: key-proj\n name: key-proj\n folderId: ${autokmsFolder.folderId}\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n options:\n dependsOn:\n - ${autokmsFolder}\n # Enable the Cloud KMS API\n kmsApiService:\n type: gcp:projects:Service\n name: kms_api_service\n properties:\n service: cloudkms.googleapis.com\n project: ${keyProject.projectId}\n disableOnDestroy: false\n disableDependentServices: true\n options:\n dependsOn:\n - ${keyProject}\n # Wait delay after enabling APIs\n waitEnableServiceApi:\n type: time:sleep\n name: wait_enable_service_api\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${kmsApiService}\n #Create KMS Service Agent\n kmsServiceAgent:\n type: gcp:projects:ServiceIdentity\n name: kms_service_agent\n properties:\n service: cloudkms.googleapis.com\n project: ${keyProject.number}\n options:\n dependsOn:\n - ${waitEnableServiceApi}\n # Wait delay after creating service agent.\n waitServiceAgent:\n type: time:sleep\n name: wait_service_agent\n properties:\n createDuration: 10s\n options:\n dependsOn:\n - ${kmsServiceAgent}\n #Grant the KMS Service Agent the Cloud KMS Admin role\n autokeyProjectAdmin:\n type: gcp:projects:IAMMember\n name: autokey_project_admin\n properties:\n project: ${keyProject.projectId}\n role: roles/cloudkms.admin\n member: serviceAccount:service-${keyProject.number}@gcp-sa-cloudkms.iam.gserviceaccount.com\n options:\n dependsOn:\n - ${waitServiceAgent}\n # Wait delay after granting IAM permissions\n waitSrvAccPermissions:\n type: time:sleep\n name: wait_srv_acc_permissions\n properties:\n createDuration: 10s\n options:\n dependsOn:\n - ${autokeyProjectAdmin}\n example-autokeyconfig:\n type: gcp:kms:AutokeyConfig\n properties:\n folder: ${autokmsFolder.id}\n keyProject: projects/${keyProject.projectId}\n options:\n dependsOn:\n - ${waitSrvAccPermissions}\n # Wait delay after setting AutokeyConfig, to prevent diffs on reapply,\n # because setting the config takes a little to fully propagate.\n waitAutokeyPropagation:\n type: time:sleep\n name: wait_autokey_propagation\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${[\"example-autokeyconfig\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutokeyConfig can be imported using any of these accepted formats:\n\n* `folders/{{folder}}/autokeyConfig`\n\n* `{{folder}}`\n\nWhen using the `pulumi import` command, AutokeyConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:kms/autokeyConfig:AutokeyConfig default folders/{{folder}}/autokeyConfig\n```\n\n```sh\n$ pulumi import gcp:kms/autokeyConfig:AutokeyConfig default {{folder}}\n```\n\n", + "description": "## Example Usage\n\n### Kms Autokey Config All\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\n// Create Folder in GCP Organization\nconst autokmsFolder = new gcp.organizations.Folder(\"autokms_folder\", {\n displayName: \"my-folder\",\n parent: \"organizations/123456789\",\n deletionProtection: false,\n});\n// Create the key project\nconst keyProject = new gcp.organizations.Project(\"key_project\", {\n projectId: \"key-proj\",\n name: \"key-proj\",\n folderId: autokmsFolder.folderId,\n billingAccount: \"000000-0000000-0000000-000000\",\n deletionPolicy: \"DELETE\",\n}, {\n dependsOn: [autokmsFolder],\n});\n// Enable the Cloud KMS API\nconst kmsApiService = new gcp.projects.Service(\"kms_api_service\", {\n service: \"cloudkms.googleapis.com\",\n project: keyProject.projectId,\n disableOnDestroy: false,\n disableDependentServices: true,\n}, {\n dependsOn: [keyProject],\n});\n// Wait delay after enabling APIs\nconst waitEnableServiceApi = new time.index.Sleep(\"wait_enable_service_api\", {createDuration: \"30s\"}, {\n dependsOn: [kmsApiService],\n});\n//Create KMS Service Agent\nconst kmsServiceAgent = new gcp.projects.ServiceIdentity(\"kms_service_agent\", {\n service: \"cloudkms.googleapis.com\",\n project: keyProject.number,\n}, {\n dependsOn: [waitEnableServiceApi],\n});\n// Wait delay after creating service agent.\nconst waitServiceAgent = new time.index.Sleep(\"wait_service_agent\", {createDuration: \"10s\"}, {\n dependsOn: [kmsServiceAgent],\n});\n//Grant the KMS Service Agent the Cloud KMS Admin role\nconst autokeyProjectAdmin = new gcp.projects.IAMMember(\"autokey_project_admin\", {\n project: keyProject.projectId,\n role: \"roles/cloudkms.admin\",\n member: pulumi.interpolate`serviceAccount:service-${keyProject.number}@gcp-sa-cloudkms.iam.gserviceaccount.com`,\n}, {\n dependsOn: [waitServiceAgent],\n});\n// Wait delay after granting IAM permissions\nconst waitSrvAccPermissions = new time.index.Sleep(\"wait_srv_acc_permissions\", {createDuration: \"10s\"}, {\n dependsOn: [autokeyProjectAdmin],\n});\nconst example_autokeyconfig = new gcp.kms.AutokeyConfig(\"example-autokeyconfig\", {\n folder: autokmsFolder.id,\n keyProject: pulumi.interpolate`projects/${keyProject.projectId}`,\n}, {\n dependsOn: [waitSrvAccPermissions],\n});\n// Wait delay after setting AutokeyConfig, to prevent diffs on reapply,\n// because setting the config takes a little to fully propagate.\nconst waitAutokeyPropagation = new time.index.Sleep(\"wait_autokey_propagation\", {createDuration: \"30s\"}, {\n dependsOn: [example_autokeyconfig],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\n# Create Folder in GCP Organization\nautokms_folder = gcp.organizations.Folder(\"autokms_folder\",\n display_name=\"my-folder\",\n parent=\"organizations/123456789\",\n deletion_protection=False)\n# Create the key project\nkey_project = gcp.organizations.Project(\"key_project\",\n project_id=\"key-proj\",\n name=\"key-proj\",\n folder_id=autokms_folder.folder_id,\n billing_account=\"000000-0000000-0000000-000000\",\n deletion_policy=\"DELETE\",\n opts = pulumi.ResourceOptions(depends_on=[autokms_folder]))\n# Enable the Cloud KMS API\nkms_api_service = gcp.projects.Service(\"kms_api_service\",\n service=\"cloudkms.googleapis.com\",\n project=key_project.project_id,\n disable_on_destroy=False,\n disable_dependent_services=True,\n opts = pulumi.ResourceOptions(depends_on=[key_project]))\n# Wait delay after enabling APIs\nwait_enable_service_api = time.index.Sleep(\"wait_enable_service_api\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[kms_api_service]))\n#Create KMS Service Agent\nkms_service_agent = gcp.projects.ServiceIdentity(\"kms_service_agent\",\n service=\"cloudkms.googleapis.com\",\n project=key_project.number,\n opts = pulumi.ResourceOptions(depends_on=[wait_enable_service_api]))\n# Wait delay after creating service agent.\nwait_service_agent = time.index.Sleep(\"wait_service_agent\", create_duration=10s,\nopts = pulumi.ResourceOptions(depends_on=[kms_service_agent]))\n#Grant the KMS Service Agent the Cloud KMS Admin role\nautokey_project_admin = gcp.projects.IAMMember(\"autokey_project_admin\",\n project=key_project.project_id,\n role=\"roles/cloudkms.admin\",\n member=key_project.number.apply(lambda number: f\"serviceAccount:service-{number}@gcp-sa-cloudkms.iam.gserviceaccount.com\"),\n opts = pulumi.ResourceOptions(depends_on=[wait_service_agent]))\n# Wait delay after granting IAM permissions\nwait_srv_acc_permissions = time.index.Sleep(\"wait_srv_acc_permissions\", create_duration=10s,\nopts = pulumi.ResourceOptions(depends_on=[autokey_project_admin]))\nexample_autokeyconfig = gcp.kms.AutokeyConfig(\"example-autokeyconfig\",\n folder=autokms_folder.id,\n key_project=key_project.project_id.apply(lambda project_id: f\"projects/{project_id}\"),\n opts = pulumi.ResourceOptions(depends_on=[wait_srv_acc_permissions]))\n# Wait delay after setting AutokeyConfig, to prevent diffs on reapply,\n# because setting the config takes a little to fully propagate.\nwait_autokey_propagation = time.index.Sleep(\"wait_autokey_propagation\", create_duration=30s,\nopts = pulumi.ResourceOptions(depends_on=[example_autokeyconfig]))\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 // Create Folder in GCP Organization\n var autokmsFolder = new Gcp.Organizations.Folder(\"autokms_folder\", new()\n {\n DisplayName = \"my-folder\",\n Parent = \"organizations/123456789\",\n DeletionProtection = false,\n });\n\n // Create the key project\n var keyProject = new Gcp.Organizations.Project(\"key_project\", new()\n {\n ProjectId = \"key-proj\",\n Name = \"key-proj\",\n FolderId = autokmsFolder.FolderId,\n BillingAccount = \"000000-0000000-0000000-000000\",\n DeletionPolicy = \"DELETE\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n autokmsFolder,\n },\n });\n\n // Enable the Cloud KMS API\n var kmsApiService = new Gcp.Projects.Service(\"kms_api_service\", new()\n {\n ServiceName = \"cloudkms.googleapis.com\",\n Project = keyProject.ProjectId,\n DisableOnDestroy = false,\n DisableDependentServices = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n keyProject,\n },\n });\n\n // Wait delay after enabling APIs\n var waitEnableServiceApi = new Time.Index.Sleep(\"wait_enable_service_api\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n kmsApiService,\n },\n });\n\n //Create KMS Service Agent\n var kmsServiceAgent = new Gcp.Projects.ServiceIdentity(\"kms_service_agent\", new()\n {\n Service = \"cloudkms.googleapis.com\",\n Project = keyProject.Number,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n waitEnableServiceApi,\n },\n });\n\n // Wait delay after creating service agent.\n var waitServiceAgent = new Time.Index.Sleep(\"wait_service_agent\", new()\n {\n CreateDuration = \"10s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n kmsServiceAgent,\n },\n });\n\n //Grant the KMS Service Agent the Cloud KMS Admin role\n var autokeyProjectAdmin = new Gcp.Projects.IAMMember(\"autokey_project_admin\", new()\n {\n Project = keyProject.ProjectId,\n Role = \"roles/cloudkms.admin\",\n Member = keyProject.Number.Apply(number =\u003e $\"serviceAccount:service-{number}@gcp-sa-cloudkms.iam.gserviceaccount.com\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n waitServiceAgent,\n },\n });\n\n // Wait delay after granting IAM permissions\n var waitSrvAccPermissions = new Time.Index.Sleep(\"wait_srv_acc_permissions\", new()\n {\n CreateDuration = \"10s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n autokeyProjectAdmin,\n },\n });\n\n var example_autokeyconfig = new Gcp.Kms.AutokeyConfig(\"example-autokeyconfig\", new()\n {\n Folder = autokmsFolder.Id,\n KeyProject = keyProject.ProjectId.Apply(projectId =\u003e $\"projects/{projectId}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n waitSrvAccPermissions,\n },\n });\n\n // Wait delay after setting AutokeyConfig, to prevent diffs on reapply,\n // because setting the config takes a little to fully propagate.\n var waitAutokeyPropagation = new Time.Index.Sleep(\"wait_autokey_propagation\", new()\n {\n CreateDuration = \"30s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n example_autokeyconfig,\n },\n });\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/projects\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// Create Folder in GCP Organization\n\t\tautokmsFolder, err := organizations.NewFolder(ctx, \"autokms_folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"my-folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create the key project\n\t\tkeyProject, err := organizations.NewProject(ctx, \"key_project\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"key-proj\"),\n\t\t\tName: pulumi.String(\"key-proj\"),\n\t\t\tFolderId: autokmsFolder.FolderId,\n\t\t\tBillingAccount: pulumi.String(\"000000-0000000-0000000-000000\"),\n\t\t\tDeletionPolicy: pulumi.String(\"DELETE\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tautokmsFolder,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Enable the Cloud KMS API\n\t\tkmsApiService, err := projects.NewService(ctx, \"kms_api_service\", \u0026projects.ServiceArgs{\n\t\t\tService: pulumi.String(\"cloudkms.googleapis.com\"),\n\t\t\tProject: keyProject.ProjectId,\n\t\t\tDisableOnDestroy: pulumi.Bool(false),\n\t\t\tDisableDependentServices: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkeyProject,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait delay after enabling APIs\n\t\twaitEnableServiceApi, err := time.NewSleep(ctx, \"wait_enable_service_api\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkmsApiService,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create KMS Service Agent\n\t\tkmsServiceAgent, err := projects.NewServiceIdentity(ctx, \"kms_service_agent\", \u0026projects.ServiceIdentityArgs{\n\t\t\tService: pulumi.String(\"cloudkms.googleapis.com\"),\n\t\t\tProject: keyProject.Number,\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twaitEnableServiceApi,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait delay after creating service agent.\n\t\twaitServiceAgent, err := time.NewSleep(ctx, \"wait_service_agent\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"10s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tkmsServiceAgent,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Grant the KMS Service Agent the Cloud KMS Admin role\n\t\tautokeyProjectAdmin, err := projects.NewIAMMember(ctx, \"autokey_project_admin\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: keyProject.ProjectId,\n\t\t\tRole: pulumi.String(\"roles/cloudkms.admin\"),\n\t\t\tMember: keyProject.Number.ApplyT(func(number string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"serviceAccount:service-%v@gcp-sa-cloudkms.iam.gserviceaccount.com\", number), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twaitServiceAgent,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait delay after granting IAM permissions\n\t\twaitSrvAccPermissions, err := time.NewSleep(ctx, \"wait_srv_acc_permissions\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"10s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tautokeyProjectAdmin,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texample_autokeyconfig, err := kms.NewAutokeyConfig(ctx, \"example-autokeyconfig\", \u0026kms.AutokeyConfigArgs{\n\t\t\tFolder: autokmsFolder.ID(),\n\t\t\tKeyProject: keyProject.ProjectId.ApplyT(func(projectId string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"projects/%v\", projectId), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\twaitSrvAccPermissions,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Wait delay after setting AutokeyConfig, to prevent diffs on reapply,\n\t\t// because setting the config takes a little to fully propagate.\n\t\t_, err = time.NewSleep(ctx, \"wait_autokey_propagation\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"30s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texample_autokeyconfig,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.projects.Service;\nimport com.pulumi.gcp.projects.ServiceArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.kms.AutokeyConfig;\nimport com.pulumi.gcp.kms.AutokeyConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Create Folder in GCP Organization\n var autokmsFolder = new Folder(\"autokmsFolder\", FolderArgs.builder()\n .displayName(\"my-folder\")\n .parent(\"organizations/123456789\")\n .deletionProtection(false)\n .build());\n\n // Create the key project\n var keyProject = new Project(\"keyProject\", ProjectArgs.builder()\n .projectId(\"key-proj\")\n .name(\"key-proj\")\n .folderId(autokmsFolder.folderId())\n .billingAccount(\"000000-0000000-0000000-000000\")\n .deletionPolicy(\"DELETE\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(autokmsFolder)\n .build());\n\n // Enable the Cloud KMS API\n var kmsApiService = new Service(\"kmsApiService\", ServiceArgs.builder()\n .service(\"cloudkms.googleapis.com\")\n .project(keyProject.projectId())\n .disableOnDestroy(false)\n .disableDependentServices(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(keyProject)\n .build());\n\n // Wait delay after enabling APIs\n var waitEnableServiceApi = new Sleep(\"waitEnableServiceApi\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(kmsApiService)\n .build());\n\n //Create KMS Service Agent\n var kmsServiceAgent = new ServiceIdentity(\"kmsServiceAgent\", ServiceIdentityArgs.builder()\n .service(\"cloudkms.googleapis.com\")\n .project(keyProject.number())\n .build(), CustomResourceOptions.builder()\n .dependsOn(waitEnableServiceApi)\n .build());\n\n // Wait delay after creating service agent.\n var waitServiceAgent = new Sleep(\"waitServiceAgent\", SleepArgs.builder()\n .createDuration(\"10s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(kmsServiceAgent)\n .build());\n\n //Grant the KMS Service Agent the Cloud KMS Admin role\n var autokeyProjectAdmin = new IAMMember(\"autokeyProjectAdmin\", IAMMemberArgs.builder()\n .project(keyProject.projectId())\n .role(\"roles/cloudkms.admin\")\n .member(keyProject.number().applyValue(number -\u003e String.format(\"serviceAccount:service-%s@gcp-sa-cloudkms.iam.gserviceaccount.com\", number)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(waitServiceAgent)\n .build());\n\n // Wait delay after granting IAM permissions\n var waitSrvAccPermissions = new Sleep(\"waitSrvAccPermissions\", SleepArgs.builder()\n .createDuration(\"10s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(autokeyProjectAdmin)\n .build());\n\n var example_autokeyconfig = new AutokeyConfig(\"example-autokeyconfig\", AutokeyConfigArgs.builder()\n .folder(autokmsFolder.id())\n .keyProject(keyProject.projectId().applyValue(projectId -\u003e String.format(\"projects/%s\", projectId)))\n .build(), CustomResourceOptions.builder()\n .dependsOn(waitSrvAccPermissions)\n .build());\n\n // Wait delay after setting AutokeyConfig, to prevent diffs on reapply,\n // because setting the config takes a little to fully propagate.\n var waitAutokeyPropagation = new Sleep(\"waitAutokeyPropagation\", SleepArgs.builder()\n .createDuration(\"30s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(example_autokeyconfig)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create Folder in GCP Organization\n autokmsFolder:\n type: gcp:organizations:Folder\n name: autokms_folder\n properties:\n displayName: my-folder\n parent: organizations/123456789\n deletionProtection: false\n # Create the key project\n keyProject:\n type: gcp:organizations:Project\n name: key_project\n properties:\n projectId: key-proj\n name: key-proj\n folderId: ${autokmsFolder.folderId}\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n options:\n dependsOn:\n - ${autokmsFolder}\n # Enable the Cloud KMS API\n kmsApiService:\n type: gcp:projects:Service\n name: kms_api_service\n properties:\n service: cloudkms.googleapis.com\n project: ${keyProject.projectId}\n disableOnDestroy: false\n disableDependentServices: true\n options:\n dependsOn:\n - ${keyProject}\n # Wait delay after enabling APIs\n waitEnableServiceApi:\n type: time:sleep\n name: wait_enable_service_api\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${kmsApiService}\n #Create KMS Service Agent\n kmsServiceAgent:\n type: gcp:projects:ServiceIdentity\n name: kms_service_agent\n properties:\n service: cloudkms.googleapis.com\n project: ${keyProject.number}\n options:\n dependsOn:\n - ${waitEnableServiceApi}\n # Wait delay after creating service agent.\n waitServiceAgent:\n type: time:sleep\n name: wait_service_agent\n properties:\n createDuration: 10s\n options:\n dependsOn:\n - ${kmsServiceAgent}\n #Grant the KMS Service Agent the Cloud KMS Admin role\n autokeyProjectAdmin:\n type: gcp:projects:IAMMember\n name: autokey_project_admin\n properties:\n project: ${keyProject.projectId}\n role: roles/cloudkms.admin\n member: serviceAccount:service-${keyProject.number}@gcp-sa-cloudkms.iam.gserviceaccount.com\n options:\n dependsOn:\n - ${waitServiceAgent}\n # Wait delay after granting IAM permissions\n waitSrvAccPermissions:\n type: time:sleep\n name: wait_srv_acc_permissions\n properties:\n createDuration: 10s\n options:\n dependsOn:\n - ${autokeyProjectAdmin}\n example-autokeyconfig:\n type: gcp:kms:AutokeyConfig\n properties:\n folder: ${autokmsFolder.id}\n keyProject: projects/${keyProject.projectId}\n options:\n dependsOn:\n - ${waitSrvAccPermissions}\n # Wait delay after setting AutokeyConfig, to prevent diffs on reapply,\n # because setting the config takes a little to fully propagate.\n waitAutokeyPropagation:\n type: time:sleep\n name: wait_autokey_propagation\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${[\"example-autokeyconfig\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutokeyConfig can be imported using any of these accepted formats:\n\n* `folders/{{folder}}/autokeyConfig`\n\n* `{{folder}}`\n\nWhen using the `pulumi import` command, AutokeyConfig can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:kms/autokeyConfig:AutokeyConfig default folders/{{folder}}/autokeyConfig\n```\n\n```sh\n$ pulumi import gcp:kms/autokeyConfig:AutokeyConfig default {{folder}}\n```\n\n", "properties": { "folder": { "type": "string", @@ -241409,7 +241409,7 @@ } }, "gcp:logging/billingAccountBucketConfig:BillingAccountBucketConfig": { - "description": "Manages a billing account level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.organizations.getBillingAccount({\n billingAccount: \"00AA00-000AAA-00AA0A\",\n});\nconst basic = new gcp.logging.BillingAccountBucketConfig(\"basic\", {\n billingAccount: _default.then(_default =\u003e _default.billingAccount),\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.get_billing_account(billing_account=\"00AA00-000AAA-00AA0A\")\nbasic = gcp.logging.BillingAccountBucketConfig(\"basic\",\n billing_account=default.billing_account,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"00AA00-000AAA-00AA0A\",\n });\n\n var basic = new Gcp.Logging.BillingAccountBucketConfig(\"basic\", new()\n {\n BillingAccount = @default.Apply(@default =\u003e @default.Apply(getBillingAccountResult =\u003e getBillingAccountResult.BillingAccount)),\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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_default, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"00AA00-000AAA-00AA0A\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewBillingAccountBucketConfig(ctx, \"basic\", \u0026logging.BillingAccountBucketConfigArgs{\n\t\t\tBillingAccount: pulumi.String(_default.BillingAccount),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.logging.BillingAccountBucketConfig;\nimport com.pulumi.gcp.logging.BillingAccountBucketConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"00AA00-000AAA-00AA0A\")\n .build());\n\n var basic = new BillingAccountBucketConfig(\"basic\", BillingAccountBucketConfigArgs.builder()\n .billingAccount(default_.billingAccount())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:logging:BillingAccountBucketConfig\n properties:\n billingAccount: ${default.billingAccount}\n location: global\n retentionDays: 30\n bucketId: _Default\nvariables:\n default:\n fn::invoke:\n function: gcp:organizations:getBillingAccount\n arguments:\n billingAccount: 00AA00-000AAA-00AA0A\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with index configs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example-billing-account-bucket-index-configs:\n type: gcp:logging:BillingAccountBucketConfig\n properties:\n folder: ${default.billingAccount}\n location: global\n retentionDays: 30\n bucketId: _Default\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `billingAccounts/{{billingAccount}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/billingAccountBucketConfig:BillingAccountBucketConfig default billingAccounts/{{billingAccount}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", + "description": "Manages a billing account level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = gcp.organizations.getBillingAccount({\n billingAccount: \"00AA00-000AAA-00AA0A\",\n});\nconst basic = new gcp.logging.BillingAccountBucketConfig(\"basic\", {\n billingAccount: _default.then(_default =\u003e _default.billingAccount),\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.get_billing_account(billing_account=\"00AA00-000AAA-00AA0A\")\nbasic = gcp.logging.BillingAccountBucketConfig(\"basic\",\n billing_account=default.billing_account,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Organizations.GetBillingAccount.Invoke(new()\n {\n BillingAccount = \"00AA00-000AAA-00AA0A\",\n });\n\n var basic = new Gcp.Logging.BillingAccountBucketConfig(\"basic\", new()\n {\n BillingAccount = @default.Apply(@default =\u003e @default.Apply(getBillingAccountResult =\u003e getBillingAccountResult.BillingAccount)),\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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_default, err := organizations.GetBillingAccount(ctx, \u0026organizations.GetBillingAccountArgs{\n\t\t\tBillingAccount: pulumi.StringRef(\"00AA00-000AAA-00AA0A\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewBillingAccountBucketConfig(ctx, \"basic\", \u0026logging.BillingAccountBucketConfigArgs{\n\t\t\tBillingAccount: pulumi.String(_default.BillingAccount),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetBillingAccountArgs;\nimport com.pulumi.gcp.logging.BillingAccountBucketConfig;\nimport com.pulumi.gcp.logging.BillingAccountBucketConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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.getBillingAccount(GetBillingAccountArgs.builder()\n .billingAccount(\"00AA00-000AAA-00AA0A\")\n .build());\n\n var basic = new BillingAccountBucketConfig(\"basic\", BillingAccountBucketConfigArgs.builder()\n .billingAccount(default_.billingAccount())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:logging:BillingAccountBucketConfig\n properties:\n billingAccount: ${default.billingAccount}\n location: global\n retentionDays: 30\n bucketId: _Default\nvariables:\n default:\n fn::invoke:\n function: gcp:organizations:getBillingAccount\n arguments:\n billingAccount: 00AA00-000AAA-00AA0A\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with index configs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```yaml\nresources:\n example-billing-account-bucket-index-configs:\n type: gcp:logging:BillingAccountBucketConfig\n properties:\n folder: ${default.billingAccount}\n location: global\n retentionDays: 30\n bucketId: _Default\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `billingAccounts/{{billingAccount}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/billingAccountBucketConfig:BillingAccountBucketConfig default billingAccounts/{{billingAccount}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", "properties": { "billingAccount": { "type": "string", @@ -241637,7 +241637,7 @@ } }, "gcp:logging/billingAccountSink:BillingAccountSink": { - "description": "* [API documentation](https://cloud.google.com/logging/docs/reference/v2/rest/v2/billingAccounts.sinks)\n* How-to Guides\n * [Exporting Logs](https://cloud.google.com/logging/docs/export)\n\n\u003e **Note** You must have the \"Logs Configuration Writer\" IAM role (`roles/logging.configWriter`)\n[granted on the billing account](https://cloud.google.com/billing/reference/rest/v1/billingAccounts/getIamPolicy) to\nthe credentials used with this provider. [IAM roles granted on a billing account](https://cloud.google.com/billing/docs/how-to/billing-access) are separate from the\ntypical IAM roles granted on a 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 log_bucket = new gcp.storage.Bucket(\"log-bucket\", {\n name: \"billing-logging-bucket\",\n location: \"US\",\n});\nconst my_sink = new gcp.logging.BillingAccountSink(\"my-sink\", {\n name: \"my-sink\",\n description: \"some explanation on what this is\",\n billingAccount: \"ABCDEF-012345-GHIJKL\",\n destination: pulumi.interpolate`storage.googleapis.com/${log_bucket.name}`,\n});\nconst log_writer = new gcp.projects.IAMBinding(\"log-writer\", {\n project: \"your-project-id\",\n role: \"roles/storage.objectCreator\",\n members: [my_sink.writerIdentity],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlog_bucket = gcp.storage.Bucket(\"log-bucket\",\n name=\"billing-logging-bucket\",\n location=\"US\")\nmy_sink = gcp.logging.BillingAccountSink(\"my-sink\",\n name=\"my-sink\",\n description=\"some explanation on what this is\",\n billing_account=\"ABCDEF-012345-GHIJKL\",\n destination=log_bucket.name.apply(lambda name: f\"storage.googleapis.com/{name}\"))\nlog_writer = gcp.projects.IAMBinding(\"log-writer\",\n project=\"your-project-id\",\n role=\"roles/storage.objectCreator\",\n members=[my_sink.writer_identity])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var log_bucket = new Gcp.Storage.Bucket(\"log-bucket\", new()\n {\n Name = \"billing-logging-bucket\",\n Location = \"US\",\n });\n\n var my_sink = new Gcp.Logging.BillingAccountSink(\"my-sink\", new()\n {\n Name = \"my-sink\",\n Description = \"some explanation on what this is\",\n BillingAccount = \"ABCDEF-012345-GHIJKL\",\n Destination = log_bucket.Name.Apply(name =\u003e $\"storage.googleapis.com/{name}\"),\n });\n\n var log_writer = new Gcp.Projects.IAMBinding(\"log-writer\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/storage.objectCreator\",\n Members = new[]\n {\n my_sink.WriterIdentity,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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\t_, err := storage.NewBucket(ctx, \"log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"billing-logging-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 = logging.NewBillingAccountSink(ctx, \"my-sink\", \u0026logging.BillingAccountSinkArgs{\n\t\t\tName: pulumi.String(\"my-sink\"),\n\t\t\tDescription: pulumi.String(\"some explanation on what this is\"),\n\t\t\tBillingAccount: pulumi.String(\"ABCDEF-012345-GHIJKL\"),\n\t\t\tDestination: log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"storage.googleapis.com/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMBinding(ctx, \"log-writer\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/storage.objectCreator\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tmy_sink.WriterIdentity,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.logging.BillingAccountSink;\nimport com.pulumi.gcp.logging.BillingAccountSinkArgs;\nimport com.pulumi.gcp.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var log_bucket = new Bucket(\"log-bucket\", BucketArgs.builder()\n .name(\"billing-logging-bucket\")\n .location(\"US\")\n .build());\n\n var my_sink = new BillingAccountSink(\"my-sink\", BillingAccountSinkArgs.builder()\n .name(\"my-sink\")\n .description(\"some explanation on what this is\")\n .billingAccount(\"ABCDEF-012345-GHIJKL\")\n .destination(log_bucket.name().applyValue(name -\u003e String.format(\"storage.googleapis.com/%s\", name)))\n .build());\n\n var log_writer = new IAMBinding(\"log-writer\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/storage.objectCreator\")\n .members(my_sink.writerIdentity())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-sink:\n type: gcp:logging:BillingAccountSink\n properties:\n name: my-sink\n description: some explanation on what this is\n billingAccount: ABCDEF-012345-GHIJKL\n destination: storage.googleapis.com/${[\"log-bucket\"].name}\n log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: billing-logging-bucket\n location: US\n log-writer:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/storage.objectCreator\n members:\n - ${[\"my-sink\"].writerIdentity}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBilling account logging sinks can be imported using this format:\n\n* `billingAccounts/{{billing_account_id}}/sinks/{{sink_id}}`\n\nWhen using the `pulumi import` command, billing account logging sinks can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/billingAccountSink:BillingAccountSink default billingAccounts/{{billing_account_id}}/sinks/{{sink_id}}\n```\n\n", + "description": "* [API documentation](https://cloud.google.com/logging/docs/reference/v2/rest/v2/billingAccounts.sinks)\n* How-to Guides\n * [Exporting Logs](https://cloud.google.com/logging/docs/export)\n\n\u003e **Note** You must have the \"Logs Configuration Writer\" IAM role (`roles/logging.configWriter`)\n[granted on the billing account](https://cloud.google.com/billing/reference/rest/v1/billingAccounts/getIamPolicy) to\nthe credentials used with this provider. [IAM roles granted on a billing account](https://cloud.google.com/billing/docs/how-to/billing-access) are separate from the\ntypical IAM roles granted on a 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 log_bucket = new gcp.storage.Bucket(\"log-bucket\", {\n name: \"billing-logging-bucket\",\n location: \"US\",\n});\nconst my_sink = new gcp.logging.BillingAccountSink(\"my-sink\", {\n name: \"my-sink\",\n description: \"some explanation on what this is\",\n billingAccount: \"ABCDEF-012345-GHIJKL\",\n destination: pulumi.interpolate`storage.googleapis.com/${log_bucket.name}`,\n});\nconst log_writer = new gcp.projects.IAMBinding(\"log-writer\", {\n project: \"your-project-id\",\n role: \"roles/storage.objectCreator\",\n members: [my_sink.writerIdentity],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlog_bucket = gcp.storage.Bucket(\"log-bucket\",\n name=\"billing-logging-bucket\",\n location=\"US\")\nmy_sink = gcp.logging.BillingAccountSink(\"my-sink\",\n name=\"my-sink\",\n description=\"some explanation on what this is\",\n billing_account=\"ABCDEF-012345-GHIJKL\",\n destination=log_bucket.name.apply(lambda name: f\"storage.googleapis.com/{name}\"))\nlog_writer = gcp.projects.IAMBinding(\"log-writer\",\n project=\"your-project-id\",\n role=\"roles/storage.objectCreator\",\n members=[my_sink.writer_identity])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var log_bucket = new Gcp.Storage.Bucket(\"log-bucket\", new()\n {\n Name = \"billing-logging-bucket\",\n Location = \"US\",\n });\n\n var my_sink = new Gcp.Logging.BillingAccountSink(\"my-sink\", new()\n {\n Name = \"my-sink\",\n Description = \"some explanation on what this is\",\n BillingAccount = \"ABCDEF-012345-GHIJKL\",\n Destination = log_bucket.Name.Apply(name =\u003e $\"storage.googleapis.com/{name}\"),\n });\n\n var log_writer = new Gcp.Projects.IAMBinding(\"log-writer\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/storage.objectCreator\",\n Members = new[]\n {\n my_sink.WriterIdentity,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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\tlog_bucket, err := storage.NewBucket(ctx, \"log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"billing-logging-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\tmy_sink, err := logging.NewBillingAccountSink(ctx, \"my-sink\", \u0026logging.BillingAccountSinkArgs{\n\t\t\tName: pulumi.String(\"my-sink\"),\n\t\t\tDescription: pulumi.String(\"some explanation on what this is\"),\n\t\t\tBillingAccount: pulumi.String(\"ABCDEF-012345-GHIJKL\"),\n\t\t\tDestination: log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"storage.googleapis.com/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMBinding(ctx, \"log-writer\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/storage.objectCreator\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tmy_sink.WriterIdentity,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.logging.BillingAccountSink;\nimport com.pulumi.gcp.logging.BillingAccountSinkArgs;\nimport com.pulumi.gcp.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var log_bucket = new Bucket(\"log-bucket\", BucketArgs.builder()\n .name(\"billing-logging-bucket\")\n .location(\"US\")\n .build());\n\n var my_sink = new BillingAccountSink(\"my-sink\", BillingAccountSinkArgs.builder()\n .name(\"my-sink\")\n .description(\"some explanation on what this is\")\n .billingAccount(\"ABCDEF-012345-GHIJKL\")\n .destination(log_bucket.name().applyValue(name -\u003e String.format(\"storage.googleapis.com/%s\", name)))\n .build());\n\n var log_writer = new IAMBinding(\"log-writer\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/storage.objectCreator\")\n .members(my_sink.writerIdentity())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-sink:\n type: gcp:logging:BillingAccountSink\n properties:\n name: my-sink\n description: some explanation on what this is\n billingAccount: ABCDEF-012345-GHIJKL\n destination: storage.googleapis.com/${[\"log-bucket\"].name}\n log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: billing-logging-bucket\n location: US\n log-writer:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/storage.objectCreator\n members:\n - ${[\"my-sink\"].writerIdentity}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBilling account logging sinks can be imported using this format:\n\n* `billingAccounts/{{billing_account_id}}/sinks/{{sink_id}}`\n\nWhen using the `pulumi import` command, billing account logging sinks can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/billingAccountSink:BillingAccountSink default billingAccounts/{{billing_account_id}}/sinks/{{sink_id}}\n```\n\n", "properties": { "bigqueryOptions": { "$ref": "#/types/gcp:logging/BillingAccountSinkBigqueryOptions:BillingAccountSinkBigqueryOptions", @@ -241778,7 +241778,7 @@ } }, "gcp:logging/folderBucketConfig:FolderBucketConfig": { - "description": "Manages a folder-level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Folder(\"default\", {\n displayName: \"some-folder-name\",\n parent: \"organizations/123456789\",\n});\nconst basic = new gcp.logging.FolderBucketConfig(\"basic\", {\n folder: _default.name,\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n indexConfigs: [{\n fieldPath: \"jsonPayload.request.status\",\n type: \"INDEX_TYPE_STRING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Folder(\"default\",\n display_name=\"some-folder-name\",\n parent=\"organizations/123456789\")\nbasic = gcp.logging.FolderBucketConfig(\"basic\",\n folder=default.name,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\",\n index_configs=[{\n \"field_path\": \"jsonPayload.request.status\",\n \"type\": \"INDEX_TYPE_STRING\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Organizations.Folder(\"default\", new()\n {\n DisplayName = \"some-folder-name\",\n Parent = \"organizations/123456789\",\n });\n\n var basic = new Gcp.Logging.FolderBucketConfig(\"basic\", new()\n {\n Folder = @default.Name,\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n IndexConfigs = new[]\n {\n new Gcp.Logging.Inputs.FolderBucketConfigIndexConfigArgs\n {\n FieldPath = \"jsonPayload.request.status\",\n Type = \"INDEX_TYPE_STRING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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.NewFolder(ctx, \"default\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"some-folder-name\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewFolderBucketConfig(ctx, \"basic\", \u0026logging.FolderBucketConfigArgs{\n\t\t\tFolder: _default.Name,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t\tIndexConfigs: logging.FolderBucketConfigIndexConfigArray{\n\t\t\t\t\u0026logging.FolderBucketConfigIndexConfigArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"jsonPayload.request.status\"),\n\t\t\t\t\tType: pulumi.String(\"INDEX_TYPE_STRING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.logging.FolderBucketConfig;\nimport com.pulumi.gcp.logging.FolderBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.FolderBucketConfigIndexConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Folder(\"default\", FolderArgs.builder()\n .displayName(\"some-folder-name\")\n .parent(\"organizations/123456789\")\n .build());\n\n var basic = new FolderBucketConfig(\"basic\", FolderBucketConfigArgs.builder()\n .folder(default_.name())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .indexConfigs(FolderBucketConfigIndexConfigArgs.builder()\n .fieldPath(\"jsonPayload.request.status\")\n .type(\"INDEX_TYPE_STRING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Folder\n properties:\n displayName: some-folder-name\n parent: organizations/123456789\n basic:\n type: gcp:logging:FolderBucketConfig\n properties:\n folder: ${default.name}\n location: global\n retentionDays: 30\n bucketId: _Default\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `folders/{{folder}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/folderBucketConfig:FolderBucketConfig default folders/{{folder}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", + "description": "Manages a folder-level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Folder(\"default\", {\n displayName: \"some-folder-name\",\n parent: \"organizations/123456789\",\n});\nconst basic = new gcp.logging.FolderBucketConfig(\"basic\", {\n folder: _default.name,\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n indexConfigs: [{\n fieldPath: \"jsonPayload.request.status\",\n type: \"INDEX_TYPE_STRING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Folder(\"default\",\n display_name=\"some-folder-name\",\n parent=\"organizations/123456789\")\nbasic = gcp.logging.FolderBucketConfig(\"basic\",\n folder=default.name,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\",\n index_configs=[{\n \"field_path\": \"jsonPayload.request.status\",\n \"type\": \"INDEX_TYPE_STRING\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Organizations.Folder(\"default\", new()\n {\n DisplayName = \"some-folder-name\",\n Parent = \"organizations/123456789\",\n });\n\n var basic = new Gcp.Logging.FolderBucketConfig(\"basic\", new()\n {\n Folder = @default.Name,\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n IndexConfigs = new[]\n {\n new Gcp.Logging.Inputs.FolderBucketConfigIndexConfigArgs\n {\n FieldPath = \"jsonPayload.request.status\",\n Type = \"INDEX_TYPE_STRING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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_default, err := organizations.NewFolder(ctx, \"default\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"some-folder-name\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewFolderBucketConfig(ctx, \"basic\", \u0026logging.FolderBucketConfigArgs{\n\t\t\tFolder: _default.Name,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t\tIndexConfigs: logging.FolderBucketConfigIndexConfigArray{\n\t\t\t\t\u0026logging.FolderBucketConfigIndexConfigArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"jsonPayload.request.status\"),\n\t\t\t\t\tType: pulumi.String(\"INDEX_TYPE_STRING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.logging.FolderBucketConfig;\nimport com.pulumi.gcp.logging.FolderBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.FolderBucketConfigIndexConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Folder(\"default\", FolderArgs.builder()\n .displayName(\"some-folder-name\")\n .parent(\"organizations/123456789\")\n .build());\n\n var basic = new FolderBucketConfig(\"basic\", FolderBucketConfigArgs.builder()\n .folder(default_.name())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .indexConfigs(FolderBucketConfigIndexConfigArgs.builder()\n .fieldPath(\"jsonPayload.request.status\")\n .type(\"INDEX_TYPE_STRING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Folder\n properties:\n displayName: some-folder-name\n parent: organizations/123456789\n basic:\n type: gcp:logging:FolderBucketConfig\n properties:\n folder: ${default.name}\n location: global\n retentionDays: 30\n bucketId: _Default\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `folders/{{folder}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/folderBucketConfig:FolderBucketConfig default folders/{{folder}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", "properties": { "bucketId": { "type": "string", @@ -241920,7 +241920,7 @@ } }, "gcp:logging/folderExclusion:FolderExclusion": { - "description": "Manages a folder-level logging exclusion. For more information see:\n\n* [API documentation](https://cloud.google.com/logging/docs/reference/v2/rest/v2/folders.exclusions)\n* How-to Guides\n * [Excluding Logs](https://cloud.google.com/logging/docs/exclusions)\n\n\u003e You can specify exclusions for log sinks created by the provider by using the exclusions field of `gcp.logging.FolderSink`\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 my_folder = new gcp.organizations.Folder(\"my-folder\", {\n displayName: \"My folder\",\n parent: \"organizations/123456\",\n});\nconst my_exclusion = new gcp.logging.FolderExclusion(\"my-exclusion\", {\n name: \"my-instance-debug-exclusion\",\n folder: my_folder.name,\n description: \"Exclude GCE instance debug logs\",\n filter: \"resource.type = gce_instance AND severity \u003c= DEBUG\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_folder = gcp.organizations.Folder(\"my-folder\",\n display_name=\"My folder\",\n parent=\"organizations/123456\")\nmy_exclusion = gcp.logging.FolderExclusion(\"my-exclusion\",\n name=\"my-instance-debug-exclusion\",\n folder=my_folder.name,\n description=\"Exclude GCE instance debug logs\",\n filter=\"resource.type = gce_instance AND severity \u003c= DEBUG\")\n```\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_folder = new Gcp.Organizations.Folder(\"my-folder\", new()\n {\n DisplayName = \"My folder\",\n Parent = \"organizations/123456\",\n });\n\n var my_exclusion = new Gcp.Logging.FolderExclusion(\"my-exclusion\", new()\n {\n Name = \"my-instance-debug-exclusion\",\n Folder = my_folder.Name,\n Description = \"Exclude GCE instance debug logs\",\n Filter = \"resource.type = gce_instance AND severity \u003c= DEBUG\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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.NewFolder(ctx, \"my-folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"My folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewFolderExclusion(ctx, \"my-exclusion\", \u0026logging.FolderExclusionArgs{\n\t\t\tName: pulumi.String(\"my-instance-debug-exclusion\"),\n\t\t\tFolder: my_folder.Name,\n\t\t\tDescription: pulumi.String(\"Exclude GCE instance debug logs\"),\n\t\t\tFilter: pulumi.String(\"resource.type = gce_instance AND severity \u003c= DEBUG\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.logging.FolderExclusion;\nimport com.pulumi.gcp.logging.FolderExclusionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_folder = new Folder(\"my-folder\", FolderArgs.builder()\n .displayName(\"My folder\")\n .parent(\"organizations/123456\")\n .build());\n\n var my_exclusion = new FolderExclusion(\"my-exclusion\", FolderExclusionArgs.builder()\n .name(\"my-instance-debug-exclusion\")\n .folder(my_folder.name())\n .description(\"Exclude GCE instance debug logs\")\n .filter(\"resource.type = gce_instance AND severity \u003c= DEBUG\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-exclusion:\n type: gcp:logging:FolderExclusion\n properties:\n name: my-instance-debug-exclusion\n folder: ${[\"my-folder\"].name}\n description: Exclude GCE instance debug logs\n filter: resource.type = gce_instance AND severity \u003c= DEBUG\n my-folder:\n type: gcp:organizations:Folder\n properties:\n displayName: My folder\n parent: organizations/123456\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolder-level logging exclusions can be imported using their URI, e.g.\n\n* `folders/{{folder}}/exclusions/{{name}}`\n\nWhen using the `pulumi import` command, folder-level logging exclusions can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/folderExclusion:FolderExclusion default folders/{{folder}}/exclusions/{{name}}\n```\n\n", + "description": "Manages a folder-level logging exclusion. For more information see:\n\n* [API documentation](https://cloud.google.com/logging/docs/reference/v2/rest/v2/folders.exclusions)\n* How-to Guides\n * [Excluding Logs](https://cloud.google.com/logging/docs/exclusions)\n\n\u003e You can specify exclusions for log sinks created by the provider by using the exclusions field of `gcp.logging.FolderSink`\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 my_folder = new gcp.organizations.Folder(\"my-folder\", {\n displayName: \"My folder\",\n parent: \"organizations/123456\",\n});\nconst my_exclusion = new gcp.logging.FolderExclusion(\"my-exclusion\", {\n name: \"my-instance-debug-exclusion\",\n folder: my_folder.name,\n description: \"Exclude GCE instance debug logs\",\n filter: \"resource.type = gce_instance AND severity \u003c= DEBUG\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_folder = gcp.organizations.Folder(\"my-folder\",\n display_name=\"My folder\",\n parent=\"organizations/123456\")\nmy_exclusion = gcp.logging.FolderExclusion(\"my-exclusion\",\n name=\"my-instance-debug-exclusion\",\n folder=my_folder.name,\n description=\"Exclude GCE instance debug logs\",\n filter=\"resource.type = gce_instance AND severity \u003c= DEBUG\")\n```\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_folder = new Gcp.Organizations.Folder(\"my-folder\", new()\n {\n DisplayName = \"My folder\",\n Parent = \"organizations/123456\",\n });\n\n var my_exclusion = new Gcp.Logging.FolderExclusion(\"my-exclusion\", new()\n {\n Name = \"my-instance-debug-exclusion\",\n Folder = my_folder.Name,\n Description = \"Exclude GCE instance debug logs\",\n Filter = \"resource.type = gce_instance AND severity \u003c= DEBUG\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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\tmy_folder, err := organizations.NewFolder(ctx, \"my-folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"My folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewFolderExclusion(ctx, \"my-exclusion\", \u0026logging.FolderExclusionArgs{\n\t\t\tName: pulumi.String(\"my-instance-debug-exclusion\"),\n\t\t\tFolder: my_folder.Name,\n\t\t\tDescription: pulumi.String(\"Exclude GCE instance debug logs\"),\n\t\t\tFilter: pulumi.String(\"resource.type = gce_instance AND severity \u003c= DEBUG\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.logging.FolderExclusion;\nimport com.pulumi.gcp.logging.FolderExclusionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_folder = new Folder(\"my-folder\", FolderArgs.builder()\n .displayName(\"My folder\")\n .parent(\"organizations/123456\")\n .build());\n\n var my_exclusion = new FolderExclusion(\"my-exclusion\", FolderExclusionArgs.builder()\n .name(\"my-instance-debug-exclusion\")\n .folder(my_folder.name())\n .description(\"Exclude GCE instance debug logs\")\n .filter(\"resource.type = gce_instance AND severity \u003c= DEBUG\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-exclusion:\n type: gcp:logging:FolderExclusion\n properties:\n name: my-instance-debug-exclusion\n folder: ${[\"my-folder\"].name}\n description: Exclude GCE instance debug logs\n filter: resource.type = gce_instance AND severity \u003c= DEBUG\n my-folder:\n type: gcp:organizations:Folder\n properties:\n displayName: My folder\n parent: organizations/123456\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolder-level logging exclusions can be imported using their URI, e.g.\n\n* `folders/{{folder}}/exclusions/{{name}}`\n\nWhen using the `pulumi import` command, folder-level logging exclusions can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/folderExclusion:FolderExclusion default folders/{{folder}}/exclusions/{{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -242105,7 +242105,7 @@ } }, "gcp:logging/folderSink:FolderSink": { - "description": "Manages a folder-level logging sink. For more information see:\n* [API documentation](https://cloud.google.com/logging/docs/reference/v2/rest/v2/folders.sinks)\n* How-to Guides\n * [Exporting Logs](https://cloud.google.com/logging/docs/export)\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 log_bucket = new gcp.storage.Bucket(\"log-bucket\", {\n name: \"folder-logging-bucket\",\n location: \"US\",\n});\nconst my_folder = new gcp.organizations.Folder(\"my-folder\", {\n displayName: \"My folder\",\n parent: \"organizations/123456\",\n});\nconst my_sink = new gcp.logging.FolderSink(\"my-sink\", {\n name: \"my-sink\",\n description: \"some explanation on what this is\",\n folder: my_folder.name,\n destination: pulumi.interpolate`storage.googleapis.com/${log_bucket.name}`,\n filter: \"resource.type = gce_instance AND severity \u003e= WARNING\",\n});\nconst log_writer = new gcp.projects.IAMBinding(\"log-writer\", {\n project: \"your-project-id\",\n role: \"roles/storage.objectCreator\",\n members: [my_sink.writerIdentity],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlog_bucket = gcp.storage.Bucket(\"log-bucket\",\n name=\"folder-logging-bucket\",\n location=\"US\")\nmy_folder = gcp.organizations.Folder(\"my-folder\",\n display_name=\"My folder\",\n parent=\"organizations/123456\")\nmy_sink = gcp.logging.FolderSink(\"my-sink\",\n name=\"my-sink\",\n description=\"some explanation on what this is\",\n folder=my_folder.name,\n destination=log_bucket.name.apply(lambda name: f\"storage.googleapis.com/{name}\"),\n filter=\"resource.type = gce_instance AND severity \u003e= WARNING\")\nlog_writer = gcp.projects.IAMBinding(\"log-writer\",\n project=\"your-project-id\",\n role=\"roles/storage.objectCreator\",\n members=[my_sink.writer_identity])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var log_bucket = new Gcp.Storage.Bucket(\"log-bucket\", new()\n {\n Name = \"folder-logging-bucket\",\n Location = \"US\",\n });\n\n var my_folder = new Gcp.Organizations.Folder(\"my-folder\", new()\n {\n DisplayName = \"My folder\",\n Parent = \"organizations/123456\",\n });\n\n var my_sink = new Gcp.Logging.FolderSink(\"my-sink\", new()\n {\n Name = \"my-sink\",\n Description = \"some explanation on what this is\",\n Folder = my_folder.Name,\n Destination = log_bucket.Name.Apply(name =\u003e $\"storage.googleapis.com/{name}\"),\n Filter = \"resource.type = gce_instance AND severity \u003e= WARNING\",\n });\n\n var log_writer = new Gcp.Projects.IAMBinding(\"log-writer\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/storage.objectCreator\",\n Members = new[]\n {\n my_sink.WriterIdentity,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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\t_, err := storage.NewBucket(ctx, \"log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"folder-logging-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 = organizations.NewFolder(ctx, \"my-folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"My folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewFolderSink(ctx, \"my-sink\", \u0026logging.FolderSinkArgs{\n\t\t\tName: pulumi.String(\"my-sink\"),\n\t\t\tDescription: pulumi.String(\"some explanation on what this is\"),\n\t\t\tFolder: my_folder.Name,\n\t\t\tDestination: log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"storage.googleapis.com/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tFilter: pulumi.String(\"resource.type = gce_instance AND severity \u003e= WARNING\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMBinding(ctx, \"log-writer\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/storage.objectCreator\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tmy_sink.WriterIdentity,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.logging.FolderSink;\nimport com.pulumi.gcp.logging.FolderSinkArgs;\nimport com.pulumi.gcp.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var log_bucket = new Bucket(\"log-bucket\", BucketArgs.builder()\n .name(\"folder-logging-bucket\")\n .location(\"US\")\n .build());\n\n var my_folder = new Folder(\"my-folder\", FolderArgs.builder()\n .displayName(\"My folder\")\n .parent(\"organizations/123456\")\n .build());\n\n var my_sink = new FolderSink(\"my-sink\", FolderSinkArgs.builder()\n .name(\"my-sink\")\n .description(\"some explanation on what this is\")\n .folder(my_folder.name())\n .destination(log_bucket.name().applyValue(name -\u003e String.format(\"storage.googleapis.com/%s\", name)))\n .filter(\"resource.type = gce_instance AND severity \u003e= WARNING\")\n .build());\n\n var log_writer = new IAMBinding(\"log-writer\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/storage.objectCreator\")\n .members(my_sink.writerIdentity())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-sink:\n type: gcp:logging:FolderSink\n properties:\n name: my-sink\n description: some explanation on what this is\n folder: ${[\"my-folder\"].name}\n destination: storage.googleapis.com/${[\"log-bucket\"].name}\n filter: resource.type = gce_instance AND severity \u003e= WARNING\n log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: folder-logging-bucket\n location: US\n log-writer:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/storage.objectCreator\n members:\n - ${[\"my-sink\"].writerIdentity}\n my-folder:\n type: gcp:organizations:Folder\n properties:\n displayName: My folder\n parent: organizations/123456\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolder-level logging sinks can be imported using this format:\n\n* `folders/{{folder_id}}/sinks/{{name}}`\n\nWhen using the `pulumi import` command, folder-level logging sinks can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/folderSink:FolderSink default folders/{{folder_id}}/sinks/{{name}}\n```\n\n", + "description": "Manages a folder-level logging sink. For more information see:\n* [API documentation](https://cloud.google.com/logging/docs/reference/v2/rest/v2/folders.sinks)\n* How-to Guides\n * [Exporting Logs](https://cloud.google.com/logging/docs/export)\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 log_bucket = new gcp.storage.Bucket(\"log-bucket\", {\n name: \"folder-logging-bucket\",\n location: \"US\",\n});\nconst my_folder = new gcp.organizations.Folder(\"my-folder\", {\n displayName: \"My folder\",\n parent: \"organizations/123456\",\n});\nconst my_sink = new gcp.logging.FolderSink(\"my-sink\", {\n name: \"my-sink\",\n description: \"some explanation on what this is\",\n folder: my_folder.name,\n destination: pulumi.interpolate`storage.googleapis.com/${log_bucket.name}`,\n filter: \"resource.type = gce_instance AND severity \u003e= WARNING\",\n});\nconst log_writer = new gcp.projects.IAMBinding(\"log-writer\", {\n project: \"your-project-id\",\n role: \"roles/storage.objectCreator\",\n members: [my_sink.writerIdentity],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlog_bucket = gcp.storage.Bucket(\"log-bucket\",\n name=\"folder-logging-bucket\",\n location=\"US\")\nmy_folder = gcp.organizations.Folder(\"my-folder\",\n display_name=\"My folder\",\n parent=\"organizations/123456\")\nmy_sink = gcp.logging.FolderSink(\"my-sink\",\n name=\"my-sink\",\n description=\"some explanation on what this is\",\n folder=my_folder.name,\n destination=log_bucket.name.apply(lambda name: f\"storage.googleapis.com/{name}\"),\n filter=\"resource.type = gce_instance AND severity \u003e= WARNING\")\nlog_writer = gcp.projects.IAMBinding(\"log-writer\",\n project=\"your-project-id\",\n role=\"roles/storage.objectCreator\",\n members=[my_sink.writer_identity])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var log_bucket = new Gcp.Storage.Bucket(\"log-bucket\", new()\n {\n Name = \"folder-logging-bucket\",\n Location = \"US\",\n });\n\n var my_folder = new Gcp.Organizations.Folder(\"my-folder\", new()\n {\n DisplayName = \"My folder\",\n Parent = \"organizations/123456\",\n });\n\n var my_sink = new Gcp.Logging.FolderSink(\"my-sink\", new()\n {\n Name = \"my-sink\",\n Description = \"some explanation on what this is\",\n Folder = my_folder.Name,\n Destination = log_bucket.Name.Apply(name =\u003e $\"storage.googleapis.com/{name}\"),\n Filter = \"resource.type = gce_instance AND severity \u003e= WARNING\",\n });\n\n var log_writer = new Gcp.Projects.IAMBinding(\"log-writer\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/storage.objectCreator\",\n Members = new[]\n {\n my_sink.WriterIdentity,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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\tlog_bucket, err := storage.NewBucket(ctx, \"log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"folder-logging-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\tmy_folder, err := organizations.NewFolder(ctx, \"my-folder\", \u0026organizations.FolderArgs{\n\t\t\tDisplayName: pulumi.String(\"My folder\"),\n\t\t\tParent: pulumi.String(\"organizations/123456\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmy_sink, err := logging.NewFolderSink(ctx, \"my-sink\", \u0026logging.FolderSinkArgs{\n\t\t\tName: pulumi.String(\"my-sink\"),\n\t\t\tDescription: pulumi.String(\"some explanation on what this is\"),\n\t\t\tFolder: my_folder.Name,\n\t\t\tDestination: log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"storage.googleapis.com/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tFilter: pulumi.String(\"resource.type = gce_instance AND severity \u003e= WARNING\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMBinding(ctx, \"log-writer\", \u0026projects.IAMBindingArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/storage.objectCreator\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tmy_sink.WriterIdentity,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.logging.FolderSink;\nimport com.pulumi.gcp.logging.FolderSinkArgs;\nimport com.pulumi.gcp.projects.IAMBinding;\nimport com.pulumi.gcp.projects.IAMBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var log_bucket = new Bucket(\"log-bucket\", BucketArgs.builder()\n .name(\"folder-logging-bucket\")\n .location(\"US\")\n .build());\n\n var my_folder = new Folder(\"my-folder\", FolderArgs.builder()\n .displayName(\"My folder\")\n .parent(\"organizations/123456\")\n .build());\n\n var my_sink = new FolderSink(\"my-sink\", FolderSinkArgs.builder()\n .name(\"my-sink\")\n .description(\"some explanation on what this is\")\n .folder(my_folder.name())\n .destination(log_bucket.name().applyValue(name -\u003e String.format(\"storage.googleapis.com/%s\", name)))\n .filter(\"resource.type = gce_instance AND severity \u003e= WARNING\")\n .build());\n\n var log_writer = new IAMBinding(\"log-writer\", IAMBindingArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/storage.objectCreator\")\n .members(my_sink.writerIdentity())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-sink:\n type: gcp:logging:FolderSink\n properties:\n name: my-sink\n description: some explanation on what this is\n folder: ${[\"my-folder\"].name}\n destination: storage.googleapis.com/${[\"log-bucket\"].name}\n filter: resource.type = gce_instance AND severity \u003e= WARNING\n log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: folder-logging-bucket\n location: US\n log-writer:\n type: gcp:projects:IAMBinding\n properties:\n project: your-project-id\n role: roles/storage.objectCreator\n members:\n - ${[\"my-sink\"].writerIdentity}\n my-folder:\n type: gcp:organizations:Folder\n properties:\n displayName: My folder\n parent: organizations/123456\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolder-level logging sinks can be imported using this format:\n\n* `folders/{{folder_id}}/sinks/{{name}}`\n\nWhen using the `pulumi import` command, folder-level logging sinks can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/folderSink:FolderSink default folders/{{folder_id}}/sinks/{{name}}\n```\n\n", "properties": { "bigqueryOptions": { "$ref": "#/types/gcp:logging/FolderSinkBigqueryOptions:FolderSinkBigqueryOptions", @@ -243177,7 +243177,7 @@ } }, "gcp:logging/organizationBucketConfig:OrganizationBucketConfig": { - "description": "Manages a organization-level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.organizations.getOrganization({\n organization: \"123456789\",\n});\nconst basic = new gcp.logging.OrganizationBucketConfig(\"basic\", {\n organization: _default.then(_default =\u003e _default.organization),\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n indexConfigs: [{\n fieldPath: \"jsonPayload.request.status\",\n type: \"INDEX_TYPE_STRING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.get_organization(organization=\"123456789\")\nbasic = gcp.logging.OrganizationBucketConfig(\"basic\",\n organization=default.organization,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\",\n index_configs=[{\n \"field_path\": \"jsonPayload.request.status\",\n \"type\": \"INDEX_TYPE_STRING\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Organizations.GetOrganization.Invoke(new()\n {\n Organization = \"123456789\",\n });\n\n var basic = new Gcp.Logging.OrganizationBucketConfig(\"basic\", new()\n {\n Organization = @default.Apply(@default =\u003e @default.Apply(getOrganizationResult =\u003e getOrganizationResult.Organization)),\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n IndexConfigs = new[]\n {\n new Gcp.Logging.Inputs.OrganizationBucketConfigIndexConfigArgs\n {\n FieldPath = \"jsonPayload.request.status\",\n Type = \"INDEX_TYPE_STRING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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_default, err := organizations.GetOrganization(ctx, \u0026organizations.GetOrganizationArgs{\n\t\t\tOrganization: pulumi.StringRef(\"123456789\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewOrganizationBucketConfig(ctx, \"basic\", \u0026logging.OrganizationBucketConfigArgs{\n\t\t\tOrganization: pulumi.String(_default.Organization),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t\tIndexConfigs: logging.OrganizationBucketConfigIndexConfigArray{\n\t\t\t\t\u0026logging.OrganizationBucketConfigIndexConfigArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"jsonPayload.request.status\"),\n\t\t\t\t\tType: pulumi.String(\"INDEX_TYPE_STRING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetOrganizationArgs;\nimport com.pulumi.gcp.logging.OrganizationBucketConfig;\nimport com.pulumi.gcp.logging.OrganizationBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.OrganizationBucketConfigIndexConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = OrganizationsFunctions.getOrganization(GetOrganizationArgs.builder()\n .organization(\"123456789\")\n .build());\n\n var basic = new OrganizationBucketConfig(\"basic\", OrganizationBucketConfigArgs.builder()\n .organization(default_.organization())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .indexConfigs(OrganizationBucketConfigIndexConfigArgs.builder()\n .fieldPath(\"jsonPayload.request.status\")\n .type(\"INDEX_TYPE_STRING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:logging:OrganizationBucketConfig\n properties:\n organization: ${default.organization}\n location: global\n retentionDays: 30\n bucketId: _Default\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\nvariables:\n default:\n fn::invoke:\n function: gcp:organizations:getOrganization\n arguments:\n organization: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `organizations/{{organization}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/organizationBucketConfig:OrganizationBucketConfig default organizations/{{organization}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", + "description": "Manages a organization-level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = gcp.organizations.getOrganization({\n organization: \"123456789\",\n});\nconst basic = new gcp.logging.OrganizationBucketConfig(\"basic\", {\n organization: _default.then(_default =\u003e _default.organization),\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n indexConfigs: [{\n fieldPath: \"jsonPayload.request.status\",\n type: \"INDEX_TYPE_STRING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.get_organization(organization=\"123456789\")\nbasic = gcp.logging.OrganizationBucketConfig(\"basic\",\n organization=default.organization,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\",\n index_configs=[{\n \"field_path\": \"jsonPayload.request.status\",\n \"type\": \"INDEX_TYPE_STRING\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Organizations.GetOrganization.Invoke(new()\n {\n Organization = \"123456789\",\n });\n\n var basic = new Gcp.Logging.OrganizationBucketConfig(\"basic\", new()\n {\n Organization = @default.Apply(@default =\u003e @default.Apply(getOrganizationResult =\u003e getOrganizationResult.Organization)),\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n IndexConfigs = new[]\n {\n new Gcp.Logging.Inputs.OrganizationBucketConfigIndexConfigArgs\n {\n FieldPath = \"jsonPayload.request.status\",\n Type = \"INDEX_TYPE_STRING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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_default, err := organizations.GetOrganization(ctx, \u0026organizations.GetOrganizationArgs{\n\t\t\tOrganization: pulumi.StringRef(\"123456789\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewOrganizationBucketConfig(ctx, \"basic\", \u0026logging.OrganizationBucketConfigArgs{\n\t\t\tOrganization: pulumi.String(_default.Organization),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t\tIndexConfigs: logging.OrganizationBucketConfigIndexConfigArray{\n\t\t\t\t\u0026logging.OrganizationBucketConfigIndexConfigArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"jsonPayload.request.status\"),\n\t\t\t\t\tType: pulumi.String(\"INDEX_TYPE_STRING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetOrganizationArgs;\nimport com.pulumi.gcp.logging.OrganizationBucketConfig;\nimport com.pulumi.gcp.logging.OrganizationBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.OrganizationBucketConfigIndexConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = OrganizationsFunctions.getOrganization(GetOrganizationArgs.builder()\n .organization(\"123456789\")\n .build());\n\n var basic = new OrganizationBucketConfig(\"basic\", OrganizationBucketConfigArgs.builder()\n .organization(default_.organization())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .indexConfigs(OrganizationBucketConfigIndexConfigArgs.builder()\n .fieldPath(\"jsonPayload.request.status\")\n .type(\"INDEX_TYPE_STRING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:logging:OrganizationBucketConfig\n properties:\n organization: ${default.organization}\n location: global\n retentionDays: 30\n bucketId: _Default\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\nvariables:\n default:\n fn::invoke:\n function: gcp:organizations:getOrganization\n arguments:\n organization: '123456789'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `organizations/{{organization}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/organizationBucketConfig:OrganizationBucketConfig default organizations/{{organization}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", "properties": { "bucketId": { "type": "string", @@ -243504,7 +243504,7 @@ } }, "gcp:logging/organizationSink:OrganizationSink": { - "description": "Manages a organization-level logging sink. For more information see:\n* [API documentation](https://cloud.google.com/logging/docs/reference/v2/rest/v2/organizations.sinks)\n* How-to Guides\n * [Exporting Logs](https://cloud.google.com/logging/docs/export)\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 log_bucket = new gcp.storage.Bucket(\"log-bucket\", {\n name: \"organization-logging-bucket\",\n location: \"US\",\n});\nconst my_sink = new gcp.logging.OrganizationSink(\"my-sink\", {\n name: \"my-sink\",\n description: \"some explanation on what this is\",\n orgId: \"123456789\",\n destination: pulumi.interpolate`storage.googleapis.com/${log_bucket.name}`,\n filter: \"resource.type = gce_instance AND severity \u003e= WARNING\",\n});\nconst log_writer = new gcp.projects.IAMMember(\"log-writer\", {\n project: \"your-project-id\",\n role: \"roles/storage.objectCreator\",\n member: my_sink.writerIdentity,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlog_bucket = gcp.storage.Bucket(\"log-bucket\",\n name=\"organization-logging-bucket\",\n location=\"US\")\nmy_sink = gcp.logging.OrganizationSink(\"my-sink\",\n name=\"my-sink\",\n description=\"some explanation on what this is\",\n org_id=\"123456789\",\n destination=log_bucket.name.apply(lambda name: f\"storage.googleapis.com/{name}\"),\n filter=\"resource.type = gce_instance AND severity \u003e= WARNING\")\nlog_writer = gcp.projects.IAMMember(\"log-writer\",\n project=\"your-project-id\",\n role=\"roles/storage.objectCreator\",\n member=my_sink.writer_identity)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var log_bucket = new Gcp.Storage.Bucket(\"log-bucket\", new()\n {\n Name = \"organization-logging-bucket\",\n Location = \"US\",\n });\n\n var my_sink = new Gcp.Logging.OrganizationSink(\"my-sink\", new()\n {\n Name = \"my-sink\",\n Description = \"some explanation on what this is\",\n OrgId = \"123456789\",\n Destination = log_bucket.Name.Apply(name =\u003e $\"storage.googleapis.com/{name}\"),\n Filter = \"resource.type = gce_instance AND severity \u003e= WARNING\",\n });\n\n var log_writer = new Gcp.Projects.IAMMember(\"log-writer\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/storage.objectCreator\",\n Member = my_sink.WriterIdentity,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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\t_, err := storage.NewBucket(ctx, \"log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"organization-logging-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 = logging.NewOrganizationSink(ctx, \"my-sink\", \u0026logging.OrganizationSinkArgs{\n\t\t\tName: pulumi.String(\"my-sink\"),\n\t\t\tDescription: pulumi.String(\"some explanation on what this is\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tDestination: log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"storage.googleapis.com/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tFilter: pulumi.String(\"resource.type = gce_instance AND severity \u003e= WARNING\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"log-writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/storage.objectCreator\"),\n\t\t\tMember: my_sink.WriterIdentity,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.logging.OrganizationSink;\nimport com.pulumi.gcp.logging.OrganizationSinkArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var log_bucket = new Bucket(\"log-bucket\", BucketArgs.builder()\n .name(\"organization-logging-bucket\")\n .location(\"US\")\n .build());\n\n var my_sink = new OrganizationSink(\"my-sink\", OrganizationSinkArgs.builder()\n .name(\"my-sink\")\n .description(\"some explanation on what this is\")\n .orgId(\"123456789\")\n .destination(log_bucket.name().applyValue(name -\u003e String.format(\"storage.googleapis.com/%s\", name)))\n .filter(\"resource.type = gce_instance AND severity \u003e= WARNING\")\n .build());\n\n var log_writer = new IAMMember(\"log-writer\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/storage.objectCreator\")\n .member(my_sink.writerIdentity())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-sink:\n type: gcp:logging:OrganizationSink\n properties:\n name: my-sink\n description: some explanation on what this is\n orgId: '123456789'\n destination: storage.googleapis.com/${[\"log-bucket\"].name}\n filter: resource.type = gce_instance AND severity \u003e= WARNING\n log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: organization-logging-bucket\n location: US\n log-writer:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/storage.objectCreator\n member: ${[\"my-sink\"].writerIdentity}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganization-level logging sinks can be imported using this format:\n\n* `organizations/{{organization_id}}/sinks/{{sink_id}}`\n\nWhen using the `pulumi import` command, organization-level logging sinks can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/organizationSink:OrganizationSink default organizations/{{organization_id}}/sinks/{{sink_id}}\n```\n\n", + "description": "Manages a organization-level logging sink. For more information see:\n* [API documentation](https://cloud.google.com/logging/docs/reference/v2/rest/v2/organizations.sinks)\n* How-to Guides\n * [Exporting Logs](https://cloud.google.com/logging/docs/export)\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 log_bucket = new gcp.storage.Bucket(\"log-bucket\", {\n name: \"organization-logging-bucket\",\n location: \"US\",\n});\nconst my_sink = new gcp.logging.OrganizationSink(\"my-sink\", {\n name: \"my-sink\",\n description: \"some explanation on what this is\",\n orgId: \"123456789\",\n destination: pulumi.interpolate`storage.googleapis.com/${log_bucket.name}`,\n filter: \"resource.type = gce_instance AND severity \u003e= WARNING\",\n});\nconst log_writer = new gcp.projects.IAMMember(\"log-writer\", {\n project: \"your-project-id\",\n role: \"roles/storage.objectCreator\",\n member: my_sink.writerIdentity,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nlog_bucket = gcp.storage.Bucket(\"log-bucket\",\n name=\"organization-logging-bucket\",\n location=\"US\")\nmy_sink = gcp.logging.OrganizationSink(\"my-sink\",\n name=\"my-sink\",\n description=\"some explanation on what this is\",\n org_id=\"123456789\",\n destination=log_bucket.name.apply(lambda name: f\"storage.googleapis.com/{name}\"),\n filter=\"resource.type = gce_instance AND severity \u003e= WARNING\")\nlog_writer = gcp.projects.IAMMember(\"log-writer\",\n project=\"your-project-id\",\n role=\"roles/storage.objectCreator\",\n member=my_sink.writer_identity)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var log_bucket = new Gcp.Storage.Bucket(\"log-bucket\", new()\n {\n Name = \"organization-logging-bucket\",\n Location = \"US\",\n });\n\n var my_sink = new Gcp.Logging.OrganizationSink(\"my-sink\", new()\n {\n Name = \"my-sink\",\n Description = \"some explanation on what this is\",\n OrgId = \"123456789\",\n Destination = log_bucket.Name.Apply(name =\u003e $\"storage.googleapis.com/{name}\"),\n Filter = \"resource.type = gce_instance AND severity \u003e= WARNING\",\n });\n\n var log_writer = new Gcp.Projects.IAMMember(\"log-writer\", new()\n {\n Project = \"your-project-id\",\n Role = \"roles/storage.objectCreator\",\n Member = my_sink.WriterIdentity,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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\tlog_bucket, err := storage.NewBucket(ctx, \"log-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"organization-logging-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\tmy_sink, err := logging.NewOrganizationSink(ctx, \"my-sink\", \u0026logging.OrganizationSinkArgs{\n\t\t\tName: pulumi.String(\"my-sink\"),\n\t\t\tDescription: pulumi.String(\"some explanation on what this is\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t\tDestination: log_bucket.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"storage.googleapis.com/%v\", name), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tFilter: pulumi.String(\"resource.type = gce_instance AND severity \u003e= WARNING\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = projects.NewIAMMember(ctx, \"log-writer\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"your-project-id\"),\n\t\t\tRole: pulumi.String(\"roles/storage.objectCreator\"),\n\t\t\tMember: my_sink.WriterIdentity,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.logging.OrganizationSink;\nimport com.pulumi.gcp.logging.OrganizationSinkArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var log_bucket = new Bucket(\"log-bucket\", BucketArgs.builder()\n .name(\"organization-logging-bucket\")\n .location(\"US\")\n .build());\n\n var my_sink = new OrganizationSink(\"my-sink\", OrganizationSinkArgs.builder()\n .name(\"my-sink\")\n .description(\"some explanation on what this is\")\n .orgId(\"123456789\")\n .destination(log_bucket.name().applyValue(name -\u003e String.format(\"storage.googleapis.com/%s\", name)))\n .filter(\"resource.type = gce_instance AND severity \u003e= WARNING\")\n .build());\n\n var log_writer = new IAMMember(\"log-writer\", IAMMemberArgs.builder()\n .project(\"your-project-id\")\n .role(\"roles/storage.objectCreator\")\n .member(my_sink.writerIdentity())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-sink:\n type: gcp:logging:OrganizationSink\n properties:\n name: my-sink\n description: some explanation on what this is\n orgId: '123456789'\n destination: storage.googleapis.com/${[\"log-bucket\"].name}\n filter: resource.type = gce_instance AND severity \u003e= WARNING\n log-bucket:\n type: gcp:storage:Bucket\n properties:\n name: organization-logging-bucket\n location: US\n log-writer:\n type: gcp:projects:IAMMember\n properties:\n project: your-project-id\n role: roles/storage.objectCreator\n member: ${[\"my-sink\"].writerIdentity}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganization-level logging sinks can be imported using this format:\n\n* `organizations/{{organization_id}}/sinks/{{sink_id}}`\n\nWhen using the `pulumi import` command, organization-level logging sinks can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/organizationSink:OrganizationSink default organizations/{{organization_id}}/sinks/{{sink_id}}\n```\n\n", "properties": { "bigqueryOptions": { "$ref": "#/types/gcp:logging/OrganizationSinkBigqueryOptions:OrganizationSinkBigqueryOptions", @@ -243667,7 +243667,7 @@ } }, "gcp:logging/projectBucketConfig:ProjectBucketConfig": { - "description": "Manages a project-level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Project(\"default\", {\n projectId: \"your-project-id\",\n name: \"your-project-id\",\n orgId: \"123456789\",\n});\nconst basic = new gcp.logging.ProjectBucketConfig(\"basic\", {\n project: _default.projectId,\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Project(\"default\",\n project_id=\"your-project-id\",\n name=\"your-project-id\",\n org_id=\"123456789\")\nbasic = gcp.logging.ProjectBucketConfig(\"basic\",\n project=default.project_id,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Organizations.Project(\"default\", new()\n {\n ProjectId = \"your-project-id\",\n Name = \"your-project-id\",\n OrgId = \"123456789\",\n });\n\n var basic = new Gcp.Logging.ProjectBucketConfig(\"basic\", new()\n {\n Project = @default.ProjectId,\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := organizations.NewProject(ctx, \"default\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"your-project-id\"),\n\t\t\tName: pulumi.String(\"your-project-id\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewProjectBucketConfig(ctx, \"basic\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Project(\"default\", ProjectArgs.builder()\n .projectId(\"your-project-id\")\n .name(\"your-project-id\")\n .orgId(\"123456789\")\n .build());\n\n var basic = new ProjectBucketConfig(\"basic\", ProjectBucketConfigArgs.builder()\n .project(default_.projectId())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Project\n properties:\n projectId: your-project-id\n name: your-project-id\n orgId: '123456789'\n basic:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: ${default.projectId}\n location: global\n retentionDays: 30\n bucketId: _Default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with customId\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.logging.ProjectBucketConfig(\"basic\", {\n project: \"project_id\",\n location: \"global\",\n retentionDays: 30,\n bucketId: \"custom-bucket\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.logging.ProjectBucketConfig(\"basic\",\n project=\"project_id\",\n location=\"global\",\n retention_days=30,\n bucket_id=\"custom-bucket\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.Logging.ProjectBucketConfig(\"basic\", new()\n {\n Project = \"project_id\",\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"custom-bucket\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logging.NewProjectBucketConfig(ctx, \"basic\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new ProjectBucketConfig(\"basic\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"custom-bucket\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: global\n retentionDays: 30\n bucketId: custom-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with Log Analytics enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst analytics_enabled_bucket = new gcp.logging.ProjectBucketConfig(\"analytics-enabled-bucket\", {\n project: \"project_id\",\n location: \"global\",\n retentionDays: 30,\n enableAnalytics: true,\n bucketId: \"custom-bucket\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nanalytics_enabled_bucket = gcp.logging.ProjectBucketConfig(\"analytics-enabled-bucket\",\n project=\"project_id\",\n location=\"global\",\n retention_days=30,\n enable_analytics=True,\n bucket_id=\"custom-bucket\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var analytics_enabled_bucket = new Gcp.Logging.ProjectBucketConfig(\"analytics-enabled-bucket\", new()\n {\n Project = \"project_id\",\n Location = \"global\",\n RetentionDays = 30,\n EnableAnalytics = true,\n BucketId = \"custom-bucket\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logging.NewProjectBucketConfig(ctx, \"analytics-enabled-bucket\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tEnableAnalytics: pulumi.Bool(true),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var analytics_enabled_bucket = new ProjectBucketConfig(\"analytics-enabled-bucket\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"global\")\n .retentionDays(30)\n .enableAnalytics(true)\n .bucketId(\"custom-bucket\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n analytics-enabled-bucket:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: global\n retentionDays: 30\n enableAnalytics: true\n bucketId: custom-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with customId and cmekSettings\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cmekSettings = gcp.logging.getProjectCmekSettings({\n project: \"project_id\",\n});\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"keyring-example\",\n location: \"us-central1\",\n});\nconst key = new gcp.kms.CryptoKey(\"key\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\", {\n cryptoKeyId: key.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [cmekSettings.then(cmekSettings =\u003e `serviceAccount:${cmekSettings.serviceAccountId}`)],\n});\nconst example_project_bucket_cmek_settings = new gcp.logging.ProjectBucketConfig(\"example-project-bucket-cmek-settings\", {\n project: \"project_id\",\n location: \"us-central1\",\n retentionDays: 30,\n bucketId: \"custom-bucket\",\n cmekSettings: {\n kmsKeyName: key.id,\n },\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncmek_settings = gcp.logging.get_project_cmek_settings(project=\"project_id\")\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"keyring-example\",\n location=\"us-central1\")\nkey = gcp.kms.CryptoKey(\"key\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\ncrypto_key_binding = gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\",\n crypto_key_id=key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:{cmek_settings.service_account_id}\"])\nexample_project_bucket_cmek_settings = gcp.logging.ProjectBucketConfig(\"example-project-bucket-cmek-settings\",\n project=\"project_id\",\n location=\"us-central1\",\n retention_days=30,\n bucket_id=\"custom-bucket\",\n cmek_settings={\n \"kms_key_name\": key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cmekSettings = Gcp.Logging.GetProjectCmekSettings.Invoke(new()\n {\n Project = \"project_id\",\n });\n\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"keyring-example\",\n Location = \"us-central1\",\n });\n\n var key = new Gcp.Kms.CryptoKey(\"key\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMBinding(\"crypto_key_binding\", new()\n {\n CryptoKeyId = key.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:{cmekSettings.Apply(getProjectCmekSettingsResult =\u003e getProjectCmekSettingsResult.ServiceAccountId)}\",\n },\n });\n\n var example_project_bucket_cmek_settings = new Gcp.Logging.ProjectBucketConfig(\"example-project-bucket-cmek-settings\", new()\n {\n Project = \"project_id\",\n Location = \"us-central1\",\n RetentionDays = 30,\n BucketId = \"custom-bucket\",\n CmekSettings = new Gcp.Logging.Inputs.ProjectBucketConfigCmekSettingsArgs\n {\n KmsKeyName = key.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyBinding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcmekSettings, err := logging.GetProjectCmekSettings(ctx, \u0026logging.GetProjectCmekSettingsArgs{\n\t\t\tProject: \"project_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring-example\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkey, err := kms.NewCryptoKey(ctx, \"key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key-example\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tRotationPeriod: pulumi.String(\"7776000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyBinding, err := kms.NewCryptoKeyIAMBinding(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: key.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:%v\", cmekSettings.ServiceAccountId),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewProjectBucketConfig(ctx, \"example-project-bucket-cmek-settings\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\n\t\t\tCmekSettings: \u0026logging.ProjectBucketConfigCmekSettingsArgs{\n\t\t\t\tKmsKeyName: key.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.logging.LoggingFunctions;\nimport com.pulumi.gcp.logging.inputs.GetProjectCmekSettingsArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.ProjectBucketConfigCmekSettingsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var cmekSettings = LoggingFunctions.getProjectCmekSettings(GetProjectCmekSettingsArgs.builder()\n .project(\"project_id\")\n .build());\n\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"keyring-example\")\n .location(\"us-central1\")\n .build());\n\n var key = new CryptoKey(\"key\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n var cryptoKeyBinding = new CryptoKeyIAMBinding(\"cryptoKeyBinding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(key.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:%s\", cmekSettings.applyValue(getProjectCmekSettingsResult -\u003e getProjectCmekSettingsResult.serviceAccountId())))\n .build());\n\n var example_project_bucket_cmek_settings = new ProjectBucketConfig(\"example-project-bucket-cmek-settings\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"us-central1\")\n .retentionDays(30)\n .bucketId(\"custom-bucket\")\n .cmekSettings(ProjectBucketConfigCmekSettingsArgs.builder()\n .kmsKeyName(key.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: keyring-example\n location: us-central1\n key:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMBinding\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${key.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:${cmekSettings.serviceAccountId}\n example-project-bucket-cmek-settings:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: us-central1\n retentionDays: 30\n bucketId: custom-bucket\n cmekSettings:\n kmsKeyName: ${key.id}\n options:\n dependsOn:\n - ${cryptoKeyBinding}\nvariables:\n cmekSettings:\n fn::invoke:\n function: gcp:logging:getProjectCmekSettings\n arguments:\n project: project_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with index configs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example_project_bucket_index_configs = new gcp.logging.ProjectBucketConfig(\"example-project-bucket-index-configs\", {\n project: \"project_id\",\n location: \"global\",\n retentionDays: 30,\n bucketId: \"custom-bucket\",\n indexConfigs: [{\n fieldPath: \"jsonPayload.request.status\",\n type: \"INDEX_TYPE_STRING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_project_bucket_index_configs = gcp.logging.ProjectBucketConfig(\"example-project-bucket-index-configs\",\n project=\"project_id\",\n location=\"global\",\n retention_days=30,\n bucket_id=\"custom-bucket\",\n index_configs=[{\n \"field_path\": \"jsonPayload.request.status\",\n \"type\": \"INDEX_TYPE_STRING\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example_project_bucket_index_configs = new Gcp.Logging.ProjectBucketConfig(\"example-project-bucket-index-configs\", new()\n {\n Project = \"project_id\",\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"custom-bucket\",\n IndexConfigs = new[]\n {\n new Gcp.Logging.Inputs.ProjectBucketConfigIndexConfigArgs\n {\n FieldPath = \"jsonPayload.request.status\",\n Type = \"INDEX_TYPE_STRING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logging.NewProjectBucketConfig(ctx, \"example-project-bucket-index-configs\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\n\t\t\tIndexConfigs: logging.ProjectBucketConfigIndexConfigArray{\n\t\t\t\t\u0026logging.ProjectBucketConfigIndexConfigArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"jsonPayload.request.status\"),\n\t\t\t\t\tType: pulumi.String(\"INDEX_TYPE_STRING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.ProjectBucketConfigIndexConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example_project_bucket_index_configs = new ProjectBucketConfig(\"example-project-bucket-index-configs\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"custom-bucket\")\n .indexConfigs(ProjectBucketConfigIndexConfigArgs.builder()\n .fieldPath(\"jsonPayload.request.status\")\n .type(\"INDEX_TYPE_STRING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-project-bucket-index-configs:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: global\n retentionDays: 30\n bucketId: custom-bucket\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `projects/{{project}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/projectBucketConfig:ProjectBucketConfig default projects/{{project}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", + "description": "Manages a project-level logging bucket config. For more information see\n[the official logging documentation](https://cloud.google.com/logging/docs/) and\n[Storing Logs](https://cloud.google.com/logging/docs/storage).\n\n\u003e **Note:** Logging buckets are automatically created for a given folder, project, organization, billingAccount and cannot be deleted. Creating a resource of this type will acquire and update the resource that already exists at the desired location. These buckets cannot be removed so deleting this resource will remove the bucket config from your state but will leave the logging bucket unchanged. The buckets that are currently automatically created are \"_Default\" and \"_Required\".\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.organizations.Project(\"default\", {\n projectId: \"your-project-id\",\n name: \"your-project-id\",\n orgId: \"123456789\",\n});\nconst basic = new gcp.logging.ProjectBucketConfig(\"basic\", {\n project: _default.projectId,\n location: \"global\",\n retentionDays: 30,\n bucketId: \"_Default\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.organizations.Project(\"default\",\n project_id=\"your-project-id\",\n name=\"your-project-id\",\n org_id=\"123456789\")\nbasic = gcp.logging.ProjectBucketConfig(\"basic\",\n project=default.project_id,\n location=\"global\",\n retention_days=30,\n bucket_id=\"_Default\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Organizations.Project(\"default\", new()\n {\n ProjectId = \"your-project-id\",\n Name = \"your-project-id\",\n OrgId = \"123456789\",\n });\n\n var basic = new Gcp.Logging.ProjectBucketConfig(\"basic\", new()\n {\n Project = @default.ProjectId,\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"_Default\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\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_default, err := organizations.NewProject(ctx, \"default\", \u0026organizations.ProjectArgs{\n\t\t\tProjectId: pulumi.String(\"your-project-id\"),\n\t\t\tName: pulumi.String(\"your-project-id\"),\n\t\t\tOrgId: pulumi.String(\"123456789\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewProjectBucketConfig(ctx, \"basic\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: _default.ProjectId,\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"_Default\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Project;\nimport com.pulumi.gcp.organizations.ProjectArgs;\nimport com.pulumi.gcp.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Project(\"default\", ProjectArgs.builder()\n .projectId(\"your-project-id\")\n .name(\"your-project-id\")\n .orgId(\"123456789\")\n .build());\n\n var basic = new ProjectBucketConfig(\"basic\", ProjectBucketConfigArgs.builder()\n .project(default_.projectId())\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"_Default\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:organizations:Project\n properties:\n projectId: your-project-id\n name: your-project-id\n orgId: '123456789'\n basic:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: ${default.projectId}\n location: global\n retentionDays: 30\n bucketId: _Default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with customId\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basic = new gcp.logging.ProjectBucketConfig(\"basic\", {\n project: \"project_id\",\n location: \"global\",\n retentionDays: 30,\n bucketId: \"custom-bucket\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic = gcp.logging.ProjectBucketConfig(\"basic\",\n project=\"project_id\",\n location=\"global\",\n retention_days=30,\n bucket_id=\"custom-bucket\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basic = new Gcp.Logging.ProjectBucketConfig(\"basic\", new()\n {\n Project = \"project_id\",\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"custom-bucket\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logging.NewProjectBucketConfig(ctx, \"basic\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basic = new ProjectBucketConfig(\"basic\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"custom-bucket\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basic:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: global\n retentionDays: 30\n bucketId: custom-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with Log Analytics enabled\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst analytics_enabled_bucket = new gcp.logging.ProjectBucketConfig(\"analytics-enabled-bucket\", {\n project: \"project_id\",\n location: \"global\",\n retentionDays: 30,\n enableAnalytics: true,\n bucketId: \"custom-bucket\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nanalytics_enabled_bucket = gcp.logging.ProjectBucketConfig(\"analytics-enabled-bucket\",\n project=\"project_id\",\n location=\"global\",\n retention_days=30,\n enable_analytics=True,\n bucket_id=\"custom-bucket\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var analytics_enabled_bucket = new Gcp.Logging.ProjectBucketConfig(\"analytics-enabled-bucket\", new()\n {\n Project = \"project_id\",\n Location = \"global\",\n RetentionDays = 30,\n EnableAnalytics = true,\n BucketId = \"custom-bucket\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logging.NewProjectBucketConfig(ctx, \"analytics-enabled-bucket\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tEnableAnalytics: pulumi.Bool(true),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var analytics_enabled_bucket = new ProjectBucketConfig(\"analytics-enabled-bucket\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"global\")\n .retentionDays(30)\n .enableAnalytics(true)\n .bucketId(\"custom-bucket\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n analytics-enabled-bucket:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: global\n retentionDays: 30\n enableAnalytics: true\n bucketId: custom-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with customId and cmekSettings\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cmekSettings = gcp.logging.getProjectCmekSettings({\n project: \"project_id\",\n});\nconst keyring = new gcp.kms.KeyRing(\"keyring\", {\n name: \"keyring-example\",\n location: \"us-central1\",\n});\nconst key = new gcp.kms.CryptoKey(\"key\", {\n name: \"crypto-key-example\",\n keyRing: keyring.id,\n rotationPeriod: \"7776000s\",\n});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\", {\n cryptoKeyId: key.id,\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members: [cmekSettings.then(cmekSettings =\u003e `serviceAccount:${cmekSettings.serviceAccountId}`)],\n});\nconst example_project_bucket_cmek_settings = new gcp.logging.ProjectBucketConfig(\"example-project-bucket-cmek-settings\", {\n project: \"project_id\",\n location: \"us-central1\",\n retentionDays: 30,\n bucketId: \"custom-bucket\",\n cmekSettings: {\n kmsKeyName: key.id,\n },\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncmek_settings = gcp.logging.get_project_cmek_settings(project=\"project_id\")\nkeyring = gcp.kms.KeyRing(\"keyring\",\n name=\"keyring-example\",\n location=\"us-central1\")\nkey = gcp.kms.CryptoKey(\"key\",\n name=\"crypto-key-example\",\n key_ring=keyring.id,\n rotation_period=\"7776000s\")\ncrypto_key_binding = gcp.kms.CryptoKeyIAMBinding(\"crypto_key_binding\",\n crypto_key_id=key.id,\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n members=[f\"serviceAccount:{cmek_settings.service_account_id}\"])\nexample_project_bucket_cmek_settings = gcp.logging.ProjectBucketConfig(\"example-project-bucket-cmek-settings\",\n project=\"project_id\",\n location=\"us-central1\",\n retention_days=30,\n bucket_id=\"custom-bucket\",\n cmek_settings={\n \"kms_key_name\": key.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cmekSettings = Gcp.Logging.GetProjectCmekSettings.Invoke(new()\n {\n Project = \"project_id\",\n });\n\n var keyring = new Gcp.Kms.KeyRing(\"keyring\", new()\n {\n Name = \"keyring-example\",\n Location = \"us-central1\",\n });\n\n var key = new Gcp.Kms.CryptoKey(\"key\", new()\n {\n Name = \"crypto-key-example\",\n KeyRing = keyring.Id,\n RotationPeriod = \"7776000s\",\n });\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMBinding(\"crypto_key_binding\", new()\n {\n CryptoKeyId = key.Id,\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Members = new[]\n {\n $\"serviceAccount:{cmekSettings.Apply(getProjectCmekSettingsResult =\u003e getProjectCmekSettingsResult.ServiceAccountId)}\",\n },\n });\n\n var example_project_bucket_cmek_settings = new Gcp.Logging.ProjectBucketConfig(\"example-project-bucket-cmek-settings\", new()\n {\n Project = \"project_id\",\n Location = \"us-central1\",\n RetentionDays = 30,\n BucketId = \"custom-bucket\",\n CmekSettings = new Gcp.Logging.Inputs.ProjectBucketConfigCmekSettingsArgs\n {\n KmsKeyName = key.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyBinding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcmekSettings, err := logging.GetProjectCmekSettings(ctx, \u0026logging.GetProjectCmekSettingsArgs{\n\t\t\tProject: \"project_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkeyring, err := kms.NewKeyRing(ctx, \"keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"keyring-example\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tkey, err := kms.NewCryptoKey(ctx, \"key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"crypto-key-example\"),\n\t\t\tKeyRing: keyring.ID(),\n\t\t\tRotationPeriod: pulumi.String(\"7776000s\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyBinding, err := kms.NewCryptoKeyIAMBinding(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMBindingArgs{\n\t\t\tCryptoKeyId: key.ID(),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:%v\", cmekSettings.ServiceAccountId),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = logging.NewProjectBucketConfig(ctx, \"example-project-bucket-cmek-settings\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\n\t\t\tCmekSettings: \u0026logging.ProjectBucketConfigCmekSettingsArgs{\n\t\t\t\tKmsKeyName: key.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.logging.LoggingFunctions;\nimport com.pulumi.gcp.logging.inputs.GetProjectCmekSettingsArgs;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBinding;\nimport com.pulumi.gcp.kms.CryptoKeyIAMBindingArgs;\nimport com.pulumi.gcp.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.ProjectBucketConfigCmekSettingsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var cmekSettings = LoggingFunctions.getProjectCmekSettings(GetProjectCmekSettingsArgs.builder()\n .project(\"project_id\")\n .build());\n\n var keyring = new KeyRing(\"keyring\", KeyRingArgs.builder()\n .name(\"keyring-example\")\n .location(\"us-central1\")\n .build());\n\n var key = new CryptoKey(\"key\", CryptoKeyArgs.builder()\n .name(\"crypto-key-example\")\n .keyRing(keyring.id())\n .rotationPeriod(\"7776000s\")\n .build());\n\n var cryptoKeyBinding = new CryptoKeyIAMBinding(\"cryptoKeyBinding\", CryptoKeyIAMBindingArgs.builder()\n .cryptoKeyId(key.id())\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .members(String.format(\"serviceAccount:%s\", cmekSettings.applyValue(getProjectCmekSettingsResult -\u003e getProjectCmekSettingsResult.serviceAccountId())))\n .build());\n\n var example_project_bucket_cmek_settings = new ProjectBucketConfig(\"example-project-bucket-cmek-settings\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"us-central1\")\n .retentionDays(30)\n .bucketId(\"custom-bucket\")\n .cmekSettings(ProjectBucketConfigCmekSettingsArgs.builder()\n .kmsKeyName(key.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n keyring:\n type: gcp:kms:KeyRing\n properties:\n name: keyring-example\n location: us-central1\n key:\n type: gcp:kms:CryptoKey\n properties:\n name: crypto-key-example\n keyRing: ${keyring.id}\n rotationPeriod: 7776000s\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMBinding\n name: crypto_key_binding\n properties:\n cryptoKeyId: ${key.id}\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n members:\n - serviceAccount:${cmekSettings.serviceAccountId}\n example-project-bucket-cmek-settings:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: us-central1\n retentionDays: 30\n bucketId: custom-bucket\n cmekSettings:\n kmsKeyName: ${key.id}\n options:\n dependsOn:\n - ${cryptoKeyBinding}\nvariables:\n cmekSettings:\n fn::invoke:\n function: gcp:logging:getProjectCmekSettings\n arguments:\n project: project_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nCreate logging bucket with index configs\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst example_project_bucket_index_configs = new gcp.logging.ProjectBucketConfig(\"example-project-bucket-index-configs\", {\n project: \"project_id\",\n location: \"global\",\n retentionDays: 30,\n bucketId: \"custom-bucket\",\n indexConfigs: [{\n fieldPath: \"jsonPayload.request.status\",\n type: \"INDEX_TYPE_STRING\",\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexample_project_bucket_index_configs = gcp.logging.ProjectBucketConfig(\"example-project-bucket-index-configs\",\n project=\"project_id\",\n location=\"global\",\n retention_days=30,\n bucket_id=\"custom-bucket\",\n index_configs=[{\n \"field_path\": \"jsonPayload.request.status\",\n \"type\": \"INDEX_TYPE_STRING\",\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var example_project_bucket_index_configs = new Gcp.Logging.ProjectBucketConfig(\"example-project-bucket-index-configs\", new()\n {\n Project = \"project_id\",\n Location = \"global\",\n RetentionDays = 30,\n BucketId = \"custom-bucket\",\n IndexConfigs = new[]\n {\n new Gcp.Logging.Inputs.ProjectBucketConfigIndexConfigArgs\n {\n FieldPath = \"jsonPayload.request.status\",\n Type = \"INDEX_TYPE_STRING\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logging.NewProjectBucketConfig(ctx, \"example-project-bucket-index-configs\", \u0026logging.ProjectBucketConfigArgs{\n\t\t\tProject: pulumi.String(\"project_id\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tRetentionDays: pulumi.Int(30),\n\t\t\tBucketId: pulumi.String(\"custom-bucket\"),\n\t\t\tIndexConfigs: logging.ProjectBucketConfigIndexConfigArray{\n\t\t\t\t\u0026logging.ProjectBucketConfigIndexConfigArgs{\n\t\t\t\t\tFieldPath: pulumi.String(\"jsonPayload.request.status\"),\n\t\t\t\t\tType: pulumi.String(\"INDEX_TYPE_STRING\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.logging.ProjectBucketConfig;\nimport com.pulumi.gcp.logging.ProjectBucketConfigArgs;\nimport com.pulumi.gcp.logging.inputs.ProjectBucketConfigIndexConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var example_project_bucket_index_configs = new ProjectBucketConfig(\"example-project-bucket-index-configs\", ProjectBucketConfigArgs.builder()\n .project(\"project_id\")\n .location(\"global\")\n .retentionDays(30)\n .bucketId(\"custom-bucket\")\n .indexConfigs(ProjectBucketConfigIndexConfigArgs.builder()\n .fieldPath(\"jsonPayload.request.status\")\n .type(\"INDEX_TYPE_STRING\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n example-project-bucket-index-configs:\n type: gcp:logging:ProjectBucketConfig\n properties:\n project: project_id\n location: global\n retentionDays: 30\n bucketId: custom-bucket\n indexConfigs:\n - fieldPath: jsonPayload.request.status\n type: INDEX_TYPE_STRING\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource can be imported using the following format:\n\n* `projects/{{project}}/locations/{{location}}/buckets/{{bucket_id}}`\n\nWhen using the `pulumi import` command, this resource can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:logging/projectBucketConfig:ProjectBucketConfig default projects/{{project}}/locations/{{location}}/buckets/{{bucket_id}}\n```\n\n", "properties": { "bucketId": { "type": "string", @@ -245044,7 +245044,7 @@ } }, "gcp:memorystore/instance:Instance": { - "description": "A Google Cloud Memorystore instance.\n\n\n\n## 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 mode: \"CLUSTER\",\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 mode=\"CLUSTER\",\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 Mode = \"CLUSTER\",\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\tMode: pulumi.String(\"CLUSTER\"),\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 .mode(\"CLUSTER\")\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 mode: CLUSTER\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", + "description": "A Google Cloud Memorystore instance.\n\n\n\n## 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_default, 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 mode: \"CLUSTER\",\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 mode=\"CLUSTER\",\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 Mode = \"CLUSTER\",\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_default, 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\tMode: pulumi.String(\"CLUSTER\"),\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 .mode(\"CLUSTER\")\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 mode: CLUSTER\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_default, 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", @@ -246918,7 +246918,7 @@ } }, "gcp:monitoring/slo:Slo": { - "description": "A Service-Level Objective (SLO) describes the level of desired good\nservice. It consists of a service-level indicator (SLI), a performance\ngoal, and a period over which the objective is to be evaluated against\nthat goal. The SLO can use SLIs defined in a number of different manners.\nTypical SLOs might include \"99% of requests in each rolling week have\nlatency below 200 milliseconds\" or \"99.5% of requests in each calendar\nmonth return successfully.\"\n\n\nTo get more information about Slo, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services.serviceLevelObjectives)\n* How-to Guides\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n\n## Example Usage\n\n### Monitoring Slo Appengine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.monitoring.getAppEngineService({\n moduleId: \"default\",\n});\nconst appengSlo = new gcp.monitoring.Slo(\"appeng_slo\", {\n service: _default.then(_default =\u003e _default.serviceId),\n sloId: \"ae-slo\",\n displayName: \"Test SLO for App Engine\",\n goal: 0.9,\n calendarPeriod: \"DAY\",\n basicSli: {\n latency: {\n threshold: \"1s\",\n },\n },\n userLabels: {\n my_key: \"my_value\",\n my_other_key: \"my_other_value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.monitoring.get_app_engine_service(module_id=\"default\")\nappeng_slo = gcp.monitoring.Slo(\"appeng_slo\",\n service=default.service_id,\n slo_id=\"ae-slo\",\n display_name=\"Test SLO for App Engine\",\n goal=0.9,\n calendar_period=\"DAY\",\n basic_sli={\n \"latency\": {\n \"threshold\": \"1s\",\n },\n },\n user_labels={\n \"my_key\": \"my_value\",\n \"my_other_key\": \"my_other_value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Monitoring.GetAppEngineService.Invoke(new()\n {\n ModuleId = \"default\",\n });\n\n var appengSlo = new Gcp.Monitoring.Slo(\"appeng_slo\", new()\n {\n Service = @default.Apply(@default =\u003e @default.Apply(getAppEngineServiceResult =\u003e getAppEngineServiceResult.ServiceId)),\n SloId = \"ae-slo\",\n DisplayName = \"Test SLO for App Engine\",\n Goal = 0.9,\n CalendarPeriod = \"DAY\",\n BasicSli = new Gcp.Monitoring.Inputs.SloBasicSliArgs\n {\n Latency = new Gcp.Monitoring.Inputs.SloBasicSliLatencyArgs\n {\n Threshold = \"1s\",\n },\n },\n UserLabels = \n {\n { \"my_key\", \"my_value\" },\n { \"my_other_key\", \"my_other_value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_default, err := monitoring.GetAppEngineService(ctx, \u0026monitoring.GetAppEngineServiceArgs{\n\t\t\tModuleId: \"default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"appeng_slo\", \u0026monitoring.SloArgs{\n\t\t\tService: pulumi.String(_default.ServiceId),\n\t\t\tSloId: pulumi.String(\"ae-slo\"),\n\t\t\tDisplayName: pulumi.String(\"Test SLO for App Engine\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tCalendarPeriod: pulumi.String(\"DAY\"),\n\t\t\tBasicSli: \u0026monitoring.SloBasicSliArgs{\n\t\t\t\tLatency: \u0026monitoring.SloBasicSliLatencyArgs{\n\t\t\t\t\tThreshold: pulumi.String(\"1s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_value\"),\n\t\t\t\t\"my_other_key\": pulumi.String(\"my_other_value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetAppEngineServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloBasicSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloBasicSliLatencyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = MonitoringFunctions.getAppEngineService(GetAppEngineServiceArgs.builder()\n .moduleId(\"default\")\n .build());\n\n var appengSlo = new Slo(\"appengSlo\", SloArgs.builder()\n .service(default_.serviceId())\n .sloId(\"ae-slo\")\n .displayName(\"Test SLO for App Engine\")\n .goal(0.9)\n .calendarPeriod(\"DAY\")\n .basicSli(SloBasicSliArgs.builder()\n .latency(SloBasicSliLatencyArgs.builder()\n .threshold(\"1s\")\n .build())\n .build())\n .userLabels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_value\"),\n Map.entry(\"my_other_key\", \"my_other_value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appengSlo:\n type: gcp:monitoring:Slo\n name: appeng_slo\n properties:\n service: ${default.serviceId}\n sloId: ae-slo\n displayName: Test SLO for App Engine\n goal: 0.9\n calendarPeriod: DAY\n basicSli:\n latency:\n threshold: 1s\n userLabels:\n my_key: my_value\n my_other_key: my_other_value\nvariables:\n default:\n fn::invoke:\n function: gcp:monitoring:getAppEngineService\n arguments:\n moduleId: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Request Based\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-request-slos\",\n displayName: \"My Custom Service\",\n});\nconst requestBasedSlo = new gcp.monitoring.Slo(\"request_based_slo\", {\n service: customsrv.serviceId,\n sloId: \"consumed-api-slo\",\n displayName: \"Test SLO with request based SLI (good total ratio)\",\n goal: 0.9,\n rollingPeriodDays: 30,\n requestBasedSli: {\n distributionCut: {\n distributionFilter: \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n range: {\n max: 0.5,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-request-slos\",\n display_name=\"My Custom Service\")\nrequest_based_slo = gcp.monitoring.Slo(\"request_based_slo\",\n service=customsrv.service_id,\n slo_id=\"consumed-api-slo\",\n display_name=\"Test SLO with request based SLI (good total ratio)\",\n goal=0.9,\n rolling_period_days=30,\n request_based_sli={\n \"distribution_cut\": {\n \"distribution_filter\": \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n \"range\": {\n \"max\": 0.5,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-request-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var requestBasedSlo = new Gcp.Monitoring.Slo(\"request_based_slo\", new()\n {\n Service = customsrv.ServiceId,\n SloId = \"consumed-api-slo\",\n DisplayName = \"Test SLO with request based SLI (good total ratio)\",\n Goal = 0.9,\n RollingPeriodDays = 30,\n RequestBasedSli = new Gcp.Monitoring.Inputs.SloRequestBasedSliArgs\n {\n DistributionCut = new Gcp.Monitoring.Inputs.SloRequestBasedSliDistributionCutArgs\n {\n DistributionFilter = \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n Range = new Gcp.Monitoring.Inputs.SloRequestBasedSliDistributionCutRangeArgs\n {\n Max = 0.5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-request-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"request_based_slo\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tSloId: pulumi.String(\"consumed-api-slo\"),\n\t\t\tDisplayName: pulumi.String(\"Test SLO with request based SLI (good total ratio)\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(30),\n\t\t\tRequestBasedSli: \u0026monitoring.SloRequestBasedSliArgs{\n\t\t\t\tDistributionCut: \u0026monitoring.SloRequestBasedSliDistributionCutArgs{\n\t\t\t\t\tDistributionFilter: pulumi.String(\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \"),\n\t\t\t\t\tRange: \u0026monitoring.SloRequestBasedSliDistributionCutRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(0.5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloRequestBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloRequestBasedSliDistributionCutArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloRequestBasedSliDistributionCutRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-request-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var requestBasedSlo = new Slo(\"requestBasedSlo\", SloArgs.builder()\n .service(customsrv.serviceId())\n .sloId(\"consumed-api-slo\")\n .displayName(\"Test SLO with request based SLI (good total ratio)\")\n .goal(0.9)\n .rollingPeriodDays(30)\n .requestBasedSli(SloRequestBasedSliArgs.builder()\n .distributionCut(SloRequestBasedSliDistributionCutArgs.builder()\n .distributionFilter(\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \")\n .range(SloRequestBasedSliDistributionCutRangeArgs.builder()\n .max(0.5)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-request-slos\n displayName: My Custom Service\n requestBasedSlo:\n type: gcp:monitoring:Slo\n name: request_based_slo\n properties:\n service: ${customsrv.serviceId}\n sloId: consumed-api-slo\n displayName: Test SLO with request based SLI (good total ratio)\n goal: 0.9\n rollingPeriodDays: 30\n requestBasedSli:\n distributionCut:\n distributionFilter: 'metric.type=\"serviceruntime.googleapis.com/api/request_latencies\" resource.type=\"api\" '\n range:\n max: 0.5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Good Bad Metric Filter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.95,\n calendarPeriod: \"FORTNIGHT\",\n windowsBasedSli: {\n windowPeriod: \"400s\",\n goodBadMetricFilter: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.95,\n calendar_period=\"FORTNIGHT\",\n windows_based_sli={\n \"window_period\": \"400s\",\n \"good_bad_metric_filter\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ]).result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.95,\n CalendarPeriod = \"FORTNIGHT\",\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"400s\",\n GoodBadMetricFilter = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n\t\t\t\t\"resource.type=\\\"uptime_url\\\"\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.95),\n\t\t\tCalendarPeriod: pulumi.String(\"FORTNIGHT\"),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"400s\"),\n\t\t\t\tGoodBadMetricFilter: pulumi.String(invokeJoin.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.95)\n .calendarPeriod(\"FORTNIGHT\")\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"400s\")\n .goodBadMetricFilter(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.95\n calendarPeriod: FORTNIGHT\n windowsBasedSli:\n windowPeriod: 400s\n goodBadMetricFilter:\n fn::invoke:\n function: std:join\n arguments:\n separator: ' AND '\n input:\n - metric.type=\"monitoring.googleapis.com/uptime_check/check_passed\"\n - resource.type=\"uptime_url\"\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Metric Mean\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.9,\n rollingPeriodDays: 20,\n windowsBasedSli: {\n windowPeriod: \"600s\",\n metricMeanInRange: {\n timeSeries: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n range: {\n max: 5,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.9,\n rolling_period_days=20,\n windows_based_sli={\n \"window_period\": \"600s\",\n \"metric_mean_in_range\": {\n \"time_series\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\",\n ]).result,\n \"range\": {\n \"max\": 5,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.9,\n RollingPeriodDays = 20,\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"600s\",\n MetricMeanInRange = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricMeanInRangeArgs\n {\n TimeSeries = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n Range = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricMeanInRangeRangeArgs\n {\n Max = 5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n\t\t\t\t\"resource.type=\\\"gce_instance\\\"\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(20),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"600s\"),\n\t\t\t\tMetricMeanInRange: \u0026monitoring.SloWindowsBasedSliMetricMeanInRangeArgs{\n\t\t\t\t\tTimeSeries: pulumi.String(invokeJoin.Result),\n\t\t\t\t\tRange: \u0026monitoring.SloWindowsBasedSliMetricMeanInRangeRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricMeanInRangeArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricMeanInRangeRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.9)\n .rollingPeriodDays(20)\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"600s\")\n .metricMeanInRange(SloWindowsBasedSliMetricMeanInRangeArgs.builder()\n .timeSeries(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\")\n .build()).result())\n .range(SloWindowsBasedSliMetricMeanInRangeRangeArgs.builder()\n .max(5)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.9\n rollingPeriodDays: 20\n windowsBasedSli:\n windowPeriod: 600s\n metricMeanInRange:\n timeSeries:\n fn::invoke:\n function: std:join\n arguments:\n separator: ' AND '\n input:\n - metric.type=\"agent.googleapis.com/cassandra/client_request/latency/95p\"\n - resource.type=\"gce_instance\"\n return: result\n range:\n max: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Metric Sum\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.9,\n rollingPeriodDays: 20,\n windowsBasedSli: {\n windowPeriod: \"400s\",\n metricSumInRange: {\n timeSeries: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n range: {\n max: 5000,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.9,\n rolling_period_days=20,\n windows_based_sli={\n \"window_period\": \"400s\",\n \"metric_sum_in_range\": {\n \"time_series\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ]).result,\n \"range\": {\n \"max\": 5000,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.9,\n RollingPeriodDays = 20,\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"400s\",\n MetricSumInRange = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricSumInRangeArgs\n {\n TimeSeries = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n Range = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricSumInRangeRangeArgs\n {\n Max = 5000,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n\t\t\t\t\"resource.type=\\\"uptime_url\\\"\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(20),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"400s\"),\n\t\t\t\tMetricSumInRange: \u0026monitoring.SloWindowsBasedSliMetricSumInRangeArgs{\n\t\t\t\t\tTimeSeries: pulumi.String(invokeJoin.Result),\n\t\t\t\t\tRange: \u0026monitoring.SloWindowsBasedSliMetricSumInRangeRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(5000),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricSumInRangeArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricSumInRangeRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.9)\n .rollingPeriodDays(20)\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"400s\")\n .metricSumInRange(SloWindowsBasedSliMetricSumInRangeArgs.builder()\n .timeSeries(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\")\n .build()).result())\n .range(SloWindowsBasedSliMetricSumInRangeRangeArgs.builder()\n .max(5000)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.9\n rollingPeriodDays: 20\n windowsBasedSli:\n windowPeriod: 400s\n metricSumInRange:\n timeSeries:\n fn::invoke:\n function: std:join\n arguments:\n separator: ' AND '\n input:\n - metric.type=\"monitoring.googleapis.com/uptime_check/request_latency\"\n - resource.type=\"uptime_url\"\n return: result\n range:\n max: 5000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Ratio Threshold\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.9,\n rollingPeriodDays: 20,\n windowsBasedSli: {\n windowPeriod: \"100s\",\n goodTotalRatioThreshold: {\n threshold: 0.1,\n performance: {\n distributionCut: {\n distributionFilter: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n range: {\n min: 1,\n max: 9,\n },\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.9,\n rolling_period_days=20,\n windows_based_sli={\n \"window_period\": \"100s\",\n \"good_total_ratio_threshold\": {\n \"threshold\": 0.1,\n \"performance\": {\n \"distribution_cut\": {\n \"distribution_filter\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\",\n ]).result,\n \"range\": {\n \"min\": 1,\n \"max\": 9,\n },\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.9,\n RollingPeriodDays = 20,\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"100s\",\n GoodTotalRatioThreshold = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdArgs\n {\n Threshold = 0.1,\n Performance = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs\n {\n DistributionCut = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs\n {\n DistributionFilter = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n Range = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs\n {\n Min = 1,\n Max = 9,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n\t\t\t\t\"resource.type=\\\"consumed_api\\\"\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(20),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"100s\"),\n\t\t\t\tGoodTotalRatioThreshold: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdArgs{\n\t\t\t\t\tThreshold: pulumi.Float64(0.1),\n\t\t\t\t\tPerformance: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs{\n\t\t\t\t\t\tDistributionCut: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs{\n\t\t\t\t\t\t\tDistributionFilter: pulumi.String(invokeJoin.Result),\n\t\t\t\t\t\t\tRange: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs{\n\t\t\t\t\t\t\t\tMin: pulumi.Float64(1),\n\t\t\t\t\t\t\t\tMax: pulumi.Float64(9),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.9)\n .rollingPeriodDays(20)\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"100s\")\n .goodTotalRatioThreshold(SloWindowsBasedSliGoodTotalRatioThresholdArgs.builder()\n .threshold(0.1)\n .performance(SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs.builder()\n .distributionCut(SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs.builder()\n .distributionFilter(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\")\n .build()).result())\n .range(SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs.builder()\n .min(1)\n .max(9)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.9\n rollingPeriodDays: 20\n windowsBasedSli:\n windowPeriod: 100s\n goodTotalRatioThreshold:\n threshold: 0.1\n performance:\n distributionCut:\n distributionFilter:\n fn::invoke:\n function: std:join\n arguments:\n separator: ' AND '\n input:\n - metric.type=\"serviceruntime.googleapis.com/api/request_latencies\"\n - resource.type=\"consumed_api\"\n return: result\n range:\n min: 1\n max: 9\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSlo can be imported using any of these accepted formats:\n\n* `{{project}}/{{name}}`\n\n* `{{project}} {{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Slo can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/slo:Slo default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:monitoring/slo:Slo default \"{{project}} {{name}}\"\n```\n\n```sh\n$ pulumi import gcp:monitoring/slo:Slo default {{name}}\n```\n\n", + "description": "A Service-Level Objective (SLO) describes the level of desired good\nservice. It consists of a service-level indicator (SLI), a performance\ngoal, and a period over which the objective is to be evaluated against\nthat goal. The SLO can use SLIs defined in a number of different manners.\nTypical SLOs might include \"99% of requests in each rolling week have\nlatency below 200 milliseconds\" or \"99.5% of requests in each calendar\nmonth return successfully.\"\n\n\nTo get more information about Slo, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services.serviceLevelObjectives)\n* How-to Guides\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n\n## Example Usage\n\n### Monitoring Slo Appengine\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = gcp.monitoring.getAppEngineService({\n moduleId: \"default\",\n});\nconst appengSlo = new gcp.monitoring.Slo(\"appeng_slo\", {\n service: _default.then(_default =\u003e _default.serviceId),\n sloId: \"ae-slo\",\n displayName: \"Test SLO for App Engine\",\n goal: 0.9,\n calendarPeriod: \"DAY\",\n basicSli: {\n latency: {\n threshold: \"1s\",\n },\n },\n userLabels: {\n my_key: \"my_value\",\n my_other_key: \"my_other_value\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.monitoring.get_app_engine_service(module_id=\"default\")\nappeng_slo = gcp.monitoring.Slo(\"appeng_slo\",\n service=default.service_id,\n slo_id=\"ae-slo\",\n display_name=\"Test SLO for App Engine\",\n goal=0.9,\n calendar_period=\"DAY\",\n basic_sli={\n \"latency\": {\n \"threshold\": \"1s\",\n },\n },\n user_labels={\n \"my_key\": \"my_value\",\n \"my_other_key\": \"my_other_value\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Monitoring.GetAppEngineService.Invoke(new()\n {\n ModuleId = \"default\",\n });\n\n var appengSlo = new Gcp.Monitoring.Slo(\"appeng_slo\", new()\n {\n Service = @default.Apply(@default =\u003e @default.Apply(getAppEngineServiceResult =\u003e getAppEngineServiceResult.ServiceId)),\n SloId = \"ae-slo\",\n DisplayName = \"Test SLO for App Engine\",\n Goal = 0.9,\n CalendarPeriod = \"DAY\",\n BasicSli = new Gcp.Monitoring.Inputs.SloBasicSliArgs\n {\n Latency = new Gcp.Monitoring.Inputs.SloBasicSliLatencyArgs\n {\n Threshold = \"1s\",\n },\n },\n UserLabels = \n {\n { \"my_key\", \"my_value\" },\n { \"my_other_key\", \"my_other_value\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_default, err := monitoring.GetAppEngineService(ctx, \u0026monitoring.GetAppEngineServiceArgs{\n\t\t\tModuleId: \"default\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"appeng_slo\", \u0026monitoring.SloArgs{\n\t\t\tService: pulumi.String(_default.ServiceId),\n\t\t\tSloId: pulumi.String(\"ae-slo\"),\n\t\t\tDisplayName: pulumi.String(\"Test SLO for App Engine\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tCalendarPeriod: pulumi.String(\"DAY\"),\n\t\t\tBasicSli: \u0026monitoring.SloBasicSliArgs{\n\t\t\t\tLatency: \u0026monitoring.SloBasicSliLatencyArgs{\n\t\t\t\t\tThreshold: pulumi.String(\"1s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tUserLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_value\"),\n\t\t\t\t\"my_other_key\": pulumi.String(\"my_other_value\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetAppEngineServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloBasicSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloBasicSliLatencyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = MonitoringFunctions.getAppEngineService(GetAppEngineServiceArgs.builder()\n .moduleId(\"default\")\n .build());\n\n var appengSlo = new Slo(\"appengSlo\", SloArgs.builder()\n .service(default_.serviceId())\n .sloId(\"ae-slo\")\n .displayName(\"Test SLO for App Engine\")\n .goal(0.9)\n .calendarPeriod(\"DAY\")\n .basicSli(SloBasicSliArgs.builder()\n .latency(SloBasicSliLatencyArgs.builder()\n .threshold(\"1s\")\n .build())\n .build())\n .userLabels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_value\"),\n Map.entry(\"my_other_key\", \"my_other_value\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n appengSlo:\n type: gcp:monitoring:Slo\n name: appeng_slo\n properties:\n service: ${default.serviceId}\n sloId: ae-slo\n displayName: Test SLO for App Engine\n goal: 0.9\n calendarPeriod: DAY\n basicSli:\n latency:\n threshold: 1s\n userLabels:\n my_key: my_value\n my_other_key: my_other_value\nvariables:\n default:\n fn::invoke:\n function: gcp:monitoring:getAppEngineService\n arguments:\n moduleId: default\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Request Based\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-request-slos\",\n displayName: \"My Custom Service\",\n});\nconst requestBasedSlo = new gcp.monitoring.Slo(\"request_based_slo\", {\n service: customsrv.serviceId,\n sloId: \"consumed-api-slo\",\n displayName: \"Test SLO with request based SLI (good total ratio)\",\n goal: 0.9,\n rollingPeriodDays: 30,\n requestBasedSli: {\n distributionCut: {\n distributionFilter: \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n range: {\n max: 0.5,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-request-slos\",\n display_name=\"My Custom Service\")\nrequest_based_slo = gcp.monitoring.Slo(\"request_based_slo\",\n service=customsrv.service_id,\n slo_id=\"consumed-api-slo\",\n display_name=\"Test SLO with request based SLI (good total ratio)\",\n goal=0.9,\n rolling_period_days=30,\n request_based_sli={\n \"distribution_cut\": {\n \"distribution_filter\": \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n \"range\": {\n \"max\": 0.5,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-request-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var requestBasedSlo = new Gcp.Monitoring.Slo(\"request_based_slo\", new()\n {\n Service = customsrv.ServiceId,\n SloId = \"consumed-api-slo\",\n DisplayName = \"Test SLO with request based SLI (good total ratio)\",\n Goal = 0.9,\n RollingPeriodDays = 30,\n RequestBasedSli = new Gcp.Monitoring.Inputs.SloRequestBasedSliArgs\n {\n DistributionCut = new Gcp.Monitoring.Inputs.SloRequestBasedSliDistributionCutArgs\n {\n DistributionFilter = \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \",\n Range = new Gcp.Monitoring.Inputs.SloRequestBasedSliDistributionCutRangeArgs\n {\n Max = 0.5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-request-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"request_based_slo\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tSloId: pulumi.String(\"consumed-api-slo\"),\n\t\t\tDisplayName: pulumi.String(\"Test SLO with request based SLI (good total ratio)\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(30),\n\t\t\tRequestBasedSli: \u0026monitoring.SloRequestBasedSliArgs{\n\t\t\t\tDistributionCut: \u0026monitoring.SloRequestBasedSliDistributionCutArgs{\n\t\t\t\t\tDistributionFilter: pulumi.String(\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \"),\n\t\t\t\t\tRange: \u0026monitoring.SloRequestBasedSliDistributionCutRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(0.5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloRequestBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloRequestBasedSliDistributionCutArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloRequestBasedSliDistributionCutRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-request-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var requestBasedSlo = new Slo(\"requestBasedSlo\", SloArgs.builder()\n .service(customsrv.serviceId())\n .sloId(\"consumed-api-slo\")\n .displayName(\"Test SLO with request based SLI (good total ratio)\")\n .goal(0.9)\n .rollingPeriodDays(30)\n .requestBasedSli(SloRequestBasedSliArgs.builder()\n .distributionCut(SloRequestBasedSliDistributionCutArgs.builder()\n .distributionFilter(\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\" resource.type=\\\"api\\\" \")\n .range(SloRequestBasedSliDistributionCutRangeArgs.builder()\n .max(0.5)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-request-slos\n displayName: My Custom Service\n requestBasedSlo:\n type: gcp:monitoring:Slo\n name: request_based_slo\n properties:\n service: ${customsrv.serviceId}\n sloId: consumed-api-slo\n displayName: Test SLO with request based SLI (good total ratio)\n goal: 0.9\n rollingPeriodDays: 30\n requestBasedSli:\n distributionCut:\n distributionFilter: 'metric.type=\"serviceruntime.googleapis.com/api/request_latencies\" resource.type=\"api\" '\n range:\n max: 0.5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Good Bad Metric Filter\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.95,\n calendarPeriod: \"FORTNIGHT\",\n windowsBasedSli: {\n windowPeriod: \"400s\",\n goodBadMetricFilter: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.95,\n calendar_period=\"FORTNIGHT\",\n windows_based_sli={\n \"window_period\": \"400s\",\n \"good_bad_metric_filter\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ]).result,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.95,\n CalendarPeriod = \"FORTNIGHT\",\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"400s\",\n GoodBadMetricFilter = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n\t\t\t\t\"resource.type=\\\"uptime_url\\\"\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.95),\n\t\t\tCalendarPeriod: pulumi.String(\"FORTNIGHT\"),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"400s\"),\n\t\t\t\tGoodBadMetricFilter: pulumi.String(invokeJoin.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.95)\n .calendarPeriod(\"FORTNIGHT\")\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"400s\")\n .goodBadMetricFilter(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/check_passed\\\"\",\n \"resource.type=\\\"uptime_url\\\"\")\n .build()).result())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.95\n calendarPeriod: FORTNIGHT\n windowsBasedSli:\n windowPeriod: 400s\n goodBadMetricFilter:\n fn::invoke:\n function: std:join\n arguments:\n separator: ' AND '\n input:\n - metric.type=\"monitoring.googleapis.com/uptime_check/check_passed\"\n - resource.type=\"uptime_url\"\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Metric Mean\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.9,\n rollingPeriodDays: 20,\n windowsBasedSli: {\n windowPeriod: \"600s\",\n metricMeanInRange: {\n timeSeries: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n range: {\n max: 5,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.9,\n rolling_period_days=20,\n windows_based_sli={\n \"window_period\": \"600s\",\n \"metric_mean_in_range\": {\n \"time_series\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\",\n ]).result,\n \"range\": {\n \"max\": 5,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.9,\n RollingPeriodDays = 20,\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"600s\",\n MetricMeanInRange = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricMeanInRangeArgs\n {\n TimeSeries = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n Range = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricMeanInRangeRangeArgs\n {\n Max = 5,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n\t\t\t\t\"resource.type=\\\"gce_instance\\\"\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(20),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"600s\"),\n\t\t\t\tMetricMeanInRange: \u0026monitoring.SloWindowsBasedSliMetricMeanInRangeArgs{\n\t\t\t\t\tTimeSeries: pulumi.String(invokeJoin.Result),\n\t\t\t\t\tRange: \u0026monitoring.SloWindowsBasedSliMetricMeanInRangeRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(5),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricMeanInRangeArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricMeanInRangeRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.9)\n .rollingPeriodDays(20)\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"600s\")\n .metricMeanInRange(SloWindowsBasedSliMetricMeanInRangeArgs.builder()\n .timeSeries(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"agent.googleapis.com/cassandra/client_request/latency/95p\\\"\",\n \"resource.type=\\\"gce_instance\\\"\")\n .build()).result())\n .range(SloWindowsBasedSliMetricMeanInRangeRangeArgs.builder()\n .max(5)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.9\n rollingPeriodDays: 20\n windowsBasedSli:\n windowPeriod: 600s\n metricMeanInRange:\n timeSeries:\n fn::invoke:\n function: std:join\n arguments:\n separator: ' AND '\n input:\n - metric.type=\"agent.googleapis.com/cassandra/client_request/latency/95p\"\n - resource.type=\"gce_instance\"\n return: result\n range:\n max: 5\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Metric Sum\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.9,\n rollingPeriodDays: 20,\n windowsBasedSli: {\n windowPeriod: \"400s\",\n metricSumInRange: {\n timeSeries: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n range: {\n max: 5000,\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.9,\n rolling_period_days=20,\n windows_based_sli={\n \"window_period\": \"400s\",\n \"metric_sum_in_range\": {\n \"time_series\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n ]).result,\n \"range\": {\n \"max\": 5000,\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.9,\n RollingPeriodDays = 20,\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"400s\",\n MetricSumInRange = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricSumInRangeArgs\n {\n TimeSeries = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n Range = new Gcp.Monitoring.Inputs.SloWindowsBasedSliMetricSumInRangeRangeArgs\n {\n Max = 5000,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n\t\t\t\t\"resource.type=\\\"uptime_url\\\"\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(20),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"400s\"),\n\t\t\t\tMetricSumInRange: \u0026monitoring.SloWindowsBasedSliMetricSumInRangeArgs{\n\t\t\t\t\tTimeSeries: pulumi.String(invokeJoin.Result),\n\t\t\t\t\tRange: \u0026monitoring.SloWindowsBasedSliMetricSumInRangeRangeArgs{\n\t\t\t\t\t\tMax: pulumi.Float64(5000),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricSumInRangeArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliMetricSumInRangeRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.9)\n .rollingPeriodDays(20)\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"400s\")\n .metricSumInRange(SloWindowsBasedSliMetricSumInRangeArgs.builder()\n .timeSeries(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"monitoring.googleapis.com/uptime_check/request_latency\\\"\",\n \"resource.type=\\\"uptime_url\\\"\")\n .build()).result())\n .range(SloWindowsBasedSliMetricSumInRangeRangeArgs.builder()\n .max(5000)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.9\n rollingPeriodDays: 20\n windowsBasedSli:\n windowPeriod: 400s\n metricSumInRange:\n timeSeries:\n fn::invoke:\n function: std:join\n arguments:\n separator: ' AND '\n input:\n - metric.type=\"monitoring.googleapis.com/uptime_check/request_latency\"\n - resource.type=\"uptime_url\"\n return: result\n range:\n max: 5000\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Monitoring Slo Windows Based Ratio Threshold\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst customsrv = new gcp.monitoring.CustomService(\"customsrv\", {\n serviceId: \"custom-srv-windows-slos\",\n displayName: \"My Custom Service\",\n});\nconst windowsBased = new gcp.monitoring.Slo(\"windows_based\", {\n service: customsrv.serviceId,\n displayName: \"Test SLO with window based SLI\",\n goal: 0.9,\n rollingPeriodDays: 20,\n windowsBasedSli: {\n windowPeriod: \"100s\",\n goodTotalRatioThreshold: {\n threshold: 0.1,\n performance: {\n distributionCut: {\n distributionFilter: std.join({\n separator: \" AND \",\n input: [\n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\",\n ],\n }).then(invoke =\u003e invoke.result),\n range: {\n min: 1,\n max: 9,\n },\n },\n },\n },\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ncustomsrv = gcp.monitoring.CustomService(\"customsrv\",\n service_id=\"custom-srv-windows-slos\",\n display_name=\"My Custom Service\")\nwindows_based = gcp.monitoring.Slo(\"windows_based\",\n service=customsrv.service_id,\n display_name=\"Test SLO with window based SLI\",\n goal=0.9,\n rolling_period_days=20,\n windows_based_sli={\n \"window_period\": \"100s\",\n \"good_total_ratio_threshold\": {\n \"threshold\": 0.1,\n \"performance\": {\n \"distribution_cut\": {\n \"distribution_filter\": std.join(separator=\" AND \",\n input=[\n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\",\n ]).result,\n \"range\": {\n \"min\": 1,\n \"max\": 9,\n },\n },\n },\n },\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var customsrv = new Gcp.Monitoring.CustomService(\"customsrv\", new()\n {\n ServiceId = \"custom-srv-windows-slos\",\n DisplayName = \"My Custom Service\",\n });\n\n var windowsBased = new Gcp.Monitoring.Slo(\"windows_based\", new()\n {\n Service = customsrv.ServiceId,\n DisplayName = \"Test SLO with window based SLI\",\n Goal = 0.9,\n RollingPeriodDays = 20,\n WindowsBasedSli = new Gcp.Monitoring.Inputs.SloWindowsBasedSliArgs\n {\n WindowPeriod = \"100s\",\n GoodTotalRatioThreshold = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdArgs\n {\n Threshold = 0.1,\n Performance = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs\n {\n DistributionCut = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs\n {\n DistributionFilter = Std.Join.Invoke(new()\n {\n Separator = \" AND \",\n Input = new[]\n {\n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\",\n },\n }).Apply(invoke =\u003e invoke.Result),\n Range = new Gcp.Monitoring.Inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs\n {\n Min = 1,\n Max = 9,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/monitoring\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcustomsrv, err := monitoring.NewCustomService(ctx, \"customsrv\", \u0026monitoring.CustomServiceArgs{\n\t\t\tServiceId: pulumi.String(\"custom-srv-windows-slos\"),\n\t\t\tDisplayName: pulumi.String(\"My Custom Service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeJoin, err := std.Join(ctx, \u0026std.JoinArgs{\n\t\t\tSeparator: \" AND \",\n\t\t\tInput: []string{\n\t\t\t\t\"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n\t\t\t\t\"resource.type=\\\"consumed_api\\\"\",\n\t\t\t},\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = monitoring.NewSlo(ctx, \"windows_based\", \u0026monitoring.SloArgs{\n\t\t\tService: customsrv.ServiceId,\n\t\t\tDisplayName: pulumi.String(\"Test SLO with window based SLI\"),\n\t\t\tGoal: pulumi.Float64(0.9),\n\t\t\tRollingPeriodDays: pulumi.Int(20),\n\t\t\tWindowsBasedSli: \u0026monitoring.SloWindowsBasedSliArgs{\n\t\t\t\tWindowPeriod: pulumi.String(\"100s\"),\n\t\t\t\tGoodTotalRatioThreshold: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdArgs{\n\t\t\t\t\tThreshold: pulumi.Float64(0.1),\n\t\t\t\t\tPerformance: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs{\n\t\t\t\t\t\tDistributionCut: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs{\n\t\t\t\t\t\t\tDistributionFilter: pulumi.String(invokeJoin.Result),\n\t\t\t\t\t\t\tRange: \u0026monitoring.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs{\n\t\t\t\t\t\t\t\tMin: pulumi.Float64(1),\n\t\t\t\t\t\t\t\tMax: pulumi.Float64(9),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.monitoring.CustomService;\nimport com.pulumi.gcp.monitoring.CustomServiceArgs;\nimport com.pulumi.gcp.monitoring.Slo;\nimport com.pulumi.gcp.monitoring.SloArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs;\nimport com.pulumi.gcp.monitoring.inputs.SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var customsrv = new CustomService(\"customsrv\", CustomServiceArgs.builder()\n .serviceId(\"custom-srv-windows-slos\")\n .displayName(\"My Custom Service\")\n .build());\n\n var windowsBased = new Slo(\"windowsBased\", SloArgs.builder()\n .service(customsrv.serviceId())\n .displayName(\"Test SLO with window based SLI\")\n .goal(0.9)\n .rollingPeriodDays(20)\n .windowsBasedSli(SloWindowsBasedSliArgs.builder()\n .windowPeriod(\"100s\")\n .goodTotalRatioThreshold(SloWindowsBasedSliGoodTotalRatioThresholdArgs.builder()\n .threshold(0.1)\n .performance(SloWindowsBasedSliGoodTotalRatioThresholdPerformanceArgs.builder()\n .distributionCut(SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutArgs.builder()\n .distributionFilter(StdFunctions.join(JoinArgs.builder()\n .separator(\" AND \")\n .input( \n \"metric.type=\\\"serviceruntime.googleapis.com/api/request_latencies\\\"\",\n \"resource.type=\\\"consumed_api\\\"\")\n .build()).result())\n .range(SloWindowsBasedSliGoodTotalRatioThresholdPerformanceDistributionCutRangeArgs.builder()\n .min(1)\n .max(9)\n .build())\n .build())\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n customsrv:\n type: gcp:monitoring:CustomService\n properties:\n serviceId: custom-srv-windows-slos\n displayName: My Custom Service\n windowsBased:\n type: gcp:monitoring:Slo\n name: windows_based\n properties:\n service: ${customsrv.serviceId}\n displayName: Test SLO with window based SLI\n goal: 0.9\n rollingPeriodDays: 20\n windowsBasedSli:\n windowPeriod: 100s\n goodTotalRatioThreshold:\n threshold: 0.1\n performance:\n distributionCut:\n distributionFilter:\n fn::invoke:\n function: std:join\n arguments:\n separator: ' AND '\n input:\n - metric.type=\"serviceruntime.googleapis.com/api/request_latencies\"\n - resource.type=\"consumed_api\"\n return: result\n range:\n min: 1\n max: 9\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSlo can be imported using any of these accepted formats:\n\n* `{{project}}/{{name}}`\n\n* `{{project}} {{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Slo can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:monitoring/slo:Slo default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:monitoring/slo:Slo default \"{{project}} {{name}}\"\n```\n\n```sh\n$ pulumi import gcp:monitoring/slo:Slo default {{name}}\n```\n\n", "properties": { "basicSli": { "$ref": "#/types/gcp:monitoring/SloBasicSli:SloBasicSli", @@ -247718,7 +247718,7 @@ } }, "gcp:netapp/backup:Backup": { - "description": "NetApp Volumes supports volume backups, which are copies of your volumes\nstored independently from the volume. Backups are stored in backup vaults,\nwhich are containers for backups. If a volume is lost or deleted, you can\nuse backups to restore your data to a new volume.\n\nWhen you create the first backup of a volume, all of the volume's used\ndata is sent to the backup vault. Subsequent backups of the same volume\nonly include data that has changed from the previous backup. This allows\nfor fast incremental-forever backups and reduces the required capacity\ninside the backup vault.\n\nYou can create manual and scheduled backups. Manual backups can be taken\nfrom a volume or from an existing volume snapshot. Scheduled backups\nrequire a backup policy.\n\n\nTo get more information about Backup, see:\n\n* [API documentation](https://cloud.google.com/netapp/volumes/docs/reference/rest/v1/projects.locations.backupVaults.backups)\n* How-to Guides\n * [Documentation](https://cloud.google.com/netapp/volumes/docs/protect-data/about-volume-backups)\n\n## Example Usage\n\n### Netapp Backup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"\",\n});\nconst defaultStoragePool = new gcp.netapp.StoragePool(\"default\", {\n name: \"backup-pool\",\n location: \"us-central1\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst defaultBackupVault = new gcp.netapp.BackupVault(\"default\", {\n name: \"backup-vault\",\n location: defaultStoragePool.location,\n});\nconst defaultVolume = new gcp.netapp.Volume(\"default\", {\n name: \"backup-volume\",\n location: defaultStoragePool.location,\n capacityGib: \"100\",\n shareName: \"backup-volume\",\n storagePool: defaultStoragePool.name,\n protocols: [\"NFSV3\"],\n deletionPolicy: \"FORCE\",\n backupConfig: {\n backupVault: defaultBackupVault.id,\n },\n});\nconst testBackup = new gcp.netapp.Backup(\"test_backup\", {\n name: \"test-backup\",\n location: defaultBackupVault.location,\n vaultName: defaultBackupVault.name,\n sourceVolume: defaultVolume.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"\")\ndefault_storage_pool = gcp.netapp.StoragePool(\"default\",\n name=\"backup-pool\",\n location=\"us-central1\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\ndefault_backup_vault = gcp.netapp.BackupVault(\"default\",\n name=\"backup-vault\",\n location=default_storage_pool.location)\ndefault_volume = gcp.netapp.Volume(\"default\",\n name=\"backup-volume\",\n location=default_storage_pool.location,\n capacity_gib=\"100\",\n share_name=\"backup-volume\",\n storage_pool=default_storage_pool.name,\n protocols=[\"NFSV3\"],\n deletion_policy=\"FORCE\",\n backup_config={\n \"backup_vault\": default_backup_vault.id,\n })\ntest_backup = gcp.netapp.Backup(\"test_backup\",\n name=\"test-backup\",\n location=default_backup_vault.location,\n vault_name=default_backup_vault.name,\n source_volume=default_volume.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"\",\n });\n\n var defaultStoragePool = new Gcp.Netapp.StoragePool(\"default\", new()\n {\n Name = \"backup-pool\",\n Location = \"us-central1\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var defaultBackupVault = new Gcp.Netapp.BackupVault(\"default\", new()\n {\n Name = \"backup-vault\",\n Location = defaultStoragePool.Location,\n });\n\n var defaultVolume = new Gcp.Netapp.Volume(\"default\", new()\n {\n Name = \"backup-volume\",\n Location = defaultStoragePool.Location,\n CapacityGib = \"100\",\n ShareName = \"backup-volume\",\n StoragePool = defaultStoragePool.Name,\n Protocols = new[]\n {\n \"NFSV3\",\n },\n DeletionPolicy = \"FORCE\",\n BackupConfig = new Gcp.Netapp.Inputs.VolumeBackupConfigArgs\n {\n BackupVault = defaultBackupVault.Id,\n },\n });\n\n var testBackup = new Gcp.Netapp.Backup(\"test_backup\", new()\n {\n Name = \"test-backup\",\n Location = defaultBackupVault.Location,\n VaultName = defaultBackupVault.Name,\n SourceVolume = defaultVolume.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/netapp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultStoragePool, err := netapp.NewStoragePool(ctx, \"default\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"backup-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackupVault, err := netapp.NewBackupVault(ctx, \"default\", \u0026netapp.BackupVaultArgs{\n\t\t\tName: pulumi.String(\"backup-vault\"),\n\t\t\tLocation: defaultStoragePool.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultVolume, err := netapp.NewVolume(ctx, \"default\", \u0026netapp.VolumeArgs{\n\t\t\tName: pulumi.String(\"backup-volume\"),\n\t\t\tLocation: defaultStoragePool.Location,\n\t\t\tCapacityGib: pulumi.String(\"100\"),\n\t\t\tShareName: pulumi.String(\"backup-volume\"),\n\t\t\tStoragePool: defaultStoragePool.Name,\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NFSV3\"),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"FORCE\"),\n\t\t\tBackupConfig: \u0026netapp.VolumeBackupConfigArgs{\n\t\t\t\tBackupVault: defaultBackupVault.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = netapp.NewBackup(ctx, \"test_backup\", \u0026netapp.BackupArgs{\n\t\t\tName: pulumi.String(\"test-backup\"),\n\t\t\tLocation: defaultBackupVault.Location,\n\t\t\tVaultName: defaultBackupVault.Name,\n\t\t\tSourceVolume: defaultVolume.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport com.pulumi.gcp.netapp.BackupVault;\nimport com.pulumi.gcp.netapp.BackupVaultArgs;\nimport com.pulumi.gcp.netapp.Volume;\nimport com.pulumi.gcp.netapp.VolumeArgs;\nimport com.pulumi.gcp.netapp.inputs.VolumeBackupConfigArgs;\nimport com.pulumi.gcp.netapp.Backup;\nimport com.pulumi.gcp.netapp.BackupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"\")\n .build());\n\n var defaultStoragePool = new StoragePool(\"defaultStoragePool\", StoragePoolArgs.builder()\n .name(\"backup-pool\")\n .location(\"us-central1\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(\"2048\")\n .network(default_.id())\n .build());\n\n var defaultBackupVault = new BackupVault(\"defaultBackupVault\", BackupVaultArgs.builder()\n .name(\"backup-vault\")\n .location(defaultStoragePool.location())\n .build());\n\n var defaultVolume = new Volume(\"defaultVolume\", VolumeArgs.builder()\n .name(\"backup-volume\")\n .location(defaultStoragePool.location())\n .capacityGib(\"100\")\n .shareName(\"backup-volume\")\n .storagePool(defaultStoragePool.name())\n .protocols(\"NFSV3\")\n .deletionPolicy(\"FORCE\")\n .backupConfig(VolumeBackupConfigArgs.builder()\n .backupVault(defaultBackupVault.id())\n .build())\n .build());\n\n var testBackup = new Backup(\"testBackup\", BackupArgs.builder()\n .name(\"test-backup\")\n .location(defaultBackupVault.location())\n .vaultName(defaultBackupVault.name())\n .sourceVolume(defaultVolume.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultStoragePool:\n type: gcp:netapp:StoragePool\n name: default\n properties:\n name: backup-pool\n location: us-central1\n serviceLevel: PREMIUM\n capacityGib: '2048'\n network: ${default.id}\n defaultVolume:\n type: gcp:netapp:Volume\n name: default\n properties:\n name: backup-volume\n location: ${defaultStoragePool.location}\n capacityGib: '100'\n shareName: backup-volume\n storagePool: ${defaultStoragePool.name}\n protocols:\n - NFSV3\n deletionPolicy: FORCE\n backupConfig:\n backupVault: ${defaultBackupVault.id}\n defaultBackupVault:\n type: gcp:netapp:BackupVault\n name: default\n properties:\n name: backup-vault\n location: ${defaultStoragePool.location}\n testBackup:\n type: gcp:netapp:Backup\n name: test_backup\n properties:\n name: test-backup\n location: ${defaultBackupVault.location}\n vaultName: ${defaultBackupVault.name}\n sourceVolume: ${defaultVolume.id}\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: \"\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/backupVaults/{{vault_name}}/backups/{{name}}`\n\n* `{{project}}/{{location}}/{{vault_name}}/{{name}}`\n\n* `{{location}}/{{vault_name}}/{{name}}`\n\nWhen using the `pulumi import` command, Backup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/backup:Backup default projects/{{project}}/locations/{{location}}/backupVaults/{{vault_name}}/backups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/backup:Backup default {{project}}/{{location}}/{{vault_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/backup:Backup default {{location}}/{{vault_name}}/{{name}}\n```\n\n", + "description": "NetApp Volumes supports volume backups, which are copies of your volumes\nstored independently from the volume. Backups are stored in backup vaults,\nwhich are containers for backups. If a volume is lost or deleted, you can\nuse backups to restore your data to a new volume.\n\nWhen you create the first backup of a volume, all of the volume's used\ndata is sent to the backup vault. Subsequent backups of the same volume\nonly include data that has changed from the previous backup. This allows\nfor fast incremental-forever backups and reduces the required capacity\ninside the backup vault.\n\nYou can create manual and scheduled backups. Manual backups can be taken\nfrom a volume or from an existing volume snapshot. Scheduled backups\nrequire a backup policy.\n\n\nTo get more information about Backup, see:\n\n* [API documentation](https://cloud.google.com/netapp/volumes/docs/reference/rest/v1/projects.locations.backupVaults.backups)\n* How-to Guides\n * [Documentation](https://cloud.google.com/netapp/volumes/docs/protect-data/about-volume-backups)\n\n## Example Usage\n\n### Netapp Backup\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = gcp.compute.getNetwork({\n name: \"\",\n});\nconst defaultStoragePool = new gcp.netapp.StoragePool(\"default\", {\n name: \"backup-pool\",\n location: \"us-central1\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst defaultBackupVault = new gcp.netapp.BackupVault(\"default\", {\n name: \"backup-vault\",\n location: defaultStoragePool.location,\n});\nconst defaultVolume = new gcp.netapp.Volume(\"default\", {\n name: \"backup-volume\",\n location: defaultStoragePool.location,\n capacityGib: \"100\",\n shareName: \"backup-volume\",\n storagePool: defaultStoragePool.name,\n protocols: [\"NFSV3\"],\n deletionPolicy: \"FORCE\",\n backupConfig: {\n backupVault: defaultBackupVault.id,\n },\n});\nconst testBackup = new gcp.netapp.Backup(\"test_backup\", {\n name: \"test-backup\",\n location: defaultBackupVault.location,\n vaultName: defaultBackupVault.name,\n sourceVolume: defaultVolume.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"\")\ndefault_storage_pool = gcp.netapp.StoragePool(\"default\",\n name=\"backup-pool\",\n location=\"us-central1\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\ndefault_backup_vault = gcp.netapp.BackupVault(\"default\",\n name=\"backup-vault\",\n location=default_storage_pool.location)\ndefault_volume = gcp.netapp.Volume(\"default\",\n name=\"backup-volume\",\n location=default_storage_pool.location,\n capacity_gib=\"100\",\n share_name=\"backup-volume\",\n storage_pool=default_storage_pool.name,\n protocols=[\"NFSV3\"],\n deletion_policy=\"FORCE\",\n backup_config={\n \"backup_vault\": default_backup_vault.id,\n })\ntest_backup = gcp.netapp.Backup(\"test_backup\",\n name=\"test-backup\",\n location=default_backup_vault.location,\n vault_name=default_backup_vault.name,\n source_volume=default_volume.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"\",\n });\n\n var defaultStoragePool = new Gcp.Netapp.StoragePool(\"default\", new()\n {\n Name = \"backup-pool\",\n Location = \"us-central1\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var defaultBackupVault = new Gcp.Netapp.BackupVault(\"default\", new()\n {\n Name = \"backup-vault\",\n Location = defaultStoragePool.Location,\n });\n\n var defaultVolume = new Gcp.Netapp.Volume(\"default\", new()\n {\n Name = \"backup-volume\",\n Location = defaultStoragePool.Location,\n CapacityGib = \"100\",\n ShareName = \"backup-volume\",\n StoragePool = defaultStoragePool.Name,\n Protocols = new[]\n {\n \"NFSV3\",\n },\n DeletionPolicy = \"FORCE\",\n BackupConfig = new Gcp.Netapp.Inputs.VolumeBackupConfigArgs\n {\n BackupVault = defaultBackupVault.Id,\n },\n });\n\n var testBackup = new Gcp.Netapp.Backup(\"test_backup\", new()\n {\n Name = \"test-backup\",\n Location = defaultBackupVault.Location,\n VaultName = defaultBackupVault.Name,\n SourceVolume = defaultVolume.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/netapp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultStoragePool, err := netapp.NewStoragePool(ctx, \"default\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"backup-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultBackupVault, err := netapp.NewBackupVault(ctx, \"default\", \u0026netapp.BackupVaultArgs{\n\t\t\tName: pulumi.String(\"backup-vault\"),\n\t\t\tLocation: defaultStoragePool.Location,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultVolume, err := netapp.NewVolume(ctx, \"default\", \u0026netapp.VolumeArgs{\n\t\t\tName: pulumi.String(\"backup-volume\"),\n\t\t\tLocation: defaultStoragePool.Location,\n\t\t\tCapacityGib: pulumi.String(\"100\"),\n\t\t\tShareName: pulumi.String(\"backup-volume\"),\n\t\t\tStoragePool: defaultStoragePool.Name,\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NFSV3\"),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"FORCE\"),\n\t\t\tBackupConfig: \u0026netapp.VolumeBackupConfigArgs{\n\t\t\t\tBackupVault: defaultBackupVault.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = netapp.NewBackup(ctx, \"test_backup\", \u0026netapp.BackupArgs{\n\t\t\tName: pulumi.String(\"test-backup\"),\n\t\t\tLocation: defaultBackupVault.Location,\n\t\t\tVaultName: defaultBackupVault.Name,\n\t\t\tSourceVolume: defaultVolume.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport com.pulumi.gcp.netapp.BackupVault;\nimport com.pulumi.gcp.netapp.BackupVaultArgs;\nimport com.pulumi.gcp.netapp.Volume;\nimport com.pulumi.gcp.netapp.VolumeArgs;\nimport com.pulumi.gcp.netapp.inputs.VolumeBackupConfigArgs;\nimport com.pulumi.gcp.netapp.Backup;\nimport com.pulumi.gcp.netapp.BackupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"\")\n .build());\n\n var defaultStoragePool = new StoragePool(\"defaultStoragePool\", StoragePoolArgs.builder()\n .name(\"backup-pool\")\n .location(\"us-central1\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(\"2048\")\n .network(default_.id())\n .build());\n\n var defaultBackupVault = new BackupVault(\"defaultBackupVault\", BackupVaultArgs.builder()\n .name(\"backup-vault\")\n .location(defaultStoragePool.location())\n .build());\n\n var defaultVolume = new Volume(\"defaultVolume\", VolumeArgs.builder()\n .name(\"backup-volume\")\n .location(defaultStoragePool.location())\n .capacityGib(\"100\")\n .shareName(\"backup-volume\")\n .storagePool(defaultStoragePool.name())\n .protocols(\"NFSV3\")\n .deletionPolicy(\"FORCE\")\n .backupConfig(VolumeBackupConfigArgs.builder()\n .backupVault(defaultBackupVault.id())\n .build())\n .build());\n\n var testBackup = new Backup(\"testBackup\", BackupArgs.builder()\n .name(\"test-backup\")\n .location(defaultBackupVault.location())\n .vaultName(defaultBackupVault.name())\n .sourceVolume(defaultVolume.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultStoragePool:\n type: gcp:netapp:StoragePool\n name: default\n properties:\n name: backup-pool\n location: us-central1\n serviceLevel: PREMIUM\n capacityGib: '2048'\n network: ${default.id}\n defaultVolume:\n type: gcp:netapp:Volume\n name: default\n properties:\n name: backup-volume\n location: ${defaultStoragePool.location}\n capacityGib: '100'\n shareName: backup-volume\n storagePool: ${defaultStoragePool.name}\n protocols:\n - NFSV3\n deletionPolicy: FORCE\n backupConfig:\n backupVault: ${defaultBackupVault.id}\n defaultBackupVault:\n type: gcp:netapp:BackupVault\n name: default\n properties:\n name: backup-vault\n location: ${defaultStoragePool.location}\n testBackup:\n type: gcp:netapp:Backup\n name: test_backup\n properties:\n name: test-backup\n location: ${defaultBackupVault.location}\n vaultName: ${defaultBackupVault.name}\n sourceVolume: ${defaultVolume.id}\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: \"\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nBackup can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/backupVaults/{{vault_name}}/backups/{{name}}`\n\n* `{{project}}/{{location}}/{{vault_name}}/{{name}}`\n\n* `{{location}}/{{vault_name}}/{{name}}`\n\nWhen using the `pulumi import` command, Backup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/backup:Backup default projects/{{project}}/locations/{{location}}/backupVaults/{{vault_name}}/backups/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/backup:Backup default {{project}}/{{location}}/{{vault_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/backup:Backup default {{location}}/{{vault_name}}/{{name}}\n```\n\n", "properties": { "backupType": { "type": "string", @@ -248456,7 +248456,7 @@ } }, "gcp:netapp/storagePool:StoragePool": { - "description": "## Example Usage\n\n### Storage Pool Create\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Create a network or use datasource to reference existing network\nconst peeringNetwork = new gcp.compute.Network(\"peering_network\", {name: \"test-network\"});\n// Reserve a CIDR for NetApp Volumes to use\n// When using shared-VPCs, this resource needs to be created in host project\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"test-address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: peeringNetwork.id,\n});\n// Create a Private Service Access connection\n// When using shared-VPCs, this resource needs to be created in host project\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: peeringNetwork.id,\n service: \"netapp.servicenetworking.goog\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\n// Modify the PSA Connection to allow import/export of custom routes\n// When using shared-VPCs, this resource needs to be created in host project\nconst routeUpdates = new gcp.compute.NetworkPeeringRoutesConfig(\"route_updates\", {\n peering: _default.peering,\n network: peeringNetwork.name,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\n// Create a storage pool\n// Create this resource in the project which is expected to own the volumes\nconst testPool = new gcp.netapp.StoragePool(\"test_pool\", {\n name: \"test-pool\",\n location: \"us-central1\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: peeringNetwork.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Create a network or use datasource to reference existing network\npeering_network = gcp.compute.Network(\"peering_network\", name=\"test-network\")\n# Reserve a CIDR for NetApp Volumes to use\n# When using shared-VPCs, this resource needs to be created in host project\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"test-address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=peering_network.id)\n# Create a Private Service Access connection\n# When using shared-VPCs, this resource needs to be created in host project\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=peering_network.id,\n service=\"netapp.servicenetworking.goog\",\n reserved_peering_ranges=[private_ip_alloc.name])\n# Modify the PSA Connection to allow import/export of custom routes\n# When using shared-VPCs, this resource needs to be created in host project\nroute_updates = gcp.compute.NetworkPeeringRoutesConfig(\"route_updates\",\n peering=default.peering,\n network=peering_network.name,\n import_custom_routes=True,\n export_custom_routes=True)\n# Create a storage pool\n# Create this resource in the project which is expected to own the volumes\ntest_pool = gcp.netapp.StoragePool(\"test_pool\",\n name=\"test-pool\",\n location=\"us-central1\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=peering_network.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 // Create a network or use datasource to reference existing network\n var peeringNetwork = new Gcp.Compute.Network(\"peering_network\", new()\n {\n Name = \"test-network\",\n });\n\n // Reserve a CIDR for NetApp Volumes to use\n // When using shared-VPCs, this resource needs to be created in host project\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"test-address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = peeringNetwork.Id,\n });\n\n // Create a Private Service Access connection\n // When using shared-VPCs, this resource needs to be created in host project\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = peeringNetwork.Id,\n Service = \"netapp.servicenetworking.goog\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n // Modify the PSA Connection to allow import/export of custom routes\n // When using shared-VPCs, this resource needs to be created in host project\n var routeUpdates = new Gcp.Compute.NetworkPeeringRoutesConfig(\"route_updates\", new()\n {\n Peering = @default.Peering,\n Network = peeringNetwork.Name,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n // Create a storage pool\n // Create this resource in the project which is expected to own the volumes\n var testPool = new Gcp.Netapp.StoragePool(\"test_pool\", new()\n {\n Name = \"test-pool\",\n Location = \"us-central1\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = peeringNetwork.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/netapp\"\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// Create a network or use datasource to reference existing network\n\t\tpeeringNetwork, err := compute.NewNetwork(ctx, \"peering_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Reserve a CIDR for NetApp Volumes to use\n\t\t// When using shared-VPCs, this resource needs to be created in host project\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"test-address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: peeringNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a Private Service Access connection\n\t\t// When using shared-VPCs, this resource needs to be created in host project\n\t\t_, err = servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: peeringNetwork.ID(),\n\t\t\tService: pulumi.String(\"netapp.servicenetworking.goog\"),\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// Modify the PSA Connection to allow import/export of custom routes\n\t\t// When using shared-VPCs, this resource needs to be created in host project\n\t\t_, err = compute.NewNetworkPeeringRoutesConfig(ctx, \"route_updates\", \u0026compute.NetworkPeeringRoutesConfigArgs{\n\t\t\tPeering: _default.Peering,\n\t\t\tNetwork: peeringNetwork.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// Create a storage pool\n\t\t// Create this resource in the project which is expected to own the volumes\n\t\t_, err = netapp.NewStoragePool(ctx, \"test_pool\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"test-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: peeringNetwork.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.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfig;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfigArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Create a network or use datasource to reference existing network\n var peeringNetwork = new Network(\"peeringNetwork\", NetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n // Reserve a CIDR for NetApp Volumes to use\n // When using shared-VPCs, this resource needs to be created in host project\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"test-address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(peeringNetwork.id())\n .build());\n\n // Create a Private Service Access connection\n // When using shared-VPCs, this resource needs to be created in host project\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(peeringNetwork.id())\n .service(\"netapp.servicenetworking.goog\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n // Modify the PSA Connection to allow import/export of custom routes\n // When using shared-VPCs, this resource needs to be created in host project\n var routeUpdates = new NetworkPeeringRoutesConfig(\"routeUpdates\", NetworkPeeringRoutesConfigArgs.builder()\n .peering(default_.peering())\n .network(peeringNetwork.name())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n // Create a storage pool\n // Create this resource in the project which is expected to own the volumes\n var testPool = new StoragePool(\"testPool\", StoragePoolArgs.builder()\n .name(\"test-pool\")\n .location(\"us-central1\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(\"2048\")\n .network(peeringNetwork.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a network or use datasource to reference existing network\n peeringNetwork:\n type: gcp:compute:Network\n name: peering_network\n properties:\n name: test-network\n # Reserve a CIDR for NetApp Volumes to use\n # When using shared-VPCs, this resource needs to be created in host project\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: test-address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${peeringNetwork.id}\n # Create a Private Service Access connection\n # When using shared-VPCs, this resource needs to be created in host project\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${peeringNetwork.id}\n service: netapp.servicenetworking.goog\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n # Modify the PSA Connection to allow import/export of custom routes\n # When using shared-VPCs, this resource needs to be created in host project\n routeUpdates:\n type: gcp:compute:NetworkPeeringRoutesConfig\n name: route_updates\n properties:\n peering: ${default.peering}\n network: ${peeringNetwork.name}\n importCustomRoutes: true\n exportCustomRoutes: true\n # Create a storage pool\n # Create this resource in the project which is expected to own the volumes\n testPool:\n type: gcp:netapp:StoragePool\n name: test_pool\n properties:\n name: test-pool\n location: us-central1\n serviceLevel: PREMIUM\n capacityGib: '2048'\n network: ${peeringNetwork.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStoragePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/storagePools/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, StoragePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/storagePool:StoragePool default projects/{{project}}/locations/{{location}}/storagePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/storagePool:StoragePool default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/storagePool:StoragePool default {{location}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Storage Pool Create\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Create a network or use datasource to reference existing network\nconst peeringNetwork = new gcp.compute.Network(\"peering_network\", {name: \"test-network\"});\n// Reserve a CIDR for NetApp Volumes to use\n// When using shared-VPCs, this resource needs to be created in host project\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"test-address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: peeringNetwork.id,\n});\n// Create a Private Service Access connection\n// When using shared-VPCs, this resource needs to be created in host project\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: peeringNetwork.id,\n service: \"netapp.servicenetworking.goog\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\n// Modify the PSA Connection to allow import/export of custom routes\n// When using shared-VPCs, this resource needs to be created in host project\nconst routeUpdates = new gcp.compute.NetworkPeeringRoutesConfig(\"route_updates\", {\n peering: _default.peering,\n network: peeringNetwork.name,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\n// Create a storage pool\n// Create this resource in the project which is expected to own the volumes\nconst testPool = new gcp.netapp.StoragePool(\"test_pool\", {\n name: \"test-pool\",\n location: \"us-central1\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: peeringNetwork.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Create a network or use datasource to reference existing network\npeering_network = gcp.compute.Network(\"peering_network\", name=\"test-network\")\n# Reserve a CIDR for NetApp Volumes to use\n# When using shared-VPCs, this resource needs to be created in host project\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"test-address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=peering_network.id)\n# Create a Private Service Access connection\n# When using shared-VPCs, this resource needs to be created in host project\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=peering_network.id,\n service=\"netapp.servicenetworking.goog\",\n reserved_peering_ranges=[private_ip_alloc.name])\n# Modify the PSA Connection to allow import/export of custom routes\n# When using shared-VPCs, this resource needs to be created in host project\nroute_updates = gcp.compute.NetworkPeeringRoutesConfig(\"route_updates\",\n peering=default.peering,\n network=peering_network.name,\n import_custom_routes=True,\n export_custom_routes=True)\n# Create a storage pool\n# Create this resource in the project which is expected to own the volumes\ntest_pool = gcp.netapp.StoragePool(\"test_pool\",\n name=\"test-pool\",\n location=\"us-central1\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=peering_network.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 // Create a network or use datasource to reference existing network\n var peeringNetwork = new Gcp.Compute.Network(\"peering_network\", new()\n {\n Name = \"test-network\",\n });\n\n // Reserve a CIDR for NetApp Volumes to use\n // When using shared-VPCs, this resource needs to be created in host project\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"test-address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = peeringNetwork.Id,\n });\n\n // Create a Private Service Access connection\n // When using shared-VPCs, this resource needs to be created in host project\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = peeringNetwork.Id,\n Service = \"netapp.servicenetworking.goog\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n // Modify the PSA Connection to allow import/export of custom routes\n // When using shared-VPCs, this resource needs to be created in host project\n var routeUpdates = new Gcp.Compute.NetworkPeeringRoutesConfig(\"route_updates\", new()\n {\n Peering = @default.Peering,\n Network = peeringNetwork.Name,\n ImportCustomRoutes = true,\n ExportCustomRoutes = true,\n });\n\n // Create a storage pool\n // Create this resource in the project which is expected to own the volumes\n var testPool = new Gcp.Netapp.StoragePool(\"test_pool\", new()\n {\n Name = \"test-pool\",\n Location = \"us-central1\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = peeringNetwork.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/netapp\"\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// Create a network or use datasource to reference existing network\n\t\tpeeringNetwork, err := compute.NewNetwork(ctx, \"peering_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Reserve a CIDR for NetApp Volumes to use\n\t\t// When using shared-VPCs, this resource needs to be created in host project\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"test-address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: peeringNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a Private Service Access connection\n\t\t// When using shared-VPCs, this resource needs to be created in host project\n\t\t_default, err := servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: peeringNetwork.ID(),\n\t\t\tService: pulumi.String(\"netapp.servicenetworking.goog\"),\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// Modify the PSA Connection to allow import/export of custom routes\n\t\t// When using shared-VPCs, this resource needs to be created in host project\n\t\t_, err = compute.NewNetworkPeeringRoutesConfig(ctx, \"route_updates\", \u0026compute.NetworkPeeringRoutesConfigArgs{\n\t\t\tPeering: _default.Peering,\n\t\t\tNetwork: peeringNetwork.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// Create a storage pool\n\t\t// Create this resource in the project which is expected to own the volumes\n\t\t_, err = netapp.NewStoragePool(ctx, \"test_pool\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"test-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: peeringNetwork.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.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfig;\nimport com.pulumi.gcp.compute.NetworkPeeringRoutesConfigArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Create a network or use datasource to reference existing network\n var peeringNetwork = new Network(\"peeringNetwork\", NetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n // Reserve a CIDR for NetApp Volumes to use\n // When using shared-VPCs, this resource needs to be created in host project\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"test-address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(peeringNetwork.id())\n .build());\n\n // Create a Private Service Access connection\n // When using shared-VPCs, this resource needs to be created in host project\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(peeringNetwork.id())\n .service(\"netapp.servicenetworking.goog\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n // Modify the PSA Connection to allow import/export of custom routes\n // When using shared-VPCs, this resource needs to be created in host project\n var routeUpdates = new NetworkPeeringRoutesConfig(\"routeUpdates\", NetworkPeeringRoutesConfigArgs.builder()\n .peering(default_.peering())\n .network(peeringNetwork.name())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n // Create a storage pool\n // Create this resource in the project which is expected to own the volumes\n var testPool = new StoragePool(\"testPool\", StoragePoolArgs.builder()\n .name(\"test-pool\")\n .location(\"us-central1\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(\"2048\")\n .network(peeringNetwork.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a network or use datasource to reference existing network\n peeringNetwork:\n type: gcp:compute:Network\n name: peering_network\n properties:\n name: test-network\n # Reserve a CIDR for NetApp Volumes to use\n # When using shared-VPCs, this resource needs to be created in host project\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: test-address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${peeringNetwork.id}\n # Create a Private Service Access connection\n # When using shared-VPCs, this resource needs to be created in host project\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${peeringNetwork.id}\n service: netapp.servicenetworking.goog\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n # Modify the PSA Connection to allow import/export of custom routes\n # When using shared-VPCs, this resource needs to be created in host project\n routeUpdates:\n type: gcp:compute:NetworkPeeringRoutesConfig\n name: route_updates\n properties:\n peering: ${default.peering}\n network: ${peeringNetwork.name}\n importCustomRoutes: true\n exportCustomRoutes: true\n # Create a storage pool\n # Create this resource in the project which is expected to own the volumes\n testPool:\n type: gcp:netapp:StoragePool\n name: test_pool\n properties:\n name: test-pool\n location: us-central1\n serviceLevel: PREMIUM\n capacityGib: '2048'\n network: ${peeringNetwork.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStoragePool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/storagePools/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, StoragePool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/storagePool:StoragePool default projects/{{project}}/locations/{{location}}/storagePools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/storagePool:StoragePool default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/storagePool:StoragePool default {{location}}/{{name}}\n```\n\n", "properties": { "activeDirectory": { "type": "string", @@ -248737,7 +248737,7 @@ } }, "gcp:netapp/volume:Volume": { - "description": "A volume is a file system container in a storage pool that stores application, database, and user data.\n\nYou can create a volume's capacity using the available capacity in the storage pool and you can define and resize the capacity without disruption to any processes.\n\nStorage pool settings apply to the volumes contained within them automatically.\n\n\nTo get more information about Volume, see:\n\n* [API documentation](https://cloud.google.com/netapp/volumes/docs/reference/rest/v1/projects.locations.volumes)\n* How-to Guides\n * [Documentation](https://cloud.google.com/netapp/volumes/docs/configure-and-use/volumes/overview)\n * [Quickstart](https://cloud.google.com/netapp/volumes/docs/get-started/quickstarts/create-volume)\n\n## Example Usage\n\n### Netapp Volume Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"test-network\",\n});\nconst defaultStoragePool = new gcp.netapp.StoragePool(\"default\", {\n name: \"test-pool\",\n location: \"us-west2\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst testVolume = new gcp.netapp.Volume(\"test_volume\", {\n location: \"us-west2\",\n name: \"test-volume\",\n capacityGib: \"100\",\n shareName: \"test-volume\",\n storagePool: defaultStoragePool.name,\n protocols: [\"NFSV3\"],\n deletionPolicy: \"DEFAULT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"test-network\")\ndefault_storage_pool = gcp.netapp.StoragePool(\"default\",\n name=\"test-pool\",\n location=\"us-west2\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\ntest_volume = gcp.netapp.Volume(\"test_volume\",\n location=\"us-west2\",\n name=\"test-volume\",\n capacity_gib=\"100\",\n share_name=\"test-volume\",\n storage_pool=default_storage_pool.name,\n protocols=[\"NFSV3\"],\n deletion_policy=\"DEFAULT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"test-network\",\n });\n\n var defaultStoragePool = new Gcp.Netapp.StoragePool(\"default\", new()\n {\n Name = \"test-pool\",\n Location = \"us-west2\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var testVolume = new Gcp.Netapp.Volume(\"test_volume\", new()\n {\n Location = \"us-west2\",\n Name = \"test-volume\",\n CapacityGib = \"100\",\n ShareName = \"test-volume\",\n StoragePool = defaultStoragePool.Name,\n Protocols = new[]\n {\n \"NFSV3\",\n },\n DeletionPolicy = \"DEFAULT\",\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/netapp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultStoragePool, err := netapp.NewStoragePool(ctx, \"default\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"test-pool\"),\n\t\t\tLocation: pulumi.String(\"us-west2\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = netapp.NewVolume(ctx, \"test_volume\", \u0026netapp.VolumeArgs{\n\t\t\tLocation: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"test-volume\"),\n\t\t\tCapacityGib: pulumi.String(\"100\"),\n\t\t\tShareName: pulumi.String(\"test-volume\"),\n\t\t\tStoragePool: defaultStoragePool.Name,\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NFSV3\"),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport com.pulumi.gcp.netapp.Volume;\nimport com.pulumi.gcp.netapp.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n var defaultStoragePool = new StoragePool(\"defaultStoragePool\", StoragePoolArgs.builder()\n .name(\"test-pool\")\n .location(\"us-west2\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(\"2048\")\n .network(default_.id())\n .build());\n\n var testVolume = new Volume(\"testVolume\", VolumeArgs.builder()\n .location(\"us-west2\")\n .name(\"test-volume\")\n .capacityGib(\"100\")\n .shareName(\"test-volume\")\n .storagePool(defaultStoragePool.name())\n .protocols(\"NFSV3\")\n .deletionPolicy(\"DEFAULT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultStoragePool:\n type: gcp:netapp:StoragePool\n name: default\n properties:\n name: test-pool\n location: us-west2\n serviceLevel: PREMIUM\n capacityGib: '2048'\n network: ${default.id}\n testVolume:\n type: gcp:netapp:Volume\n name: test_volume\n properties:\n location: us-west2\n name: test-volume\n capacityGib: '100'\n shareName: test-volume\n storagePool: ${defaultStoragePool.name}\n protocols:\n - NFSV3\n deletionPolicy: DEFAULT\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolume can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/volumes/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Volume can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/volume:Volume default projects/{{project}}/locations/{{location}}/volumes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volume:Volume default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volume:Volume default {{location}}/{{name}}\n```\n\n", + "description": "A volume is a file system container in a storage pool that stores application, database, and user data.\n\nYou can create a volume's capacity using the available capacity in the storage pool and you can define and resize the capacity without disruption to any processes.\n\nStorage pool settings apply to the volumes contained within them automatically.\n\n\nTo get more information about Volume, see:\n\n* [API documentation](https://cloud.google.com/netapp/volumes/docs/reference/rest/v1/projects.locations.volumes)\n* How-to Guides\n * [Documentation](https://cloud.google.com/netapp/volumes/docs/configure-and-use/volumes/overview)\n * [Quickstart](https://cloud.google.com/netapp/volumes/docs/get-started/quickstarts/create-volume)\n\n## Example Usage\n\n### Netapp Volume Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = gcp.compute.getNetwork({\n name: \"test-network\",\n});\nconst defaultStoragePool = new gcp.netapp.StoragePool(\"default\", {\n name: \"test-pool\",\n location: \"us-west2\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst testVolume = new gcp.netapp.Volume(\"test_volume\", {\n location: \"us-west2\",\n name: \"test-volume\",\n capacityGib: \"100\",\n shareName: \"test-volume\",\n storagePool: defaultStoragePool.name,\n protocols: [\"NFSV3\"],\n deletionPolicy: \"DEFAULT\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"test-network\")\ndefault_storage_pool = gcp.netapp.StoragePool(\"default\",\n name=\"test-pool\",\n location=\"us-west2\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\ntest_volume = gcp.netapp.Volume(\"test_volume\",\n location=\"us-west2\",\n name=\"test-volume\",\n capacity_gib=\"100\",\n share_name=\"test-volume\",\n storage_pool=default_storage_pool.name,\n protocols=[\"NFSV3\"],\n deletion_policy=\"DEFAULT\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"test-network\",\n });\n\n var defaultStoragePool = new Gcp.Netapp.StoragePool(\"default\", new()\n {\n Name = \"test-pool\",\n Location = \"us-west2\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var testVolume = new Gcp.Netapp.Volume(\"test_volume\", new()\n {\n Location = \"us-west2\",\n Name = \"test-volume\",\n CapacityGib = \"100\",\n ShareName = \"test-volume\",\n StoragePool = defaultStoragePool.Name,\n Protocols = new[]\n {\n \"NFSV3\",\n },\n DeletionPolicy = \"DEFAULT\",\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/netapp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultStoragePool, err := netapp.NewStoragePool(ctx, \"default\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"test-pool\"),\n\t\t\tLocation: pulumi.String(\"us-west2\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = netapp.NewVolume(ctx, \"test_volume\", \u0026netapp.VolumeArgs{\n\t\t\tLocation: pulumi.String(\"us-west2\"),\n\t\t\tName: pulumi.String(\"test-volume\"),\n\t\t\tCapacityGib: pulumi.String(\"100\"),\n\t\t\tShareName: pulumi.String(\"test-volume\"),\n\t\t\tStoragePool: defaultStoragePool.Name,\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NFSV3\"),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport com.pulumi.gcp.netapp.Volume;\nimport com.pulumi.gcp.netapp.VolumeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n var defaultStoragePool = new StoragePool(\"defaultStoragePool\", StoragePoolArgs.builder()\n .name(\"test-pool\")\n .location(\"us-west2\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(\"2048\")\n .network(default_.id())\n .build());\n\n var testVolume = new Volume(\"testVolume\", VolumeArgs.builder()\n .location(\"us-west2\")\n .name(\"test-volume\")\n .capacityGib(\"100\")\n .shareName(\"test-volume\")\n .storagePool(defaultStoragePool.name())\n .protocols(\"NFSV3\")\n .deletionPolicy(\"DEFAULT\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultStoragePool:\n type: gcp:netapp:StoragePool\n name: default\n properties:\n name: test-pool\n location: us-west2\n serviceLevel: PREMIUM\n capacityGib: '2048'\n network: ${default.id}\n testVolume:\n type: gcp:netapp:Volume\n name: test_volume\n properties:\n location: us-west2\n name: test-volume\n capacityGib: '100'\n shareName: test-volume\n storagePool: ${defaultStoragePool.name}\n protocols:\n - NFSV3\n deletionPolicy: DEFAULT\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolume can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/volumes/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Volume can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/volume:Volume default projects/{{project}}/locations/{{location}}/volumes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volume:Volume default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volume:Volume default {{location}}/{{name}}\n```\n\n", "properties": { "activeDirectory": { "type": "string", @@ -249281,7 +249281,7 @@ } }, "gcp:netapp/volumeReplication:VolumeReplication": { - "description": "## Example Usage\n\n### Netapp Volume Replication Create\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"test-network\",\n});\nconst sourcePool = new gcp.netapp.StoragePool(\"source_pool\", {\n name: \"source-pool\",\n location: \"us-central1\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst destinationPool = new gcp.netapp.StoragePool(\"destination_pool\", {\n name: \"destination-pool\",\n location: \"us-west2\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst sourceVolume = new gcp.netapp.Volume(\"source_volume\", {\n location: sourcePool.location,\n name: \"source-volume\",\n capacityGib: \"100\",\n shareName: \"source-volume\",\n storagePool: sourcePool.name,\n protocols: [\"NFSV3\"],\n deletionPolicy: \"FORCE\",\n});\nconst testReplication = new gcp.netapp.VolumeReplication(\"test_replication\", {\n location: sourceVolume.location,\n volumeName: sourceVolume.name,\n name: \"test-replication\",\n replicationSchedule: \"EVERY_10_MINUTES\",\n description: \"This is a replication resource\",\n destinationVolumeParameters: {\n storagePool: destinationPool.id,\n volumeId: \"destination-volume\",\n shareName: \"source-volume\",\n description: \"This is a replicated volume\",\n },\n deleteDestinationVolume: true,\n waitForMirror: true,\n}, {\n dependsOn: [sourceVolume],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"test-network\")\nsource_pool = gcp.netapp.StoragePool(\"source_pool\",\n name=\"source-pool\",\n location=\"us-central1\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\ndestination_pool = gcp.netapp.StoragePool(\"destination_pool\",\n name=\"destination-pool\",\n location=\"us-west2\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\nsource_volume = gcp.netapp.Volume(\"source_volume\",\n location=source_pool.location,\n name=\"source-volume\",\n capacity_gib=\"100\",\n share_name=\"source-volume\",\n storage_pool=source_pool.name,\n protocols=[\"NFSV3\"],\n deletion_policy=\"FORCE\")\ntest_replication = gcp.netapp.VolumeReplication(\"test_replication\",\n location=source_volume.location,\n volume_name=source_volume.name,\n name=\"test-replication\",\n replication_schedule=\"EVERY_10_MINUTES\",\n description=\"This is a replication resource\",\n destination_volume_parameters={\n \"storage_pool\": destination_pool.id,\n \"volume_id\": \"destination-volume\",\n \"share_name\": \"source-volume\",\n \"description\": \"This is a replicated volume\",\n },\n delete_destination_volume=True,\n wait_for_mirror=True,\n opts = pulumi.ResourceOptions(depends_on=[source_volume]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"test-network\",\n });\n\n var sourcePool = new Gcp.Netapp.StoragePool(\"source_pool\", new()\n {\n Name = \"source-pool\",\n Location = \"us-central1\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var destinationPool = new Gcp.Netapp.StoragePool(\"destination_pool\", new()\n {\n Name = \"destination-pool\",\n Location = \"us-west2\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var sourceVolume = new Gcp.Netapp.Volume(\"source_volume\", new()\n {\n Location = sourcePool.Location,\n Name = \"source-volume\",\n CapacityGib = \"100\",\n ShareName = \"source-volume\",\n StoragePool = sourcePool.Name,\n Protocols = new[]\n {\n \"NFSV3\",\n },\n DeletionPolicy = \"FORCE\",\n });\n\n var testReplication = new Gcp.Netapp.VolumeReplication(\"test_replication\", new()\n {\n Location = sourceVolume.Location,\n VolumeName = sourceVolume.Name,\n Name = \"test-replication\",\n ReplicationSchedule = \"EVERY_10_MINUTES\",\n Description = \"This is a replication resource\",\n DestinationVolumeParameters = new Gcp.Netapp.Inputs.VolumeReplicationDestinationVolumeParametersArgs\n {\n StoragePool = destinationPool.Id,\n VolumeId = \"destination-volume\",\n ShareName = \"source-volume\",\n Description = \"This is a replicated volume\",\n },\n DeleteDestinationVolume = true,\n WaitForMirror = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceVolume,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/netapp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourcePool, err := netapp.NewStoragePool(ctx, \"source_pool\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"source-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationPool, err := netapp.NewStoragePool(ctx, \"destination_pool\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"destination-pool\"),\n\t\t\tLocation: pulumi.String(\"us-west2\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceVolume, err := netapp.NewVolume(ctx, \"source_volume\", \u0026netapp.VolumeArgs{\n\t\t\tLocation: sourcePool.Location,\n\t\t\tName: pulumi.String(\"source-volume\"),\n\t\t\tCapacityGib: pulumi.String(\"100\"),\n\t\t\tShareName: pulumi.String(\"source-volume\"),\n\t\t\tStoragePool: sourcePool.Name,\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NFSV3\"),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"FORCE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = netapp.NewVolumeReplication(ctx, \"test_replication\", \u0026netapp.VolumeReplicationArgs{\n\t\t\tLocation: sourceVolume.Location,\n\t\t\tVolumeName: sourceVolume.Name,\n\t\t\tName: pulumi.String(\"test-replication\"),\n\t\t\tReplicationSchedule: pulumi.String(\"EVERY_10_MINUTES\"),\n\t\t\tDescription: pulumi.String(\"This is a replication resource\"),\n\t\t\tDestinationVolumeParameters: \u0026netapp.VolumeReplicationDestinationVolumeParametersArgs{\n\t\t\t\tStoragePool: destinationPool.ID(),\n\t\t\t\tVolumeId: pulumi.String(\"destination-volume\"),\n\t\t\t\tShareName: pulumi.String(\"source-volume\"),\n\t\t\t\tDescription: pulumi.String(\"This is a replicated volume\"),\n\t\t\t},\n\t\t\tDeleteDestinationVolume: pulumi.Bool(true),\n\t\t\tWaitForMirror: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceVolume,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport com.pulumi.gcp.netapp.Volume;\nimport com.pulumi.gcp.netapp.VolumeArgs;\nimport com.pulumi.gcp.netapp.VolumeReplication;\nimport com.pulumi.gcp.netapp.VolumeReplicationArgs;\nimport com.pulumi.gcp.netapp.inputs.VolumeReplicationDestinationVolumeParametersArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n var sourcePool = new StoragePool(\"sourcePool\", StoragePoolArgs.builder()\n .name(\"source-pool\")\n .location(\"us-central1\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(2048)\n .network(default_.id())\n .build());\n\n var destinationPool = new StoragePool(\"destinationPool\", StoragePoolArgs.builder()\n .name(\"destination-pool\")\n .location(\"us-west2\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(2048)\n .network(default_.id())\n .build());\n\n var sourceVolume = new Volume(\"sourceVolume\", VolumeArgs.builder()\n .location(sourcePool.location())\n .name(\"source-volume\")\n .capacityGib(100)\n .shareName(\"source-volume\")\n .storagePool(sourcePool.name())\n .protocols(\"NFSV3\")\n .deletionPolicy(\"FORCE\")\n .build());\n\n var testReplication = new VolumeReplication(\"testReplication\", VolumeReplicationArgs.builder()\n .location(sourceVolume.location())\n .volumeName(sourceVolume.name())\n .name(\"test-replication\")\n .replicationSchedule(\"EVERY_10_MINUTES\")\n .description(\"This is a replication resource\")\n .destinationVolumeParameters(VolumeReplicationDestinationVolumeParametersArgs.builder()\n .storagePool(destinationPool.id())\n .volumeId(\"destination-volume\")\n .shareName(\"source-volume\")\n .description(\"This is a replicated volume\")\n .build())\n .deleteDestinationVolume(true)\n .waitForMirror(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceVolume)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sourcePool:\n type: gcp:netapp:StoragePool\n name: source_pool\n properties:\n name: source-pool\n location: us-central1\n serviceLevel: PREMIUM\n capacityGib: 2048\n network: ${default.id}\n destinationPool:\n type: gcp:netapp:StoragePool\n name: destination_pool\n properties:\n name: destination-pool\n location: us-west2\n serviceLevel: PREMIUM\n capacityGib: 2048\n network: ${default.id}\n sourceVolume:\n type: gcp:netapp:Volume\n name: source_volume\n properties:\n location: ${sourcePool.location}\n name: source-volume\n capacityGib: 100\n shareName: source-volume\n storagePool: ${sourcePool.name}\n protocols:\n - NFSV3\n deletionPolicy: FORCE\n testReplication:\n type: gcp:netapp:VolumeReplication\n name: test_replication\n properties:\n location: ${sourceVolume.location}\n volumeName: ${sourceVolume.name}\n name: test-replication\n replicationSchedule: EVERY_10_MINUTES\n description: This is a replication resource\n destinationVolumeParameters:\n storagePool: ${destinationPool.id}\n volumeId: destination-volume\n shareName: source-volume\n description: This is a replicated volume\n deleteDestinationVolume: true\n waitForMirror: true\n options:\n dependsOn:\n - ${sourceVolume}\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolumeReplication can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/replications/{{name}}`\n\n* `{{project}}/{{location}}/{{volume_name}}/{{name}}`\n\n* `{{location}}/{{volume_name}}/{{name}}`\n\nWhen using the `pulumi import` command, VolumeReplication can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/volumeReplication:VolumeReplication default projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/replications/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volumeReplication:VolumeReplication default {{project}}/{{location}}/{{volume_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volumeReplication:VolumeReplication default {{location}}/{{volume_name}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Netapp Volume Replication Create\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = gcp.compute.getNetwork({\n name: \"test-network\",\n});\nconst sourcePool = new gcp.netapp.StoragePool(\"source_pool\", {\n name: \"source-pool\",\n location: \"us-central1\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst destinationPool = new gcp.netapp.StoragePool(\"destination_pool\", {\n name: \"destination-pool\",\n location: \"us-west2\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst sourceVolume = new gcp.netapp.Volume(\"source_volume\", {\n location: sourcePool.location,\n name: \"source-volume\",\n capacityGib: \"100\",\n shareName: \"source-volume\",\n storagePool: sourcePool.name,\n protocols: [\"NFSV3\"],\n deletionPolicy: \"FORCE\",\n});\nconst testReplication = new gcp.netapp.VolumeReplication(\"test_replication\", {\n location: sourceVolume.location,\n volumeName: sourceVolume.name,\n name: \"test-replication\",\n replicationSchedule: \"EVERY_10_MINUTES\",\n description: \"This is a replication resource\",\n destinationVolumeParameters: {\n storagePool: destinationPool.id,\n volumeId: \"destination-volume\",\n shareName: \"source-volume\",\n description: \"This is a replicated volume\",\n },\n deleteDestinationVolume: true,\n waitForMirror: true,\n}, {\n dependsOn: [sourceVolume],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"test-network\")\nsource_pool = gcp.netapp.StoragePool(\"source_pool\",\n name=\"source-pool\",\n location=\"us-central1\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\ndestination_pool = gcp.netapp.StoragePool(\"destination_pool\",\n name=\"destination-pool\",\n location=\"us-west2\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\nsource_volume = gcp.netapp.Volume(\"source_volume\",\n location=source_pool.location,\n name=\"source-volume\",\n capacity_gib=\"100\",\n share_name=\"source-volume\",\n storage_pool=source_pool.name,\n protocols=[\"NFSV3\"],\n deletion_policy=\"FORCE\")\ntest_replication = gcp.netapp.VolumeReplication(\"test_replication\",\n location=source_volume.location,\n volume_name=source_volume.name,\n name=\"test-replication\",\n replication_schedule=\"EVERY_10_MINUTES\",\n description=\"This is a replication resource\",\n destination_volume_parameters={\n \"storage_pool\": destination_pool.id,\n \"volume_id\": \"destination-volume\",\n \"share_name\": \"source-volume\",\n \"description\": \"This is a replicated volume\",\n },\n delete_destination_volume=True,\n wait_for_mirror=True,\n opts = pulumi.ResourceOptions(depends_on=[source_volume]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"test-network\",\n });\n\n var sourcePool = new Gcp.Netapp.StoragePool(\"source_pool\", new()\n {\n Name = \"source-pool\",\n Location = \"us-central1\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var destinationPool = new Gcp.Netapp.StoragePool(\"destination_pool\", new()\n {\n Name = \"destination-pool\",\n Location = \"us-west2\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var sourceVolume = new Gcp.Netapp.Volume(\"source_volume\", new()\n {\n Location = sourcePool.Location,\n Name = \"source-volume\",\n CapacityGib = \"100\",\n ShareName = \"source-volume\",\n StoragePool = sourcePool.Name,\n Protocols = new[]\n {\n \"NFSV3\",\n },\n DeletionPolicy = \"FORCE\",\n });\n\n var testReplication = new Gcp.Netapp.VolumeReplication(\"test_replication\", new()\n {\n Location = sourceVolume.Location,\n VolumeName = sourceVolume.Name,\n Name = \"test-replication\",\n ReplicationSchedule = \"EVERY_10_MINUTES\",\n Description = \"This is a replication resource\",\n DestinationVolumeParameters = new Gcp.Netapp.Inputs.VolumeReplicationDestinationVolumeParametersArgs\n {\n StoragePool = destinationPool.Id,\n VolumeId = \"destination-volume\",\n ShareName = \"source-volume\",\n Description = \"This is a replicated volume\",\n },\n DeleteDestinationVolume = true,\n WaitForMirror = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n sourceVolume,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/netapp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourcePool, err := netapp.NewStoragePool(ctx, \"source_pool\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"source-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdestinationPool, err := netapp.NewStoragePool(ctx, \"destination_pool\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"destination-pool\"),\n\t\t\tLocation: pulumi.String(\"us-west2\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsourceVolume, err := netapp.NewVolume(ctx, \"source_volume\", \u0026netapp.VolumeArgs{\n\t\t\tLocation: sourcePool.Location,\n\t\t\tName: pulumi.String(\"source-volume\"),\n\t\t\tCapacityGib: pulumi.String(\"100\"),\n\t\t\tShareName: pulumi.String(\"source-volume\"),\n\t\t\tStoragePool: sourcePool.Name,\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NFSV3\"),\n\t\t\t},\n\t\t\tDeletionPolicy: pulumi.String(\"FORCE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = netapp.NewVolumeReplication(ctx, \"test_replication\", \u0026netapp.VolumeReplicationArgs{\n\t\t\tLocation: sourceVolume.Location,\n\t\t\tVolumeName: sourceVolume.Name,\n\t\t\tName: pulumi.String(\"test-replication\"),\n\t\t\tReplicationSchedule: pulumi.String(\"EVERY_10_MINUTES\"),\n\t\t\tDescription: pulumi.String(\"This is a replication resource\"),\n\t\t\tDestinationVolumeParameters: \u0026netapp.VolumeReplicationDestinationVolumeParametersArgs{\n\t\t\t\tStoragePool: destinationPool.ID(),\n\t\t\t\tVolumeId: pulumi.String(\"destination-volume\"),\n\t\t\t\tShareName: pulumi.String(\"source-volume\"),\n\t\t\t\tDescription: pulumi.String(\"This is a replicated volume\"),\n\t\t\t},\n\t\t\tDeleteDestinationVolume: pulumi.Bool(true),\n\t\t\tWaitForMirror: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsourceVolume,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport com.pulumi.gcp.netapp.Volume;\nimport com.pulumi.gcp.netapp.VolumeArgs;\nimport com.pulumi.gcp.netapp.VolumeReplication;\nimport com.pulumi.gcp.netapp.VolumeReplicationArgs;\nimport com.pulumi.gcp.netapp.inputs.VolumeReplicationDestinationVolumeParametersArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n var sourcePool = new StoragePool(\"sourcePool\", StoragePoolArgs.builder()\n .name(\"source-pool\")\n .location(\"us-central1\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(2048)\n .network(default_.id())\n .build());\n\n var destinationPool = new StoragePool(\"destinationPool\", StoragePoolArgs.builder()\n .name(\"destination-pool\")\n .location(\"us-west2\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(2048)\n .network(default_.id())\n .build());\n\n var sourceVolume = new Volume(\"sourceVolume\", VolumeArgs.builder()\n .location(sourcePool.location())\n .name(\"source-volume\")\n .capacityGib(100)\n .shareName(\"source-volume\")\n .storagePool(sourcePool.name())\n .protocols(\"NFSV3\")\n .deletionPolicy(\"FORCE\")\n .build());\n\n var testReplication = new VolumeReplication(\"testReplication\", VolumeReplicationArgs.builder()\n .location(sourceVolume.location())\n .volumeName(sourceVolume.name())\n .name(\"test-replication\")\n .replicationSchedule(\"EVERY_10_MINUTES\")\n .description(\"This is a replication resource\")\n .destinationVolumeParameters(VolumeReplicationDestinationVolumeParametersArgs.builder()\n .storagePool(destinationPool.id())\n .volumeId(\"destination-volume\")\n .shareName(\"source-volume\")\n .description(\"This is a replicated volume\")\n .build())\n .deleteDestinationVolume(true)\n .waitForMirror(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(sourceVolume)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n sourcePool:\n type: gcp:netapp:StoragePool\n name: source_pool\n properties:\n name: source-pool\n location: us-central1\n serviceLevel: PREMIUM\n capacityGib: 2048\n network: ${default.id}\n destinationPool:\n type: gcp:netapp:StoragePool\n name: destination_pool\n properties:\n name: destination-pool\n location: us-west2\n serviceLevel: PREMIUM\n capacityGib: 2048\n network: ${default.id}\n sourceVolume:\n type: gcp:netapp:Volume\n name: source_volume\n properties:\n location: ${sourcePool.location}\n name: source-volume\n capacityGib: 100\n shareName: source-volume\n storagePool: ${sourcePool.name}\n protocols:\n - NFSV3\n deletionPolicy: FORCE\n testReplication:\n type: gcp:netapp:VolumeReplication\n name: test_replication\n properties:\n location: ${sourceVolume.location}\n volumeName: ${sourceVolume.name}\n name: test-replication\n replicationSchedule: EVERY_10_MINUTES\n description: This is a replication resource\n destinationVolumeParameters:\n storagePool: ${destinationPool.id}\n volumeId: destination-volume\n shareName: source-volume\n description: This is a replicated volume\n deleteDestinationVolume: true\n waitForMirror: true\n options:\n dependsOn:\n - ${sourceVolume}\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolumeReplication can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/replications/{{name}}`\n\n* `{{project}}/{{location}}/{{volume_name}}/{{name}}`\n\n* `{{location}}/{{volume_name}}/{{name}}`\n\nWhen using the `pulumi import` command, VolumeReplication can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/volumeReplication:VolumeReplication default projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/replications/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volumeReplication:VolumeReplication default {{project}}/{{location}}/{{volume_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volumeReplication:VolumeReplication default {{location}}/{{volume_name}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -249582,7 +249582,7 @@ } }, "gcp:netapp/volumeSnapshot:VolumeSnapshot": { - "description": "NetApp Volumes helps you manage your data usage with snapshots that can quickly restore lost data.\nSnapshots are point-in-time versions of your volume's content. They are resources of volumes and are\ninstant captures of your data that consume space only for modified data. Because data changes over\ntime, snapshots usually consume more space as they get older.\nNetApp Volumes volumes use just-in-time copy-on-write so that unmodified files in snapshots don't\nconsume any of the volume's capacity.\n\n\nTo get more information about VolumeSnapshot, see:\n\n* [API documentation](https://cloud.google.com/netapp/volumes/docs/reference/rest/v1/projects.locations.volumes.snapshots)\n* How-to Guides\n * [Documentation](https://cloud.google.com/netapp/volumes/docs/configure-and-use/volume-snapshots/overview)\n\n## Example Usage\n\n### Volume Snapshot Create\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"test-network\",\n});\nconst defaultStoragePool = new gcp.netapp.StoragePool(\"default\", {\n name: \"test-pool\",\n location: \"us-west2\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst defaultVolume = new gcp.netapp.Volume(\"default\", {\n location: defaultStoragePool.location,\n name: \"test-volume\",\n capacityGib: \"100\",\n shareName: \"test-volume\",\n storagePool: defaultStoragePool.name,\n protocols: [\"NFSV3\"],\n});\nconst testSnapshot = new gcp.netapp.VolumeSnapshot(\"test_snapshot\", {\n location: defaultVolume.location,\n volumeName: defaultVolume.name,\n name: \"testvolumesnap\",\n}, {\n dependsOn: [defaultVolume],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"test-network\")\ndefault_storage_pool = gcp.netapp.StoragePool(\"default\",\n name=\"test-pool\",\n location=\"us-west2\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\ndefault_volume = gcp.netapp.Volume(\"default\",\n location=default_storage_pool.location,\n name=\"test-volume\",\n capacity_gib=\"100\",\n share_name=\"test-volume\",\n storage_pool=default_storage_pool.name,\n protocols=[\"NFSV3\"])\ntest_snapshot = gcp.netapp.VolumeSnapshot(\"test_snapshot\",\n location=default_volume.location,\n volume_name=default_volume.name,\n name=\"testvolumesnap\",\n opts = pulumi.ResourceOptions(depends_on=[default_volume]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"test-network\",\n });\n\n var defaultStoragePool = new Gcp.Netapp.StoragePool(\"default\", new()\n {\n Name = \"test-pool\",\n Location = \"us-west2\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var defaultVolume = new Gcp.Netapp.Volume(\"default\", new()\n {\n Location = defaultStoragePool.Location,\n Name = \"test-volume\",\n CapacityGib = \"100\",\n ShareName = \"test-volume\",\n StoragePool = defaultStoragePool.Name,\n Protocols = new[]\n {\n \"NFSV3\",\n },\n });\n\n var testSnapshot = new Gcp.Netapp.VolumeSnapshot(\"test_snapshot\", new()\n {\n Location = defaultVolume.Location,\n VolumeName = defaultVolume.Name,\n Name = \"testvolumesnap\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultVolume,\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/netapp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultStoragePool, err := netapp.NewStoragePool(ctx, \"default\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"test-pool\"),\n\t\t\tLocation: pulumi.String(\"us-west2\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultVolume, err := netapp.NewVolume(ctx, \"default\", \u0026netapp.VolumeArgs{\n\t\t\tLocation: defaultStoragePool.Location,\n\t\t\tName: pulumi.String(\"test-volume\"),\n\t\t\tCapacityGib: pulumi.String(\"100\"),\n\t\t\tShareName: pulumi.String(\"test-volume\"),\n\t\t\tStoragePool: defaultStoragePool.Name,\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NFSV3\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = netapp.NewVolumeSnapshot(ctx, \"test_snapshot\", \u0026netapp.VolumeSnapshotArgs{\n\t\t\tLocation: defaultVolume.Location,\n\t\t\tVolumeName: defaultVolume.Name,\n\t\t\tName: pulumi.String(\"testvolumesnap\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultVolume,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport com.pulumi.gcp.netapp.Volume;\nimport com.pulumi.gcp.netapp.VolumeArgs;\nimport com.pulumi.gcp.netapp.VolumeSnapshot;\nimport com.pulumi.gcp.netapp.VolumeSnapshotArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n var defaultStoragePool = new StoragePool(\"defaultStoragePool\", StoragePoolArgs.builder()\n .name(\"test-pool\")\n .location(\"us-west2\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(2048)\n .network(default_.id())\n .build());\n\n var defaultVolume = new Volume(\"defaultVolume\", VolumeArgs.builder()\n .location(defaultStoragePool.location())\n .name(\"test-volume\")\n .capacityGib(100)\n .shareName(\"test-volume\")\n .storagePool(defaultStoragePool.name())\n .protocols(\"NFSV3\")\n .build());\n\n var testSnapshot = new VolumeSnapshot(\"testSnapshot\", VolumeSnapshotArgs.builder()\n .location(defaultVolume.location())\n .volumeName(defaultVolume.name())\n .name(\"testvolumesnap\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultVolume)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultStoragePool:\n type: gcp:netapp:StoragePool\n name: default\n properties:\n name: test-pool\n location: us-west2\n serviceLevel: PREMIUM\n capacityGib: 2048\n network: ${default.id}\n defaultVolume:\n type: gcp:netapp:Volume\n name: default\n properties:\n location: ${defaultStoragePool.location}\n name: test-volume\n capacityGib: 100\n shareName: test-volume\n storagePool: ${defaultStoragePool.name}\n protocols:\n - NFSV3\n testSnapshot:\n type: gcp:netapp:VolumeSnapshot\n name: test_snapshot\n properties:\n location: ${defaultVolume.location}\n volumeName: ${defaultVolume.name}\n name: testvolumesnap\n options:\n dependsOn:\n - ${defaultVolume}\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolumeSnapshot can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/snapshots/{{name}}`\n\n* `{{project}}/{{location}}/{{volume_name}}/{{name}}`\n\n* `{{location}}/{{volume_name}}/{{name}}`\n\nWhen using the `pulumi import` command, VolumeSnapshot can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/volumeSnapshot:VolumeSnapshot default projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/snapshots/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volumeSnapshot:VolumeSnapshot default {{project}}/{{location}}/{{volume_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volumeSnapshot:VolumeSnapshot default {{location}}/{{volume_name}}/{{name}}\n```\n\n", + "description": "NetApp Volumes helps you manage your data usage with snapshots that can quickly restore lost data.\nSnapshots are point-in-time versions of your volume's content. They are resources of volumes and are\ninstant captures of your data that consume space only for modified data. Because data changes over\ntime, snapshots usually consume more space as they get older.\nNetApp Volumes volumes use just-in-time copy-on-write so that unmodified files in snapshots don't\nconsume any of the volume's capacity.\n\n\nTo get more information about VolumeSnapshot, see:\n\n* [API documentation](https://cloud.google.com/netapp/volumes/docs/reference/rest/v1/projects.locations.volumes.snapshots)\n* How-to Guides\n * [Documentation](https://cloud.google.com/netapp/volumes/docs/configure-and-use/volume-snapshots/overview)\n\n## Example Usage\n\n### Volume Snapshot Create\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = gcp.compute.getNetwork({\n name: \"test-network\",\n});\nconst defaultStoragePool = new gcp.netapp.StoragePool(\"default\", {\n name: \"test-pool\",\n location: \"us-west2\",\n serviceLevel: \"PREMIUM\",\n capacityGib: \"2048\",\n network: _default.then(_default =\u003e _default.id),\n});\nconst defaultVolume = new gcp.netapp.Volume(\"default\", {\n location: defaultStoragePool.location,\n name: \"test-volume\",\n capacityGib: \"100\",\n shareName: \"test-volume\",\n storagePool: defaultStoragePool.name,\n protocols: [\"NFSV3\"],\n});\nconst testSnapshot = new gcp.netapp.VolumeSnapshot(\"test_snapshot\", {\n location: defaultVolume.location,\n volumeName: defaultVolume.name,\n name: \"testvolumesnap\",\n}, {\n dependsOn: [defaultVolume],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"test-network\")\ndefault_storage_pool = gcp.netapp.StoragePool(\"default\",\n name=\"test-pool\",\n location=\"us-west2\",\n service_level=\"PREMIUM\",\n capacity_gib=\"2048\",\n network=default.id)\ndefault_volume = gcp.netapp.Volume(\"default\",\n location=default_storage_pool.location,\n name=\"test-volume\",\n capacity_gib=\"100\",\n share_name=\"test-volume\",\n storage_pool=default_storage_pool.name,\n protocols=[\"NFSV3\"])\ntest_snapshot = gcp.netapp.VolumeSnapshot(\"test_snapshot\",\n location=default_volume.location,\n volume_name=default_volume.name,\n name=\"testvolumesnap\",\n opts = pulumi.ResourceOptions(depends_on=[default_volume]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"test-network\",\n });\n\n var defaultStoragePool = new Gcp.Netapp.StoragePool(\"default\", new()\n {\n Name = \"test-pool\",\n Location = \"us-west2\",\n ServiceLevel = \"PREMIUM\",\n CapacityGib = \"2048\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n });\n\n var defaultVolume = new Gcp.Netapp.Volume(\"default\", new()\n {\n Location = defaultStoragePool.Location,\n Name = \"test-volume\",\n CapacityGib = \"100\",\n ShareName = \"test-volume\",\n StoragePool = defaultStoragePool.Name,\n Protocols = new[]\n {\n \"NFSV3\",\n },\n });\n\n var testSnapshot = new Gcp.Netapp.VolumeSnapshot(\"test_snapshot\", new()\n {\n Location = defaultVolume.Location,\n VolumeName = defaultVolume.Name,\n Name = \"testvolumesnap\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultVolume,\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/netapp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultStoragePool, err := netapp.NewStoragePool(ctx, \"default\", \u0026netapp.StoragePoolArgs{\n\t\t\tName: pulumi.String(\"test-pool\"),\n\t\t\tLocation: pulumi.String(\"us-west2\"),\n\t\t\tServiceLevel: pulumi.String(\"PREMIUM\"),\n\t\t\tCapacityGib: pulumi.String(\"2048\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultVolume, err := netapp.NewVolume(ctx, \"default\", \u0026netapp.VolumeArgs{\n\t\t\tLocation: defaultStoragePool.Location,\n\t\t\tName: pulumi.String(\"test-volume\"),\n\t\t\tCapacityGib: pulumi.String(\"100\"),\n\t\t\tShareName: pulumi.String(\"test-volume\"),\n\t\t\tStoragePool: defaultStoragePool.Name,\n\t\t\tProtocols: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"NFSV3\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = netapp.NewVolumeSnapshot(ctx, \"test_snapshot\", \u0026netapp.VolumeSnapshotArgs{\n\t\t\tLocation: defaultVolume.Location,\n\t\t\tVolumeName: defaultVolume.Name,\n\t\t\tName: pulumi.String(\"testvolumesnap\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultVolume,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.netapp.StoragePool;\nimport com.pulumi.gcp.netapp.StoragePoolArgs;\nimport com.pulumi.gcp.netapp.Volume;\nimport com.pulumi.gcp.netapp.VolumeArgs;\nimport com.pulumi.gcp.netapp.VolumeSnapshot;\nimport com.pulumi.gcp.netapp.VolumeSnapshotArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"test-network\")\n .build());\n\n var defaultStoragePool = new StoragePool(\"defaultStoragePool\", StoragePoolArgs.builder()\n .name(\"test-pool\")\n .location(\"us-west2\")\n .serviceLevel(\"PREMIUM\")\n .capacityGib(2048)\n .network(default_.id())\n .build());\n\n var defaultVolume = new Volume(\"defaultVolume\", VolumeArgs.builder()\n .location(defaultStoragePool.location())\n .name(\"test-volume\")\n .capacityGib(100)\n .shareName(\"test-volume\")\n .storagePool(defaultStoragePool.name())\n .protocols(\"NFSV3\")\n .build());\n\n var testSnapshot = new VolumeSnapshot(\"testSnapshot\", VolumeSnapshotArgs.builder()\n .location(defaultVolume.location())\n .volumeName(defaultVolume.name())\n .name(\"testvolumesnap\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultVolume)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n defaultStoragePool:\n type: gcp:netapp:StoragePool\n name: default\n properties:\n name: test-pool\n location: us-west2\n serviceLevel: PREMIUM\n capacityGib: 2048\n network: ${default.id}\n defaultVolume:\n type: gcp:netapp:Volume\n name: default\n properties:\n location: ${defaultStoragePool.location}\n name: test-volume\n capacityGib: 100\n shareName: test-volume\n storagePool: ${defaultStoragePool.name}\n protocols:\n - NFSV3\n testSnapshot:\n type: gcp:netapp:VolumeSnapshot\n name: test_snapshot\n properties:\n location: ${defaultVolume.location}\n volumeName: ${defaultVolume.name}\n name: testvolumesnap\n options:\n dependsOn:\n - ${defaultVolume}\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVolumeSnapshot can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/snapshots/{{name}}`\n\n* `{{project}}/{{location}}/{{volume_name}}/{{name}}`\n\n* `{{location}}/{{volume_name}}/{{name}}`\n\nWhen using the `pulumi import` command, VolumeSnapshot can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:netapp/volumeSnapshot:VolumeSnapshot default projects/{{project}}/locations/{{location}}/volumes/{{volume_name}}/snapshots/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volumeSnapshot:VolumeSnapshot default {{project}}/{{location}}/{{volume_name}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:netapp/volumeSnapshot:VolumeSnapshot default {{location}}/{{volume_name}}/{{name}}\n```\n\n", "properties": { "description": { "type": "string", @@ -251087,7 +251087,7 @@ } }, "gcp:networkconnectivity/spoke:Spoke": { - "description": "The NetworkConnectivity Spoke resource\n\n\nTo get more information about Spoke, see:\n\n* [API documentation](https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest/v1beta/projects.locations.spokes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/overview)\n\n## Example Usage\n\n### Network Connectivity Spoke Linked Vpc Network Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"net\",\n autoCreateSubnetworks: false,\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"hub1\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"spoke1\",\n location: \"global\",\n description: \"A sample spoke with a linked router appliance instance\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpcNetwork: {\n excludeExportRanges: [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n includeExportRanges: [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n ],\n uri: network.selfLink,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"net\",\n auto_create_subnetworks=False)\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"hub1\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"spoke1\",\n location=\"global\",\n description=\"A sample spoke with a linked router appliance instance\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpc_network={\n \"exclude_export_ranges\": [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n \"include_export_ranges\": [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n ],\n \"uri\": network.self_link,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"net\",\n AutoCreateSubnetworks = false,\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub1\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"spoke1\",\n Location = \"global\",\n Description = \"A sample spoke with a linked router appliance instance\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n ExcludeExportRanges = new[]\n {\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n },\n IncludeExportRanges = new[]\n {\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n },\n Uri = network.SelfLink,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub1\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"spoke1\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked router appliance instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\n\t\t\t\tExcludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/24\"),\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tIncludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/23\"),\n\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t},\n\t\t\t\tUri: network.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub1\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"spoke1\")\n .location(\"global\")\n .description(\"A sample spoke with a linked router appliance instance\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .excludeExportRanges( \n \"198.51.100.0/24\",\n \"10.10.0.0/16\")\n .includeExportRanges( \n \"198.51.100.0/23\",\n \"10.0.0.0/8\")\n .uri(network.selfLink())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: net\n autoCreateSubnetworks: false\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub1\n description: A sample hub\n labels:\n label-two: value-one\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: spoke1\n location: global\n description: A sample spoke with a linked router appliance instance\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpcNetwork:\n excludeExportRanges:\n - 198.51.100.0/24\n - 10.10.0.0/16\n includeExportRanges:\n - 198.51.100.0/23\n - 10.0.0.0/8\n uri: ${network.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Linked Vpc Network Group\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"net-spoke\",\n autoCreateSubnetworks: false,\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"hub1-spoke\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst defaultGroup = new gcp.networkconnectivity.Group(\"default_group\", {\n hub: basicHub.id,\n name: \"default\",\n description: \"A sample hub group\",\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"group-spoke1\",\n location: \"global\",\n description: \"A sample spoke with a linked VPC\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpcNetwork: {\n excludeExportRanges: [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n includeExportRanges: [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n ],\n uri: network.selfLink,\n },\n group: defaultGroup.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"net-spoke\",\n auto_create_subnetworks=False)\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"hub1-spoke\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\ndefault_group = gcp.networkconnectivity.Group(\"default_group\",\n hub=basic_hub.id,\n name=\"default\",\n description=\"A sample hub group\")\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"group-spoke1\",\n location=\"global\",\n description=\"A sample spoke with a linked VPC\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpc_network={\n \"exclude_export_ranges\": [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n \"include_export_ranges\": [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n ],\n \"uri\": network.self_link,\n },\n group=default_group.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"net-spoke\",\n AutoCreateSubnetworks = false,\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub1-spoke\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var defaultGroup = new Gcp.NetworkConnectivity.Group(\"default_group\", new()\n {\n Hub = basicHub.Id,\n Name = \"default\",\n Description = \"A sample hub group\",\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"group-spoke1\",\n Location = \"global\",\n Description = \"A sample spoke with a linked VPC\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n ExcludeExportRanges = new[]\n {\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n },\n IncludeExportRanges = new[]\n {\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n },\n Uri = network.SelfLink,\n },\n Group = defaultGroup.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net-spoke\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub1-spoke\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGroup, err := networkconnectivity.NewGroup(ctx, \"default_group\", \u0026networkconnectivity.GroupArgs{\n\t\t\tHub: basicHub.ID(),\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tDescription: pulumi.String(\"A sample hub group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"group-spoke1\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked VPC\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\n\t\t\t\tExcludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/24\"),\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tIncludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/23\"),\n\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t},\n\t\t\t\tUri: network.SelfLink,\n\t\t\t},\n\t\t\tGroup: defaultGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Group;\nimport com.pulumi.gcp.networkconnectivity.GroupArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"net-spoke\")\n .autoCreateSubnetworks(false)\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub1-spoke\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var defaultGroup = new Group(\"defaultGroup\", GroupArgs.builder()\n .hub(basicHub.id())\n .name(\"default\")\n .description(\"A sample hub group\")\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"group-spoke1\")\n .location(\"global\")\n .description(\"A sample spoke with a linked VPC\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .excludeExportRanges( \n \"198.51.100.0/24\",\n \"10.10.0.0/16\")\n .includeExportRanges( \n \"198.51.100.0/23\",\n \"10.0.0.0/8\")\n .uri(network.selfLink())\n .build())\n .group(defaultGroup.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: net-spoke\n autoCreateSubnetworks: false\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub1-spoke\n description: A sample hub\n labels:\n label-two: value-one\n defaultGroup:\n type: gcp:networkconnectivity:Group\n name: default_group\n properties:\n hub: ${basicHub.id}\n name: default\n description: A sample hub group\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: group-spoke1\n location: global\n description: A sample spoke with a linked VPC\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpcNetwork:\n excludeExportRanges:\n - 198.51.100.0/24\n - 10.10.0.0/16\n includeExportRanges:\n - 198.51.100.0/23\n - 10.0.0.0/8\n uri: ${network.selfLink}\n group: ${defaultGroup.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Router Appliance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"tf-test-network_37559\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"tf-test-subnet_91980\",\n ipCidrRange: \"10.0.0.0/28\",\n region: \"us-central1\",\n network: network.selfLink,\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n name: \"tf-test-instance_37118\",\n machineType: \"e2-medium\",\n canIpForward: true,\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"projects/debian-cloud/global/images/debian-10-buster-v20210817\",\n },\n },\n networkInterfaces: [{\n subnetwork: subnetwork.name,\n networkIp: \"10.0.0.2\",\n accessConfigs: [{\n networkTier: \"PREMIUM\",\n }],\n }],\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"tf-test-hub_80332\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"tf-test-name_13293\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked routher appliance instance\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedRouterApplianceInstances: {\n instances: [{\n virtualMachine: instance.selfLink,\n ipAddress: \"10.0.0.2\",\n }],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"tf-test-network_37559\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"tf-test-subnet_91980\",\n ip_cidr_range=\"10.0.0.0/28\",\n region=\"us-central1\",\n network=network.self_link)\ninstance = gcp.compute.Instance(\"instance\",\n name=\"tf-test-instance_37118\",\n machine_type=\"e2-medium\",\n can_ip_forward=True,\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"projects/debian-cloud/global/images/debian-10-buster-v20210817\",\n },\n },\n network_interfaces=[{\n \"subnetwork\": subnetwork.name,\n \"network_ip\": \"10.0.0.2\",\n \"access_configs\": [{\n \"network_tier\": \"PREMIUM\",\n }],\n }])\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"tf-test-hub_80332\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"tf-test-name_13293\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked routher appliance instance\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_router_appliance_instances={\n \"instances\": [{\n \"virtual_machine\": instance.self_link,\n \"ip_address\": \"10.0.0.2\",\n }],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_RANGES\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"tf-test-network_37559\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"tf-test-subnet_91980\",\n IpCidrRange = \"10.0.0.0/28\",\n Region = \"us-central1\",\n Network = network.SelfLink,\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n Name = \"tf-test-instance_37118\",\n MachineType = \"e2-medium\",\n CanIpForward = true,\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"projects/debian-cloud/global/images/debian-10-buster-v20210817\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Subnetwork = subnetwork.Name,\n NetworkIp = \"10.0.0.2\",\n AccessConfigs = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceAccessConfigArgs\n {\n NetworkTier = \"PREMIUM\",\n },\n },\n },\n },\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"tf-test-hub_80332\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"tf-test-name_13293\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked routher appliance instance\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedRouterApplianceInstances = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesArgs\n {\n Instances = new[]\n {\n new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesInstanceArgs\n {\n VirtualMachine = instance.SelfLink,\n IpAddress = \"10.0.0.2\",\n },\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-network_37559\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnetwork, err := compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-subnet_91980\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-test-instance_37118\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(true),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"projects/debian-cloud/global/images/debian-10-buster-v20210817\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tSubnetwork: subnetwork.Name,\n\t\t\t\t\tNetworkIp: pulumi.String(\"10.0.0.2\"),\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{\n\t\t\t\t\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"tf-test-hub_80332\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"tf-test-name_13293\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked routher appliance instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedRouterApplianceInstances: \u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesArgs{\n\t\t\t\tInstances: networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArray{\n\t\t\t\t\t\u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArgs{\n\t\t\t\t\t\tVirtualMachine: instance.SelfLink,\n\t\t\t\t\t\tIpAddress: pulumi.String(\"10.0.0.2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedRouterApplianceInstancesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"tf-test-network_37559\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"tf-test-subnet_91980\")\n .ipCidrRange(\"10.0.0.0/28\")\n .region(\"us-central1\")\n .network(network.selfLink())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"tf-test-instance_37118\")\n .machineType(\"e2-medium\")\n .canIpForward(true)\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"projects/debian-cloud/global/images/debian-10-buster-v20210817\")\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .subnetwork(subnetwork.name())\n .networkIp(\"10.0.0.2\")\n .accessConfigs(InstanceNetworkInterfaceAccessConfigArgs.builder()\n .networkTier(\"PREMIUM\")\n .build())\n .build())\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"tf-test-hub_80332\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"tf-test-name_13293\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked routher appliance instance\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedRouterApplianceInstances(SpokeLinkedRouterApplianceInstancesArgs.builder()\n .instances(SpokeLinkedRouterApplianceInstancesInstanceArgs.builder()\n .virtualMachine(instance.selfLink())\n .ipAddress(\"10.0.0.2\")\n .build())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: tf-test-network_37559\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: tf-test-subnet_91980\n ipCidrRange: 10.0.0.0/28\n region: us-central1\n network: ${network.selfLink}\n instance:\n type: gcp:compute:Instance\n properties:\n name: tf-test-instance_37118\n machineType: e2-medium\n canIpForward: true\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: projects/debian-cloud/global/images/debian-10-buster-v20210817\n networkInterfaces:\n - subnetwork: ${subnetwork.name}\n networkIp: 10.0.0.2\n accessConfigs:\n - networkTier: PREMIUM\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: tf-test-hub_80332\n description: A sample hub\n labels:\n label-two: value-one\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: tf-test-name_13293\n location: us-central1\n description: A sample spoke with a linked routher appliance instance\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedRouterApplianceInstances:\n instances:\n - virtualMachine: ${instance.selfLink}\n ipAddress: 10.0.0.2\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Vpn Tunnel Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"basic-hub1\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"basic-subnetwork\",\n ipCidrRange: \"10.0.0.0/28\",\n region: \"us-central1\",\n network: network.selfLink,\n});\nconst gateway = new gcp.compute.HaVpnGateway(\"gateway\", {\n name: \"vpn-gateway\",\n network: network.id,\n});\nconst externalVpnGw = new gcp.compute.ExternalVpnGateway(\"external_vpn_gw\", {\n name: \"external-vpn-gateway\",\n redundancyType: \"SINGLE_IP_INTERNALLY_REDUNDANT\",\n description: \"An externally managed VPN gateway\",\n interfaces: [{\n id: 0,\n ipAddress: \"8.8.8.8\",\n }],\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"external-vpn-gateway\",\n region: \"us-central1\",\n network: network.name,\n bgp: {\n asn: 64514,\n },\n});\nconst tunnel1 = new gcp.compute.VPNTunnel(\"tunnel1\", {\n name: \"tunnel1\",\n region: \"us-central1\",\n vpnGateway: gateway.id,\n peerExternalGateway: externalVpnGw.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"a secret message\",\n router: router.id,\n vpnGatewayInterface: 0,\n});\nconst tunnel2 = new gcp.compute.VPNTunnel(\"tunnel2\", {\n name: \"tunnel2\",\n region: \"us-central1\",\n vpnGateway: gateway.id,\n peerExternalGateway: externalVpnGw.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"a secret message\",\n router: pulumi.interpolate` ${router.id}`,\n vpnGatewayInterface: 1,\n});\nconst routerInterface1 = new gcp.compute.RouterInterface(\"router_interface1\", {\n name: \"router-interface1\",\n router: router.name,\n region: \"us-central1\",\n ipRange: \"169.254.0.1/30\",\n vpnTunnel: tunnel1.name,\n});\nconst routerPeer1 = new gcp.compute.RouterPeer(\"router_peer1\", {\n name: \"router-peer1\",\n router: router.name,\n region: \"us-central1\",\n peerIpAddress: \"169.254.0.2\",\n peerAsn: 64515,\n advertisedRoutePriority: 100,\n \"interface\": routerInterface1.name,\n});\nconst routerInterface2 = new gcp.compute.RouterInterface(\"router_interface2\", {\n name: \"router-interface2\",\n router: router.name,\n region: \"us-central1\",\n ipRange: \"169.254.1.1/30\",\n vpnTunnel: tunnel2.name,\n});\nconst routerPeer2 = new gcp.compute.RouterPeer(\"router_peer2\", {\n name: \"router-peer2\",\n router: router.name,\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 64515,\n advertisedRoutePriority: 100,\n \"interface\": routerInterface2.name,\n});\nconst tunnel1Spoke = new gcp.networkconnectivity.Spoke(\"tunnel1\", {\n name: \"vpn-tunnel-1-spoke\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked VPN Tunnel\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpnTunnels: {\n uris: [tunnel1.selfLink],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\nconst tunnel2Spoke = new gcp.networkconnectivity.Spoke(\"tunnel2\", {\n name: \"vpn-tunnel-2-spoke\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked VPN Tunnel\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpnTunnels: {\n uris: [tunnel2.selfLink],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"basic-hub1\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nnetwork = gcp.compute.Network(\"network\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"basic-subnetwork\",\n ip_cidr_range=\"10.0.0.0/28\",\n region=\"us-central1\",\n network=network.self_link)\ngateway = gcp.compute.HaVpnGateway(\"gateway\",\n name=\"vpn-gateway\",\n network=network.id)\nexternal_vpn_gw = gcp.compute.ExternalVpnGateway(\"external_vpn_gw\",\n name=\"external-vpn-gateway\",\n redundancy_type=\"SINGLE_IP_INTERNALLY_REDUNDANT\",\n description=\"An externally managed VPN gateway\",\n interfaces=[{\n \"id\": 0,\n \"ip_address\": \"8.8.8.8\",\n }])\nrouter = gcp.compute.Router(\"router\",\n name=\"external-vpn-gateway\",\n region=\"us-central1\",\n network=network.name,\n bgp={\n \"asn\": 64514,\n })\ntunnel1 = gcp.compute.VPNTunnel(\"tunnel1\",\n name=\"tunnel1\",\n region=\"us-central1\",\n vpn_gateway=gateway.id,\n peer_external_gateway=external_vpn_gw.id,\n peer_external_gateway_interface=0,\n shared_secret=\"a secret message\",\n router=router.id,\n vpn_gateway_interface=0)\ntunnel2 = gcp.compute.VPNTunnel(\"tunnel2\",\n name=\"tunnel2\",\n region=\"us-central1\",\n vpn_gateway=gateway.id,\n peer_external_gateway=external_vpn_gw.id,\n peer_external_gateway_interface=0,\n shared_secret=\"a secret message\",\n router=router.id.apply(lambda id: f\" {id}\"),\n vpn_gateway_interface=1)\nrouter_interface1 = gcp.compute.RouterInterface(\"router_interface1\",\n name=\"router-interface1\",\n router=router.name,\n region=\"us-central1\",\n ip_range=\"169.254.0.1/30\",\n vpn_tunnel=tunnel1.name)\nrouter_peer1 = gcp.compute.RouterPeer(\"router_peer1\",\n name=\"router-peer1\",\n router=router.name,\n region=\"us-central1\",\n peer_ip_address=\"169.254.0.2\",\n peer_asn=64515,\n advertised_route_priority=100,\n interface=router_interface1.name)\nrouter_interface2 = gcp.compute.RouterInterface(\"router_interface2\",\n name=\"router-interface2\",\n router=router.name,\n region=\"us-central1\",\n ip_range=\"169.254.1.1/30\",\n vpn_tunnel=tunnel2.name)\nrouter_peer2 = gcp.compute.RouterPeer(\"router_peer2\",\n name=\"router-peer2\",\n router=router.name,\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=64515,\n advertised_route_priority=100,\n interface=router_interface2.name)\ntunnel1_spoke = gcp.networkconnectivity.Spoke(\"tunnel1\",\n name=\"vpn-tunnel-1-spoke\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked VPN Tunnel\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpn_tunnels={\n \"uris\": [tunnel1.self_link],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_RANGES\"],\n })\ntunnel2_spoke = gcp.networkconnectivity.Spoke(\"tunnel2\",\n name=\"vpn-tunnel-2-spoke\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked VPN Tunnel\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpn_tunnels={\n \"uris\": [tunnel2.self_link],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_RANGES\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"basic-hub1\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"basic-subnetwork\",\n IpCidrRange = \"10.0.0.0/28\",\n Region = \"us-central1\",\n Network = network.SelfLink,\n });\n\n var gateway = new Gcp.Compute.HaVpnGateway(\"gateway\", new()\n {\n Name = \"vpn-gateway\",\n Network = network.Id,\n });\n\n var externalVpnGw = new Gcp.Compute.ExternalVpnGateway(\"external_vpn_gw\", new()\n {\n Name = \"external-vpn-gateway\",\n RedundancyType = \"SINGLE_IP_INTERNALLY_REDUNDANT\",\n Description = \"An externally managed VPN gateway\",\n Interfaces = new[]\n {\n new Gcp.Compute.Inputs.ExternalVpnGatewayInterfaceArgs\n {\n Id = 0,\n IpAddress = \"8.8.8.8\",\n },\n },\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"external-vpn-gateway\",\n Region = \"us-central1\",\n Network = network.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n var tunnel1 = new Gcp.Compute.VPNTunnel(\"tunnel1\", new()\n {\n Name = \"tunnel1\",\n Region = \"us-central1\",\n VpnGateway = gateway.Id,\n PeerExternalGateway = externalVpnGw.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"a secret message\",\n Router = router.Id,\n VpnGatewayInterface = 0,\n });\n\n var tunnel2 = new Gcp.Compute.VPNTunnel(\"tunnel2\", new()\n {\n Name = \"tunnel2\",\n Region = \"us-central1\",\n VpnGateway = gateway.Id,\n PeerExternalGateway = externalVpnGw.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"a secret message\",\n Router = router.Id.Apply(id =\u003e $\" {id}\"),\n VpnGatewayInterface = 1,\n });\n\n var routerInterface1 = new Gcp.Compute.RouterInterface(\"router_interface1\", new()\n {\n Name = \"router-interface1\",\n Router = router.Name,\n Region = \"us-central1\",\n IpRange = \"169.254.0.1/30\",\n VpnTunnel = tunnel1.Name,\n });\n\n var routerPeer1 = new Gcp.Compute.RouterPeer(\"router_peer1\", new()\n {\n Name = \"router-peer1\",\n Router = router.Name,\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.0.2\",\n PeerAsn = 64515,\n AdvertisedRoutePriority = 100,\n Interface = routerInterface1.Name,\n });\n\n var routerInterface2 = new Gcp.Compute.RouterInterface(\"router_interface2\", new()\n {\n Name = \"router-interface2\",\n Router = router.Name,\n Region = \"us-central1\",\n IpRange = \"169.254.1.1/30\",\n VpnTunnel = tunnel2.Name,\n });\n\n var routerPeer2 = new Gcp.Compute.RouterPeer(\"router_peer2\", new()\n {\n Name = \"router-peer2\",\n Router = router.Name,\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 64515,\n AdvertisedRoutePriority = 100,\n Interface = routerInterface2.Name,\n });\n\n var tunnel1Spoke = new Gcp.NetworkConnectivity.Spoke(\"tunnel1\", new()\n {\n Name = \"vpn-tunnel-1-spoke\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked VPN Tunnel\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpnTunnels = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpnTunnelsArgs\n {\n Uris = new[]\n {\n tunnel1.SelfLink,\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n var tunnel2Spoke = new Gcp.NetworkConnectivity.Spoke(\"tunnel2\", new()\n {\n Name = \"vpn-tunnel-2-spoke\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked VPN Tunnel\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpnTunnels = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpnTunnelsArgs\n {\n Uris = new[]\n {\n tunnel2.SelfLink,\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"basic-hub1\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"basic-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"basic-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgateway, err := compute.NewHaVpnGateway(ctx, \"gateway\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"vpn-gateway\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternalVpnGw, err := compute.NewExternalVpnGateway(ctx, \"external_vpn_gw\", \u0026compute.ExternalVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"external-vpn-gateway\"),\n\t\t\tRedundancyType: pulumi.String(\"SINGLE_IP_INTERNALLY_REDUNDANT\"),\n\t\t\tDescription: pulumi.String(\"An externally managed VPN gateway\"),\n\t\t\tInterfaces: compute.ExternalVpnGatewayInterfaceArray{\n\t\t\t\t\u0026compute.ExternalVpnGatewayInterfaceArgs{\n\t\t\t\t\tId: pulumi.Int(0),\n\t\t\t\t\tIpAddress: pulumi.String(\"8.8.8.8\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"external-vpn-gateway\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.Name,\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(64514),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttunnel1, err := compute.NewVPNTunnel(ctx, \"tunnel1\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"tunnel1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVpnGateway: gateway.ID(),\n\t\t\tPeerExternalGateway: externalVpnGw.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tRouter: router.ID(),\n\t\t\tVpnGatewayInterface: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttunnel2, err := compute.NewVPNTunnel(ctx, \"tunnel2\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"tunnel2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVpnGateway: gateway.ID(),\n\t\t\tPeerExternalGateway: externalVpnGw.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tRouter: router.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\" %v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tVpnGatewayInterface: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouterInterface1, err := compute.NewRouterInterface(ctx, \"router_interface1\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"router-interface1\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpRange: pulumi.String(\"169.254.0.1/30\"),\n\t\t\tVpnTunnel: tunnel1.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterPeer(ctx, \"router_peer1\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"router-peer1\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.0.2\"),\n\t\t\tPeerAsn: pulumi.Int(64515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: routerInterface1.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouterInterface2, err := compute.NewRouterInterface(ctx, \"router_interface2\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"router-interface2\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpRange: pulumi.String(\"169.254.1.1/30\"),\n\t\t\tVpnTunnel: tunnel2.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterPeer(ctx, \"router_peer2\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"router-peer2\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.1.2\"),\n\t\t\tPeerAsn: pulumi.Int(64515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: routerInterface2.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"tunnel1\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpn-tunnel-1-spoke\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked VPN Tunnel\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpnTunnels: \u0026networkconnectivity.SpokeLinkedVpnTunnelsArgs{\n\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\ttunnel1.SelfLink,\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"tunnel2\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpn-tunnel-2-spoke\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked VPN Tunnel\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpnTunnels: \u0026networkconnectivity.SpokeLinkedVpnTunnelsArgs{\n\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\ttunnel2.SelfLink,\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.HaVpnGateway;\nimport com.pulumi.gcp.compute.HaVpnGatewayArgs;\nimport com.pulumi.gcp.compute.ExternalVpnGateway;\nimport com.pulumi.gcp.compute.ExternalVpnGatewayArgs;\nimport com.pulumi.gcp.compute.inputs.ExternalVpnGatewayInterfaceArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.VPNTunnel;\nimport com.pulumi.gcp.compute.VPNTunnelArgs;\nimport com.pulumi.gcp.compute.RouterInterface;\nimport com.pulumi.gcp.compute.RouterInterfaceArgs;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpnTunnelsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"basic-hub1\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"basic-subnetwork\")\n .ipCidrRange(\"10.0.0.0/28\")\n .region(\"us-central1\")\n .network(network.selfLink())\n .build());\n\n var gateway = new HaVpnGateway(\"gateway\", HaVpnGatewayArgs.builder()\n .name(\"vpn-gateway\")\n .network(network.id())\n .build());\n\n var externalVpnGw = new ExternalVpnGateway(\"externalVpnGw\", ExternalVpnGatewayArgs.builder()\n .name(\"external-vpn-gateway\")\n .redundancyType(\"SINGLE_IP_INTERNALLY_REDUNDANT\")\n .description(\"An externally managed VPN gateway\")\n .interfaces(ExternalVpnGatewayInterfaceArgs.builder()\n .id(0)\n .ipAddress(\"8.8.8.8\")\n .build())\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"external-vpn-gateway\")\n .region(\"us-central1\")\n .network(network.name())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n var tunnel1 = new VPNTunnel(\"tunnel1\", VPNTunnelArgs.builder()\n .name(\"tunnel1\")\n .region(\"us-central1\")\n .vpnGateway(gateway.id())\n .peerExternalGateway(externalVpnGw.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"a secret message\")\n .router(router.id())\n .vpnGatewayInterface(0)\n .build());\n\n var tunnel2 = new VPNTunnel(\"tunnel2\", VPNTunnelArgs.builder()\n .name(\"tunnel2\")\n .region(\"us-central1\")\n .vpnGateway(gateway.id())\n .peerExternalGateway(externalVpnGw.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"a secret message\")\n .router(router.id().applyValue(id -\u003e String.format(\" %s\", id)))\n .vpnGatewayInterface(1)\n .build());\n\n var routerInterface1 = new RouterInterface(\"routerInterface1\", RouterInterfaceArgs.builder()\n .name(\"router-interface1\")\n .router(router.name())\n .region(\"us-central1\")\n .ipRange(\"169.254.0.1/30\")\n .vpnTunnel(tunnel1.name())\n .build());\n\n var routerPeer1 = new RouterPeer(\"routerPeer1\", RouterPeerArgs.builder()\n .name(\"router-peer1\")\n .router(router.name())\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.0.2\")\n .peerAsn(64515)\n .advertisedRoutePriority(100)\n .interface_(routerInterface1.name())\n .build());\n\n var routerInterface2 = new RouterInterface(\"routerInterface2\", RouterInterfaceArgs.builder()\n .name(\"router-interface2\")\n .router(router.name())\n .region(\"us-central1\")\n .ipRange(\"169.254.1.1/30\")\n .vpnTunnel(tunnel2.name())\n .build());\n\n var routerPeer2 = new RouterPeer(\"routerPeer2\", RouterPeerArgs.builder()\n .name(\"router-peer2\")\n .router(router.name())\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(64515)\n .advertisedRoutePriority(100)\n .interface_(routerInterface2.name())\n .build());\n\n var tunnel1Spoke = new Spoke(\"tunnel1Spoke\", SpokeArgs.builder()\n .name(\"vpn-tunnel-1-spoke\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked VPN Tunnel\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpnTunnels(SpokeLinkedVpnTunnelsArgs.builder()\n .uris(tunnel1.selfLink())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n var tunnel2Spoke = new Spoke(\"tunnel2Spoke\", SpokeArgs.builder()\n .name(\"vpn-tunnel-2-spoke\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked VPN Tunnel\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpnTunnels(SpokeLinkedVpnTunnelsArgs.builder()\n .uris(tunnel2.selfLink())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: basic-hub1\n description: A sample hub\n labels:\n label-two: value-one\n network:\n type: gcp:compute:Network\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: basic-subnetwork\n ipCidrRange: 10.0.0.0/28\n region: us-central1\n network: ${network.selfLink}\n gateway:\n type: gcp:compute:HaVpnGateway\n properties:\n name: vpn-gateway\n network: ${network.id}\n externalVpnGw:\n type: gcp:compute:ExternalVpnGateway\n name: external_vpn_gw\n properties:\n name: external-vpn-gateway\n redundancyType: SINGLE_IP_INTERNALLY_REDUNDANT\n description: An externally managed VPN gateway\n interfaces:\n - id: 0\n ipAddress: 8.8.8.8\n router:\n type: gcp:compute:Router\n properties:\n name: external-vpn-gateway\n region: us-central1\n network: ${network.name}\n bgp:\n asn: 64514\n tunnel1:\n type: gcp:compute:VPNTunnel\n properties:\n name: tunnel1\n region: us-central1\n vpnGateway: ${gateway.id}\n peerExternalGateway: ${externalVpnGw.id}\n peerExternalGatewayInterface: 0\n sharedSecret: a secret message\n router: ${router.id}\n vpnGatewayInterface: 0\n tunnel2:\n type: gcp:compute:VPNTunnel\n properties:\n name: tunnel2\n region: us-central1\n vpnGateway: ${gateway.id}\n peerExternalGateway: ${externalVpnGw.id}\n peerExternalGatewayInterface: 0\n sharedSecret: a secret message\n router: ' ${router.id}'\n vpnGatewayInterface: 1\n routerInterface1:\n type: gcp:compute:RouterInterface\n name: router_interface1\n properties:\n name: router-interface1\n router: ${router.name}\n region: us-central1\n ipRange: 169.254.0.1/30\n vpnTunnel: ${tunnel1.name}\n routerPeer1:\n type: gcp:compute:RouterPeer\n name: router_peer1\n properties:\n name: router-peer1\n router: ${router.name}\n region: us-central1\n peerIpAddress: 169.254.0.2\n peerAsn: 64515\n advertisedRoutePriority: 100\n interface: ${routerInterface1.name}\n routerInterface2:\n type: gcp:compute:RouterInterface\n name: router_interface2\n properties:\n name: router-interface2\n router: ${router.name}\n region: us-central1\n ipRange: 169.254.1.1/30\n vpnTunnel: ${tunnel2.name}\n routerPeer2:\n type: gcp:compute:RouterPeer\n name: router_peer2\n properties:\n name: router-peer2\n router: ${router.name}\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 64515\n advertisedRoutePriority: 100\n interface: ${routerInterface2.name}\n tunnel1Spoke:\n type: gcp:networkconnectivity:Spoke\n name: tunnel1\n properties:\n name: vpn-tunnel-1-spoke\n location: us-central1\n description: A sample spoke with a linked VPN Tunnel\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpnTunnels:\n uris:\n - ${tunnel1.selfLink}\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n tunnel2Spoke:\n type: gcp:networkconnectivity:Spoke\n name: tunnel2\n properties:\n name: vpn-tunnel-2-spoke\n location: us-central1\n description: A sample spoke with a linked VPN Tunnel\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpnTunnels:\n uris:\n - ${tunnel2.selfLink}\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Interconnect Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"basic-hub1\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"external-vpn-gateway\",\n region: \"us-central1\",\n network: network.name,\n bgp: {\n asn: 16550,\n },\n});\nconst interconnect_attachment = new gcp.compute.InterconnectAttachment(\"interconnect-attachment\", {\n name: \"partner-interconnect1\",\n edgeAvailabilityDomain: \"AVAILABILITY_DOMAIN_1\",\n type: \"PARTNER\",\n router: router.id,\n mtu: \"1500\",\n region: \"us-central1\",\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"interconnect-attachment-spoke\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked Interconnect Attachment\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedInterconnectAttachments: {\n uris: [interconnect_attachment.selfLink],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"basic-hub1\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nnetwork = gcp.compute.Network(\"network\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\nrouter = gcp.compute.Router(\"router\",\n name=\"external-vpn-gateway\",\n region=\"us-central1\",\n network=network.name,\n bgp={\n \"asn\": 16550,\n })\ninterconnect_attachment = gcp.compute.InterconnectAttachment(\"interconnect-attachment\",\n name=\"partner-interconnect1\",\n edge_availability_domain=\"AVAILABILITY_DOMAIN_1\",\n type=\"PARTNER\",\n router=router.id,\n mtu=\"1500\",\n region=\"us-central1\")\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"interconnect-attachment-spoke\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked Interconnect Attachment\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_interconnect_attachments={\n \"uris\": [interconnect_attachment.self_link],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_RANGES\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"basic-hub1\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"external-vpn-gateway\",\n Region = \"us-central1\",\n Network = network.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 16550,\n },\n });\n\n var interconnect_attachment = new Gcp.Compute.InterconnectAttachment(\"interconnect-attachment\", new()\n {\n Name = \"partner-interconnect1\",\n EdgeAvailabilityDomain = \"AVAILABILITY_DOMAIN_1\",\n Type = \"PARTNER\",\n Router = router.Id,\n Mtu = \"1500\",\n Region = \"us-central1\",\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"interconnect-attachment-spoke\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked Interconnect Attachment\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedInterconnectAttachments = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedInterconnectAttachmentsArgs\n {\n Uris = new[]\n {\n interconnect_attachment.SelfLink,\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"basic-hub1\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"basic-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"external-vpn-gateway\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.Name,\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(16550),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInterconnectAttachment(ctx, \"interconnect-attachment\", \u0026compute.InterconnectAttachmentArgs{\n\t\t\tName: pulumi.String(\"partner-interconnect1\"),\n\t\t\tEdgeAvailabilityDomain: pulumi.String(\"AVAILABILITY_DOMAIN_1\"),\n\t\t\tType: pulumi.String(\"PARTNER\"),\n\t\t\tRouter: router.ID(),\n\t\t\tMtu: pulumi.String(\"1500\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"interconnect-attachment-spoke\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked Interconnect Attachment\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedInterconnectAttachments: \u0026networkconnectivity.SpokeLinkedInterconnectAttachmentsArgs{\n\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\tinterconnect_attachment.SelfLink,\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.InterconnectAttachment;\nimport com.pulumi.gcp.compute.InterconnectAttachmentArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedInterconnectAttachmentsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"basic-hub1\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"external-vpn-gateway\")\n .region(\"us-central1\")\n .network(network.name())\n .bgp(RouterBgpArgs.builder()\n .asn(16550)\n .build())\n .build());\n\n var interconnect_attachment = new InterconnectAttachment(\"interconnect-attachment\", InterconnectAttachmentArgs.builder()\n .name(\"partner-interconnect1\")\n .edgeAvailabilityDomain(\"AVAILABILITY_DOMAIN_1\")\n .type(\"PARTNER\")\n .router(router.id())\n .mtu(1500)\n .region(\"us-central1\")\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"interconnect-attachment-spoke\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked Interconnect Attachment\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedInterconnectAttachments(SpokeLinkedInterconnectAttachmentsArgs.builder()\n .uris(interconnect_attachment.selfLink())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: basic-hub1\n description: A sample hub\n labels:\n label-two: value-one\n network:\n type: gcp:compute:Network\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n router:\n type: gcp:compute:Router\n properties:\n name: external-vpn-gateway\n region: us-central1\n network: ${network.name}\n bgp:\n asn: 16550\n interconnect-attachment:\n type: gcp:compute:InterconnectAttachment\n properties:\n name: partner-interconnect1\n edgeAvailabilityDomain: AVAILABILITY_DOMAIN_1\n type: PARTNER\n router: ${router.id}\n mtu: 1500\n region: us-central1\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: interconnect-attachment-spoke\n location: us-central1\n description: A sample spoke with a linked Interconnect Attachment\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedInterconnectAttachments:\n uris:\n - ${[\"interconnect-attachment\"].selfLink}\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Linked Producer Vpc Network Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"net-spoke\",\n autoCreateSubnetworks: false,\n});\nconst address = new gcp.compute.GlobalAddress(\"address\", {\n name: \"test-address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: network.id,\n});\nconst peering = new gcp.servicenetworking.Connection(\"peering\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [address.name],\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {name: \"hub-basic\"});\nconst linkedVpcSpoke = new gcp.networkconnectivity.Spoke(\"linked_vpc_spoke\", {\n name: \"vpc-spoke\",\n location: \"global\",\n hub: basicHub.id,\n linkedVpcNetwork: {\n uri: network.selfLink,\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"producer-spoke\",\n location: \"global\",\n description: \"A sample spoke with a linked router appliance instance\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedProducerVpcNetwork: {\n network: network.name,\n peering: peering.peering,\n excludeExportRanges: [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n },\n}, {\n dependsOn: [linkedVpcSpoke],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"net-spoke\",\n auto_create_subnetworks=False)\naddress = gcp.compute.GlobalAddress(\"address\",\n name=\"test-address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=network.id)\npeering = gcp.servicenetworking.Connection(\"peering\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[address.name])\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\", name=\"hub-basic\")\nlinked_vpc_spoke = gcp.networkconnectivity.Spoke(\"linked_vpc_spoke\",\n name=\"vpc-spoke\",\n location=\"global\",\n hub=basic_hub.id,\n linked_vpc_network={\n \"uri\": network.self_link,\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"producer-spoke\",\n location=\"global\",\n description=\"A sample spoke with a linked router appliance instance\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_producer_vpc_network={\n \"network\": network.name,\n \"peering\": peering.peering,\n \"exclude_export_ranges\": [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n },\n opts = pulumi.ResourceOptions(depends_on=[linked_vpc_spoke]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"net-spoke\",\n AutoCreateSubnetworks = false,\n });\n\n var address = new Gcp.Compute.GlobalAddress(\"address\", new()\n {\n Name = \"test-address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = network.Id,\n });\n\n var peering = new Gcp.ServiceNetworking.Connection(\"peering\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n address.Name,\n },\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub-basic\",\n });\n\n var linkedVpcSpoke = new Gcp.NetworkConnectivity.Spoke(\"linked_vpc_spoke\", new()\n {\n Name = \"vpc-spoke\",\n Location = \"global\",\n Hub = basicHub.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n Uri = network.SelfLink,\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"producer-spoke\",\n Location = \"global\",\n Description = \"A sample spoke with a linked router appliance instance\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedProducerVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedProducerVpcNetworkArgs\n {\n Network = network.Name,\n Peering = peering.Peering,\n ExcludeExportRanges = new[]\n {\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n linkedVpcSpoke,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net-spoke\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddress, err := compute.NewGlobalAddress(ctx, \"address\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"test-address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpeering, err := servicenetworking.NewConnection(ctx, \"peering\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\taddress.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub-basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlinkedVpcSpoke, err := networkconnectivity.NewSpoke(ctx, \"linked_vpc_spoke\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpc-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\n\t\t\t\tUri: network.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"producer-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked router appliance instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedProducerVpcNetwork: \u0026networkconnectivity.SpokeLinkedProducerVpcNetworkArgs{\n\t\t\t\tNetwork: network.Name,\n\t\t\t\tPeering: peering.Peering,\n\t\t\t\tExcludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/24\"),\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlinkedVpcSpoke,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedProducerVpcNetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"net-spoke\")\n .autoCreateSubnetworks(false)\n .build());\n\n var address = new GlobalAddress(\"address\", GlobalAddressArgs.builder()\n .name(\"test-address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(network.id())\n .build());\n\n var peering = new Connection(\"peering\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(address.name())\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub-basic\")\n .build());\n\n var linkedVpcSpoke = new Spoke(\"linkedVpcSpoke\", SpokeArgs.builder()\n .name(\"vpc-spoke\")\n .location(\"global\")\n .hub(basicHub.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .uri(network.selfLink())\n .build())\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"producer-spoke\")\n .location(\"global\")\n .description(\"A sample spoke with a linked router appliance instance\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedProducerVpcNetwork(SpokeLinkedProducerVpcNetworkArgs.builder()\n .network(network.name())\n .peering(peering.peering())\n .excludeExportRanges( \n \"198.51.100.0/24\",\n \"10.10.0.0/16\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(linkedVpcSpoke)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: net-spoke\n autoCreateSubnetworks: false\n address:\n type: gcp:compute:GlobalAddress\n properties:\n name: test-address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${network.id}\n peering:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${address.name}\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub-basic\n linkedVpcSpoke:\n type: gcp:networkconnectivity:Spoke\n name: linked_vpc_spoke\n properties:\n name: vpc-spoke\n location: global\n hub: ${basicHub.id}\n linkedVpcNetwork:\n uri: ${network.selfLink}\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: producer-spoke\n location: global\n description: A sample spoke with a linked router appliance instance\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedProducerVpcNetwork:\n network: ${network.name}\n peering: ${peering.peering}\n excludeExportRanges:\n - 198.51.100.0/24\n - 10.10.0.0/16\n options:\n dependsOn:\n - ${linkedVpcSpoke}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Center Group\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"tf-net\",\n autoCreateSubnetworks: false,\n});\nconst starHub = new gcp.networkconnectivity.Hub(\"star_hub\", {\n name: \"hub-basic\",\n presetTopology: \"STAR\",\n});\nconst centerGroup = new gcp.networkconnectivity.Group(\"center_group\", {\n name: \"center\",\n hub: starHub.id,\n autoAccept: {\n autoAcceptProjects: [\n \"foo_40289\",\n \"bar_33395\",\n ],\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"vpc-spoke\",\n location: \"global\",\n description: \"A sample spoke\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: starHub.id,\n group: centerGroup.id,\n linkedVpcNetwork: {\n uri: network.selfLink,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"tf-net\",\n auto_create_subnetworks=False)\nstar_hub = gcp.networkconnectivity.Hub(\"star_hub\",\n name=\"hub-basic\",\n preset_topology=\"STAR\")\ncenter_group = gcp.networkconnectivity.Group(\"center_group\",\n name=\"center\",\n hub=star_hub.id,\n auto_accept={\n \"auto_accept_projects\": [\n \"foo_40289\",\n \"bar_33395\",\n ],\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"vpc-spoke\",\n location=\"global\",\n description=\"A sample spoke\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=star_hub.id,\n group=center_group.id,\n linked_vpc_network={\n \"uri\": network.self_link,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"tf-net\",\n AutoCreateSubnetworks = false,\n });\n\n var starHub = new Gcp.NetworkConnectivity.Hub(\"star_hub\", new()\n {\n Name = \"hub-basic\",\n PresetTopology = \"STAR\",\n });\n\n var centerGroup = new Gcp.NetworkConnectivity.Group(\"center_group\", new()\n {\n Name = \"center\",\n Hub = starHub.Id,\n AutoAccept = new Gcp.NetworkConnectivity.Inputs.GroupAutoAcceptArgs\n {\n AutoAcceptProjects = new[]\n {\n \"foo_40289\",\n \"bar_33395\",\n },\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"vpc-spoke\",\n Location = \"global\",\n Description = \"A sample spoke\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = starHub.Id,\n Group = centerGroup.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n Uri = network.SelfLink,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-net\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstarHub, err := networkconnectivity.NewHub(ctx, \"star_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub-basic\"),\n\t\t\tPresetTopology: pulumi.String(\"STAR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcenterGroup, err := networkconnectivity.NewGroup(ctx, \"center_group\", \u0026networkconnectivity.GroupArgs{\n\t\t\tName: pulumi.String(\"center\"),\n\t\t\tHub: starHub.ID(),\n\t\t\tAutoAccept: \u0026networkconnectivity.GroupAutoAcceptArgs{\n\t\t\t\tAutoAcceptProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"foo_40289\"),\n\t\t\t\t\tpulumi.String(\"bar_33395\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpc-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: starHub.ID(),\n\t\t\tGroup: centerGroup.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\n\t\t\t\tUri: network.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Group;\nimport com.pulumi.gcp.networkconnectivity.GroupArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.GroupAutoAcceptArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"tf-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var starHub = new Hub(\"starHub\", HubArgs.builder()\n .name(\"hub-basic\")\n .presetTopology(\"STAR\")\n .build());\n\n var centerGroup = new Group(\"centerGroup\", GroupArgs.builder()\n .name(\"center\")\n .hub(starHub.id())\n .autoAccept(GroupAutoAcceptArgs.builder()\n .autoAcceptProjects( \n \"foo_40289\",\n \"bar_33395\")\n .build())\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"vpc-spoke\")\n .location(\"global\")\n .description(\"A sample spoke\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(starHub.id())\n .group(centerGroup.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .uri(network.selfLink())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: tf-net\n autoCreateSubnetworks: false\n starHub:\n type: gcp:networkconnectivity:Hub\n name: star_hub\n properties:\n name: hub-basic\n presetTopology: STAR\n centerGroup:\n type: gcp:networkconnectivity:Group\n name: center_group\n properties:\n name: center\n hub: ${starHub.id}\n autoAccept:\n autoAcceptProjects:\n - foo_40289\n - bar_33395\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: vpc-spoke\n location: global\n description: A sample spoke\n labels:\n label-one: value-one\n hub: ${starHub.id}\n group: ${centerGroup.id}\n linkedVpcNetwork:\n uri: ${network.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSpoke can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/spokes/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Spoke can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkconnectivity/spoke:Spoke default projects/{{project}}/locations/{{location}}/spokes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/spoke:Spoke default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/spoke:Spoke default {{location}}/{{name}}\n```\n\n", + "description": "The NetworkConnectivity Spoke resource\n\n\nTo get more information about Spoke, see:\n\n* [API documentation](https://cloud.google.com/network-connectivity/docs/reference/networkconnectivity/rest/v1beta/projects.locations.spokes)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/network-connectivity/docs/network-connectivity-center/concepts/overview)\n\n## Example Usage\n\n### Network Connectivity Spoke Linked Vpc Network Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"net\",\n autoCreateSubnetworks: false,\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"hub1\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"spoke1\",\n location: \"global\",\n description: \"A sample spoke with a linked router appliance instance\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpcNetwork: {\n excludeExportRanges: [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n includeExportRanges: [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n ],\n uri: network.selfLink,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"net\",\n auto_create_subnetworks=False)\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"hub1\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"spoke1\",\n location=\"global\",\n description=\"A sample spoke with a linked router appliance instance\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpc_network={\n \"exclude_export_ranges\": [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n \"include_export_ranges\": [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n ],\n \"uri\": network.self_link,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"net\",\n AutoCreateSubnetworks = false,\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub1\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"spoke1\",\n Location = \"global\",\n Description = \"A sample spoke with a linked router appliance instance\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n ExcludeExportRanges = new[]\n {\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n },\n IncludeExportRanges = new[]\n {\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n },\n Uri = network.SelfLink,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub1\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"spoke1\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked router appliance instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\n\t\t\t\tExcludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/24\"),\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tIncludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/23\"),\n\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t},\n\t\t\t\tUri: network.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub1\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"spoke1\")\n .location(\"global\")\n .description(\"A sample spoke with a linked router appliance instance\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .excludeExportRanges( \n \"198.51.100.0/24\",\n \"10.10.0.0/16\")\n .includeExportRanges( \n \"198.51.100.0/23\",\n \"10.0.0.0/8\")\n .uri(network.selfLink())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: net\n autoCreateSubnetworks: false\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub1\n description: A sample hub\n labels:\n label-two: value-one\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: spoke1\n location: global\n description: A sample spoke with a linked router appliance instance\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpcNetwork:\n excludeExportRanges:\n - 198.51.100.0/24\n - 10.10.0.0/16\n includeExportRanges:\n - 198.51.100.0/23\n - 10.0.0.0/8\n uri: ${network.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Linked Vpc Network Group\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"net-spoke\",\n autoCreateSubnetworks: false,\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"hub1-spoke\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst defaultGroup = new gcp.networkconnectivity.Group(\"default_group\", {\n hub: basicHub.id,\n name: \"default\",\n description: \"A sample hub group\",\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"group-spoke1\",\n location: \"global\",\n description: \"A sample spoke with a linked VPC\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpcNetwork: {\n excludeExportRanges: [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n includeExportRanges: [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n ],\n uri: network.selfLink,\n },\n group: defaultGroup.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"net-spoke\",\n auto_create_subnetworks=False)\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"hub1-spoke\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\ndefault_group = gcp.networkconnectivity.Group(\"default_group\",\n hub=basic_hub.id,\n name=\"default\",\n description=\"A sample hub group\")\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"group-spoke1\",\n location=\"global\",\n description=\"A sample spoke with a linked VPC\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpc_network={\n \"exclude_export_ranges\": [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n \"include_export_ranges\": [\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n ],\n \"uri\": network.self_link,\n },\n group=default_group.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"net-spoke\",\n AutoCreateSubnetworks = false,\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub1-spoke\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var defaultGroup = new Gcp.NetworkConnectivity.Group(\"default_group\", new()\n {\n Hub = basicHub.Id,\n Name = \"default\",\n Description = \"A sample hub group\",\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"group-spoke1\",\n Location = \"global\",\n Description = \"A sample spoke with a linked VPC\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n ExcludeExportRanges = new[]\n {\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n },\n IncludeExportRanges = new[]\n {\n \"198.51.100.0/23\",\n \"10.0.0.0/8\",\n },\n Uri = network.SelfLink,\n },\n Group = defaultGroup.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net-spoke\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub1-spoke\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGroup, err := networkconnectivity.NewGroup(ctx, \"default_group\", \u0026networkconnectivity.GroupArgs{\n\t\t\tHub: basicHub.ID(),\n\t\t\tName: pulumi.String(\"default\"),\n\t\t\tDescription: pulumi.String(\"A sample hub group\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"group-spoke1\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked VPC\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\n\t\t\t\tExcludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/24\"),\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t\tIncludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/23\"),\n\t\t\t\t\tpulumi.String(\"10.0.0.0/8\"),\n\t\t\t\t},\n\t\t\t\tUri: network.SelfLink,\n\t\t\t},\n\t\t\tGroup: defaultGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Group;\nimport com.pulumi.gcp.networkconnectivity.GroupArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"net-spoke\")\n .autoCreateSubnetworks(false)\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub1-spoke\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var defaultGroup = new Group(\"defaultGroup\", GroupArgs.builder()\n .hub(basicHub.id())\n .name(\"default\")\n .description(\"A sample hub group\")\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"group-spoke1\")\n .location(\"global\")\n .description(\"A sample spoke with a linked VPC\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .excludeExportRanges( \n \"198.51.100.0/24\",\n \"10.10.0.0/16\")\n .includeExportRanges( \n \"198.51.100.0/23\",\n \"10.0.0.0/8\")\n .uri(network.selfLink())\n .build())\n .group(defaultGroup.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: net-spoke\n autoCreateSubnetworks: false\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub1-spoke\n description: A sample hub\n labels:\n label-two: value-one\n defaultGroup:\n type: gcp:networkconnectivity:Group\n name: default_group\n properties:\n hub: ${basicHub.id}\n name: default\n description: A sample hub group\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: group-spoke1\n location: global\n description: A sample spoke with a linked VPC\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpcNetwork:\n excludeExportRanges:\n - 198.51.100.0/24\n - 10.10.0.0/16\n includeExportRanges:\n - 198.51.100.0/23\n - 10.0.0.0/8\n uri: ${network.selfLink}\n group: ${defaultGroup.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Router Appliance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"tf-test-network_37559\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"tf-test-subnet_91980\",\n ipCidrRange: \"10.0.0.0/28\",\n region: \"us-central1\",\n network: network.selfLink,\n});\nconst instance = new gcp.compute.Instance(\"instance\", {\n name: \"tf-test-instance_37118\",\n machineType: \"e2-medium\",\n canIpForward: true,\n zone: \"us-central1-a\",\n bootDisk: {\n initializeParams: {\n image: \"projects/debian-cloud/global/images/debian-10-buster-v20210817\",\n },\n },\n networkInterfaces: [{\n subnetwork: subnetwork.name,\n networkIp: \"10.0.0.2\",\n accessConfigs: [{\n networkTier: \"PREMIUM\",\n }],\n }],\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"tf-test-hub_80332\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"tf-test-name_13293\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked routher appliance instance\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedRouterApplianceInstances: {\n instances: [{\n virtualMachine: instance.selfLink,\n ipAddress: \"10.0.0.2\",\n }],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"tf-test-network_37559\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"tf-test-subnet_91980\",\n ip_cidr_range=\"10.0.0.0/28\",\n region=\"us-central1\",\n network=network.self_link)\ninstance = gcp.compute.Instance(\"instance\",\n name=\"tf-test-instance_37118\",\n machine_type=\"e2-medium\",\n can_ip_forward=True,\n zone=\"us-central1-a\",\n boot_disk={\n \"initialize_params\": {\n \"image\": \"projects/debian-cloud/global/images/debian-10-buster-v20210817\",\n },\n },\n network_interfaces=[{\n \"subnetwork\": subnetwork.name,\n \"network_ip\": \"10.0.0.2\",\n \"access_configs\": [{\n \"network_tier\": \"PREMIUM\",\n }],\n }])\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"tf-test-hub_80332\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"tf-test-name_13293\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked routher appliance instance\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_router_appliance_instances={\n \"instances\": [{\n \"virtual_machine\": instance.self_link,\n \"ip_address\": \"10.0.0.2\",\n }],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_RANGES\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"tf-test-network_37559\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"tf-test-subnet_91980\",\n IpCidrRange = \"10.0.0.0/28\",\n Region = \"us-central1\",\n Network = network.SelfLink,\n });\n\n var instance = new Gcp.Compute.Instance(\"instance\", new()\n {\n Name = \"tf-test-instance_37118\",\n MachineType = \"e2-medium\",\n CanIpForward = true,\n Zone = \"us-central1-a\",\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n InitializeParams = new Gcp.Compute.Inputs.InstanceBootDiskInitializeParamsArgs\n {\n Image = \"projects/debian-cloud/global/images/debian-10-buster-v20210817\",\n },\n },\n NetworkInterfaces = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceArgs\n {\n Subnetwork = subnetwork.Name,\n NetworkIp = \"10.0.0.2\",\n AccessConfigs = new[]\n {\n new Gcp.Compute.Inputs.InstanceNetworkInterfaceAccessConfigArgs\n {\n NetworkTier = \"PREMIUM\",\n },\n },\n },\n },\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"tf-test-hub_80332\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"tf-test-name_13293\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked routher appliance instance\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedRouterApplianceInstances = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesArgs\n {\n Instances = new[]\n {\n new Gcp.NetworkConnectivity.Inputs.SpokeLinkedRouterApplianceInstancesInstanceArgs\n {\n VirtualMachine = instance.SelfLink,\n IpAddress = \"10.0.0.2\",\n },\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-network_37559\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnetwork, err := compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"tf-test-subnet_91980\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinstance, err := compute.NewInstance(ctx, \"instance\", \u0026compute.InstanceArgs{\n\t\t\tName: pulumi.String(\"tf-test-instance_37118\"),\n\t\t\tMachineType: pulumi.String(\"e2-medium\"),\n\t\t\tCanIpForward: pulumi.Bool(true),\n\t\t\tZone: pulumi.String(\"us-central1-a\"),\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tInitializeParams: \u0026compute.InstanceBootDiskInitializeParamsArgs{\n\t\t\t\t\tImage: pulumi.String(\"projects/debian-cloud/global/images/debian-10-buster-v20210817\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tNetworkInterfaces: compute.InstanceNetworkInterfaceArray{\n\t\t\t\t\u0026compute.InstanceNetworkInterfaceArgs{\n\t\t\t\t\tSubnetwork: subnetwork.Name,\n\t\t\t\t\tNetworkIp: pulumi.String(\"10.0.0.2\"),\n\t\t\t\t\tAccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{\n\t\t\t\t\t\t\u0026compute.InstanceNetworkInterfaceAccessConfigArgs{\n\t\t\t\t\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"tf-test-hub_80332\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"tf-test-name_13293\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked routher appliance instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedRouterApplianceInstances: \u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesArgs{\n\t\t\t\tInstances: networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArray{\n\t\t\t\t\t\u0026networkconnectivity.SpokeLinkedRouterApplianceInstancesInstanceArgs{\n\t\t\t\t\t\tVirtualMachine: instance.SelfLink,\n\t\t\t\t\t\tIpAddress: pulumi.String(\"10.0.0.2\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskInitializeParamsArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceNetworkInterfaceArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedRouterApplianceInstancesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"tf-test-network_37559\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"tf-test-subnet_91980\")\n .ipCidrRange(\"10.0.0.0/28\")\n .region(\"us-central1\")\n .network(network.selfLink())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .name(\"tf-test-instance_37118\")\n .machineType(\"e2-medium\")\n .canIpForward(true)\n .zone(\"us-central1-a\")\n .bootDisk(InstanceBootDiskArgs.builder()\n .initializeParams(InstanceBootDiskInitializeParamsArgs.builder()\n .image(\"projects/debian-cloud/global/images/debian-10-buster-v20210817\")\n .build())\n .build())\n .networkInterfaces(InstanceNetworkInterfaceArgs.builder()\n .subnetwork(subnetwork.name())\n .networkIp(\"10.0.0.2\")\n .accessConfigs(InstanceNetworkInterfaceAccessConfigArgs.builder()\n .networkTier(\"PREMIUM\")\n .build())\n .build())\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"tf-test-hub_80332\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"tf-test-name_13293\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked routher appliance instance\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedRouterApplianceInstances(SpokeLinkedRouterApplianceInstancesArgs.builder()\n .instances(SpokeLinkedRouterApplianceInstancesInstanceArgs.builder()\n .virtualMachine(instance.selfLink())\n .ipAddress(\"10.0.0.2\")\n .build())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: tf-test-network_37559\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: tf-test-subnet_91980\n ipCidrRange: 10.0.0.0/28\n region: us-central1\n network: ${network.selfLink}\n instance:\n type: gcp:compute:Instance\n properties:\n name: tf-test-instance_37118\n machineType: e2-medium\n canIpForward: true\n zone: us-central1-a\n bootDisk:\n initializeParams:\n image: projects/debian-cloud/global/images/debian-10-buster-v20210817\n networkInterfaces:\n - subnetwork: ${subnetwork.name}\n networkIp: 10.0.0.2\n accessConfigs:\n - networkTier: PREMIUM\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: tf-test-hub_80332\n description: A sample hub\n labels:\n label-two: value-one\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: tf-test-name_13293\n location: us-central1\n description: A sample spoke with a linked routher appliance instance\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedRouterApplianceInstances:\n instances:\n - virtualMachine: ${instance.selfLink}\n ipAddress: 10.0.0.2\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Vpn Tunnel Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"basic-hub1\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst subnetwork = new gcp.compute.Subnetwork(\"subnetwork\", {\n name: \"basic-subnetwork\",\n ipCidrRange: \"10.0.0.0/28\",\n region: \"us-central1\",\n network: network.selfLink,\n});\nconst gateway = new gcp.compute.HaVpnGateway(\"gateway\", {\n name: \"vpn-gateway\",\n network: network.id,\n});\nconst externalVpnGw = new gcp.compute.ExternalVpnGateway(\"external_vpn_gw\", {\n name: \"external-vpn-gateway\",\n redundancyType: \"SINGLE_IP_INTERNALLY_REDUNDANT\",\n description: \"An externally managed VPN gateway\",\n interfaces: [{\n id: 0,\n ipAddress: \"8.8.8.8\",\n }],\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"external-vpn-gateway\",\n region: \"us-central1\",\n network: network.name,\n bgp: {\n asn: 64514,\n },\n});\nconst tunnel1 = new gcp.compute.VPNTunnel(\"tunnel1\", {\n name: \"tunnel1\",\n region: \"us-central1\",\n vpnGateway: gateway.id,\n peerExternalGateway: externalVpnGw.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"a secret message\",\n router: router.id,\n vpnGatewayInterface: 0,\n});\nconst tunnel2 = new gcp.compute.VPNTunnel(\"tunnel2\", {\n name: \"tunnel2\",\n region: \"us-central1\",\n vpnGateway: gateway.id,\n peerExternalGateway: externalVpnGw.id,\n peerExternalGatewayInterface: 0,\n sharedSecret: \"a secret message\",\n router: pulumi.interpolate` ${router.id}`,\n vpnGatewayInterface: 1,\n});\nconst routerInterface1 = new gcp.compute.RouterInterface(\"router_interface1\", {\n name: \"router-interface1\",\n router: router.name,\n region: \"us-central1\",\n ipRange: \"169.254.0.1/30\",\n vpnTunnel: tunnel1.name,\n});\nconst routerPeer1 = new gcp.compute.RouterPeer(\"router_peer1\", {\n name: \"router-peer1\",\n router: router.name,\n region: \"us-central1\",\n peerIpAddress: \"169.254.0.2\",\n peerAsn: 64515,\n advertisedRoutePriority: 100,\n \"interface\": routerInterface1.name,\n});\nconst routerInterface2 = new gcp.compute.RouterInterface(\"router_interface2\", {\n name: \"router-interface2\",\n router: router.name,\n region: \"us-central1\",\n ipRange: \"169.254.1.1/30\",\n vpnTunnel: tunnel2.name,\n});\nconst routerPeer2 = new gcp.compute.RouterPeer(\"router_peer2\", {\n name: \"router-peer2\",\n router: router.name,\n region: \"us-central1\",\n peerIpAddress: \"169.254.1.2\",\n peerAsn: 64515,\n advertisedRoutePriority: 100,\n \"interface\": routerInterface2.name,\n});\nconst tunnel1Spoke = new gcp.networkconnectivity.Spoke(\"tunnel1\", {\n name: \"vpn-tunnel-1-spoke\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked VPN Tunnel\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpnTunnels: {\n uris: [tunnel1.selfLink],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\nconst tunnel2Spoke = new gcp.networkconnectivity.Spoke(\"tunnel2\", {\n name: \"vpn-tunnel-2-spoke\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked VPN Tunnel\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedVpnTunnels: {\n uris: [tunnel2.selfLink],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"basic-hub1\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nnetwork = gcp.compute.Network(\"network\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\nsubnetwork = gcp.compute.Subnetwork(\"subnetwork\",\n name=\"basic-subnetwork\",\n ip_cidr_range=\"10.0.0.0/28\",\n region=\"us-central1\",\n network=network.self_link)\ngateway = gcp.compute.HaVpnGateway(\"gateway\",\n name=\"vpn-gateway\",\n network=network.id)\nexternal_vpn_gw = gcp.compute.ExternalVpnGateway(\"external_vpn_gw\",\n name=\"external-vpn-gateway\",\n redundancy_type=\"SINGLE_IP_INTERNALLY_REDUNDANT\",\n description=\"An externally managed VPN gateway\",\n interfaces=[{\n \"id\": 0,\n \"ip_address\": \"8.8.8.8\",\n }])\nrouter = gcp.compute.Router(\"router\",\n name=\"external-vpn-gateway\",\n region=\"us-central1\",\n network=network.name,\n bgp={\n \"asn\": 64514,\n })\ntunnel1 = gcp.compute.VPNTunnel(\"tunnel1\",\n name=\"tunnel1\",\n region=\"us-central1\",\n vpn_gateway=gateway.id,\n peer_external_gateway=external_vpn_gw.id,\n peer_external_gateway_interface=0,\n shared_secret=\"a secret message\",\n router=router.id,\n vpn_gateway_interface=0)\ntunnel2 = gcp.compute.VPNTunnel(\"tunnel2\",\n name=\"tunnel2\",\n region=\"us-central1\",\n vpn_gateway=gateway.id,\n peer_external_gateway=external_vpn_gw.id,\n peer_external_gateway_interface=0,\n shared_secret=\"a secret message\",\n router=router.id.apply(lambda id: f\" {id}\"),\n vpn_gateway_interface=1)\nrouter_interface1 = gcp.compute.RouterInterface(\"router_interface1\",\n name=\"router-interface1\",\n router=router.name,\n region=\"us-central1\",\n ip_range=\"169.254.0.1/30\",\n vpn_tunnel=tunnel1.name)\nrouter_peer1 = gcp.compute.RouterPeer(\"router_peer1\",\n name=\"router-peer1\",\n router=router.name,\n region=\"us-central1\",\n peer_ip_address=\"169.254.0.2\",\n peer_asn=64515,\n advertised_route_priority=100,\n interface=router_interface1.name)\nrouter_interface2 = gcp.compute.RouterInterface(\"router_interface2\",\n name=\"router-interface2\",\n router=router.name,\n region=\"us-central1\",\n ip_range=\"169.254.1.1/30\",\n vpn_tunnel=tunnel2.name)\nrouter_peer2 = gcp.compute.RouterPeer(\"router_peer2\",\n name=\"router-peer2\",\n router=router.name,\n region=\"us-central1\",\n peer_ip_address=\"169.254.1.2\",\n peer_asn=64515,\n advertised_route_priority=100,\n interface=router_interface2.name)\ntunnel1_spoke = gcp.networkconnectivity.Spoke(\"tunnel1\",\n name=\"vpn-tunnel-1-spoke\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked VPN Tunnel\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpn_tunnels={\n \"uris\": [tunnel1.self_link],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_RANGES\"],\n })\ntunnel2_spoke = gcp.networkconnectivity.Spoke(\"tunnel2\",\n name=\"vpn-tunnel-2-spoke\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked VPN Tunnel\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_vpn_tunnels={\n \"uris\": [tunnel2.self_link],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_RANGES\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"basic-hub1\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetwork = new Gcp.Compute.Subnetwork(\"subnetwork\", new()\n {\n Name = \"basic-subnetwork\",\n IpCidrRange = \"10.0.0.0/28\",\n Region = \"us-central1\",\n Network = network.SelfLink,\n });\n\n var gateway = new Gcp.Compute.HaVpnGateway(\"gateway\", new()\n {\n Name = \"vpn-gateway\",\n Network = network.Id,\n });\n\n var externalVpnGw = new Gcp.Compute.ExternalVpnGateway(\"external_vpn_gw\", new()\n {\n Name = \"external-vpn-gateway\",\n RedundancyType = \"SINGLE_IP_INTERNALLY_REDUNDANT\",\n Description = \"An externally managed VPN gateway\",\n Interfaces = new[]\n {\n new Gcp.Compute.Inputs.ExternalVpnGatewayInterfaceArgs\n {\n Id = 0,\n IpAddress = \"8.8.8.8\",\n },\n },\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"external-vpn-gateway\",\n Region = \"us-central1\",\n Network = network.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 64514,\n },\n });\n\n var tunnel1 = new Gcp.Compute.VPNTunnel(\"tunnel1\", new()\n {\n Name = \"tunnel1\",\n Region = \"us-central1\",\n VpnGateway = gateway.Id,\n PeerExternalGateway = externalVpnGw.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"a secret message\",\n Router = router.Id,\n VpnGatewayInterface = 0,\n });\n\n var tunnel2 = new Gcp.Compute.VPNTunnel(\"tunnel2\", new()\n {\n Name = \"tunnel2\",\n Region = \"us-central1\",\n VpnGateway = gateway.Id,\n PeerExternalGateway = externalVpnGw.Id,\n PeerExternalGatewayInterface = 0,\n SharedSecret = \"a secret message\",\n Router = router.Id.Apply(id =\u003e $\" {id}\"),\n VpnGatewayInterface = 1,\n });\n\n var routerInterface1 = new Gcp.Compute.RouterInterface(\"router_interface1\", new()\n {\n Name = \"router-interface1\",\n Router = router.Name,\n Region = \"us-central1\",\n IpRange = \"169.254.0.1/30\",\n VpnTunnel = tunnel1.Name,\n });\n\n var routerPeer1 = new Gcp.Compute.RouterPeer(\"router_peer1\", new()\n {\n Name = \"router-peer1\",\n Router = router.Name,\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.0.2\",\n PeerAsn = 64515,\n AdvertisedRoutePriority = 100,\n Interface = routerInterface1.Name,\n });\n\n var routerInterface2 = new Gcp.Compute.RouterInterface(\"router_interface2\", new()\n {\n Name = \"router-interface2\",\n Router = router.Name,\n Region = \"us-central1\",\n IpRange = \"169.254.1.1/30\",\n VpnTunnel = tunnel2.Name,\n });\n\n var routerPeer2 = new Gcp.Compute.RouterPeer(\"router_peer2\", new()\n {\n Name = \"router-peer2\",\n Router = router.Name,\n Region = \"us-central1\",\n PeerIpAddress = \"169.254.1.2\",\n PeerAsn = 64515,\n AdvertisedRoutePriority = 100,\n Interface = routerInterface2.Name,\n });\n\n var tunnel1Spoke = new Gcp.NetworkConnectivity.Spoke(\"tunnel1\", new()\n {\n Name = \"vpn-tunnel-1-spoke\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked VPN Tunnel\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpnTunnels = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpnTunnelsArgs\n {\n Uris = new[]\n {\n tunnel1.SelfLink,\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n var tunnel2Spoke = new Gcp.NetworkConnectivity.Spoke(\"tunnel2\", new()\n {\n Name = \"vpn-tunnel-2-spoke\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked VPN Tunnel\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedVpnTunnels = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpnTunnelsArgs\n {\n Uris = new[]\n {\n tunnel2.SelfLink,\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"basic-hub1\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"basic-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewSubnetwork(ctx, \"subnetwork\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"basic-subnetwork\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/28\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tgateway, err := compute.NewHaVpnGateway(ctx, \"gateway\", \u0026compute.HaVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"vpn-gateway\"),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternalVpnGw, err := compute.NewExternalVpnGateway(ctx, \"external_vpn_gw\", \u0026compute.ExternalVpnGatewayArgs{\n\t\t\tName: pulumi.String(\"external-vpn-gateway\"),\n\t\t\tRedundancyType: pulumi.String(\"SINGLE_IP_INTERNALLY_REDUNDANT\"),\n\t\t\tDescription: pulumi.String(\"An externally managed VPN gateway\"),\n\t\t\tInterfaces: compute.ExternalVpnGatewayInterfaceArray{\n\t\t\t\t\u0026compute.ExternalVpnGatewayInterfaceArgs{\n\t\t\t\t\tId: pulumi.Int(0),\n\t\t\t\t\tIpAddress: pulumi.String(\"8.8.8.8\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"external-vpn-gateway\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.Name,\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(64514),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttunnel1, err := compute.NewVPNTunnel(ctx, \"tunnel1\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"tunnel1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVpnGateway: gateway.ID(),\n\t\t\tPeerExternalGateway: externalVpnGw.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tRouter: router.ID(),\n\t\t\tVpnGatewayInterface: pulumi.Int(0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttunnel2, err := compute.NewVPNTunnel(ctx, \"tunnel2\", \u0026compute.VPNTunnelArgs{\n\t\t\tName: pulumi.String(\"tunnel2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tVpnGateway: gateway.ID(),\n\t\t\tPeerExternalGateway: externalVpnGw.ID(),\n\t\t\tPeerExternalGatewayInterface: pulumi.Int(0),\n\t\t\tSharedSecret: pulumi.String(\"a secret message\"),\n\t\t\tRouter: router.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\" %v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tVpnGatewayInterface: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouterInterface1, err := compute.NewRouterInterface(ctx, \"router_interface1\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"router-interface1\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpRange: pulumi.String(\"169.254.0.1/30\"),\n\t\t\tVpnTunnel: tunnel1.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterPeer(ctx, \"router_peer1\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"router-peer1\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.0.2\"),\n\t\t\tPeerAsn: pulumi.Int(64515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: routerInterface1.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouterInterface2, err := compute.NewRouterInterface(ctx, \"router_interface2\", \u0026compute.RouterInterfaceArgs{\n\t\t\tName: pulumi.String(\"router-interface2\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpRange: pulumi.String(\"169.254.1.1/30\"),\n\t\t\tVpnTunnel: tunnel2.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewRouterPeer(ctx, \"router_peer2\", \u0026compute.RouterPeerArgs{\n\t\t\tName: pulumi.String(\"router-peer2\"),\n\t\t\tRouter: router.Name,\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tPeerIpAddress: pulumi.String(\"169.254.1.2\"),\n\t\t\tPeerAsn: pulumi.Int(64515),\n\t\t\tAdvertisedRoutePriority: pulumi.Int(100),\n\t\t\tInterface: routerInterface2.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"tunnel1\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpn-tunnel-1-spoke\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked VPN Tunnel\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpnTunnels: \u0026networkconnectivity.SpokeLinkedVpnTunnelsArgs{\n\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\ttunnel1.SelfLink,\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"tunnel2\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpn-tunnel-2-spoke\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked VPN Tunnel\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpnTunnels: \u0026networkconnectivity.SpokeLinkedVpnTunnelsArgs{\n\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\ttunnel2.SelfLink,\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.HaVpnGateway;\nimport com.pulumi.gcp.compute.HaVpnGatewayArgs;\nimport com.pulumi.gcp.compute.ExternalVpnGateway;\nimport com.pulumi.gcp.compute.ExternalVpnGatewayArgs;\nimport com.pulumi.gcp.compute.inputs.ExternalVpnGatewayInterfaceArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.VPNTunnel;\nimport com.pulumi.gcp.compute.VPNTunnelArgs;\nimport com.pulumi.gcp.compute.RouterInterface;\nimport com.pulumi.gcp.compute.RouterInterfaceArgs;\nimport com.pulumi.gcp.compute.RouterPeer;\nimport com.pulumi.gcp.compute.RouterPeerArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpnTunnelsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"basic-hub1\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetwork = new Subnetwork(\"subnetwork\", SubnetworkArgs.builder()\n .name(\"basic-subnetwork\")\n .ipCidrRange(\"10.0.0.0/28\")\n .region(\"us-central1\")\n .network(network.selfLink())\n .build());\n\n var gateway = new HaVpnGateway(\"gateway\", HaVpnGatewayArgs.builder()\n .name(\"vpn-gateway\")\n .network(network.id())\n .build());\n\n var externalVpnGw = new ExternalVpnGateway(\"externalVpnGw\", ExternalVpnGatewayArgs.builder()\n .name(\"external-vpn-gateway\")\n .redundancyType(\"SINGLE_IP_INTERNALLY_REDUNDANT\")\n .description(\"An externally managed VPN gateway\")\n .interfaces(ExternalVpnGatewayInterfaceArgs.builder()\n .id(0)\n .ipAddress(\"8.8.8.8\")\n .build())\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"external-vpn-gateway\")\n .region(\"us-central1\")\n .network(network.name())\n .bgp(RouterBgpArgs.builder()\n .asn(64514)\n .build())\n .build());\n\n var tunnel1 = new VPNTunnel(\"tunnel1\", VPNTunnelArgs.builder()\n .name(\"tunnel1\")\n .region(\"us-central1\")\n .vpnGateway(gateway.id())\n .peerExternalGateway(externalVpnGw.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"a secret message\")\n .router(router.id())\n .vpnGatewayInterface(0)\n .build());\n\n var tunnel2 = new VPNTunnel(\"tunnel2\", VPNTunnelArgs.builder()\n .name(\"tunnel2\")\n .region(\"us-central1\")\n .vpnGateway(gateway.id())\n .peerExternalGateway(externalVpnGw.id())\n .peerExternalGatewayInterface(0)\n .sharedSecret(\"a secret message\")\n .router(router.id().applyValue(id -\u003e String.format(\" %s\", id)))\n .vpnGatewayInterface(1)\n .build());\n\n var routerInterface1 = new RouterInterface(\"routerInterface1\", RouterInterfaceArgs.builder()\n .name(\"router-interface1\")\n .router(router.name())\n .region(\"us-central1\")\n .ipRange(\"169.254.0.1/30\")\n .vpnTunnel(tunnel1.name())\n .build());\n\n var routerPeer1 = new RouterPeer(\"routerPeer1\", RouterPeerArgs.builder()\n .name(\"router-peer1\")\n .router(router.name())\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.0.2\")\n .peerAsn(64515)\n .advertisedRoutePriority(100)\n .interface_(routerInterface1.name())\n .build());\n\n var routerInterface2 = new RouterInterface(\"routerInterface2\", RouterInterfaceArgs.builder()\n .name(\"router-interface2\")\n .router(router.name())\n .region(\"us-central1\")\n .ipRange(\"169.254.1.1/30\")\n .vpnTunnel(tunnel2.name())\n .build());\n\n var routerPeer2 = new RouterPeer(\"routerPeer2\", RouterPeerArgs.builder()\n .name(\"router-peer2\")\n .router(router.name())\n .region(\"us-central1\")\n .peerIpAddress(\"169.254.1.2\")\n .peerAsn(64515)\n .advertisedRoutePriority(100)\n .interface_(routerInterface2.name())\n .build());\n\n var tunnel1Spoke = new Spoke(\"tunnel1Spoke\", SpokeArgs.builder()\n .name(\"vpn-tunnel-1-spoke\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked VPN Tunnel\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpnTunnels(SpokeLinkedVpnTunnelsArgs.builder()\n .uris(tunnel1.selfLink())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n var tunnel2Spoke = new Spoke(\"tunnel2Spoke\", SpokeArgs.builder()\n .name(\"vpn-tunnel-2-spoke\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked VPN Tunnel\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedVpnTunnels(SpokeLinkedVpnTunnelsArgs.builder()\n .uris(tunnel2.selfLink())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: basic-hub1\n description: A sample hub\n labels:\n label-two: value-one\n network:\n type: gcp:compute:Network\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n subnetwork:\n type: gcp:compute:Subnetwork\n properties:\n name: basic-subnetwork\n ipCidrRange: 10.0.0.0/28\n region: us-central1\n network: ${network.selfLink}\n gateway:\n type: gcp:compute:HaVpnGateway\n properties:\n name: vpn-gateway\n network: ${network.id}\n externalVpnGw:\n type: gcp:compute:ExternalVpnGateway\n name: external_vpn_gw\n properties:\n name: external-vpn-gateway\n redundancyType: SINGLE_IP_INTERNALLY_REDUNDANT\n description: An externally managed VPN gateway\n interfaces:\n - id: 0\n ipAddress: 8.8.8.8\n router:\n type: gcp:compute:Router\n properties:\n name: external-vpn-gateway\n region: us-central1\n network: ${network.name}\n bgp:\n asn: 64514\n tunnel1:\n type: gcp:compute:VPNTunnel\n properties:\n name: tunnel1\n region: us-central1\n vpnGateway: ${gateway.id}\n peerExternalGateway: ${externalVpnGw.id}\n peerExternalGatewayInterface: 0\n sharedSecret: a secret message\n router: ${router.id}\n vpnGatewayInterface: 0\n tunnel2:\n type: gcp:compute:VPNTunnel\n properties:\n name: tunnel2\n region: us-central1\n vpnGateway: ${gateway.id}\n peerExternalGateway: ${externalVpnGw.id}\n peerExternalGatewayInterface: 0\n sharedSecret: a secret message\n router: ' ${router.id}'\n vpnGatewayInterface: 1\n routerInterface1:\n type: gcp:compute:RouterInterface\n name: router_interface1\n properties:\n name: router-interface1\n router: ${router.name}\n region: us-central1\n ipRange: 169.254.0.1/30\n vpnTunnel: ${tunnel1.name}\n routerPeer1:\n type: gcp:compute:RouterPeer\n name: router_peer1\n properties:\n name: router-peer1\n router: ${router.name}\n region: us-central1\n peerIpAddress: 169.254.0.2\n peerAsn: 64515\n advertisedRoutePriority: 100\n interface: ${routerInterface1.name}\n routerInterface2:\n type: gcp:compute:RouterInterface\n name: router_interface2\n properties:\n name: router-interface2\n router: ${router.name}\n region: us-central1\n ipRange: 169.254.1.1/30\n vpnTunnel: ${tunnel2.name}\n routerPeer2:\n type: gcp:compute:RouterPeer\n name: router_peer2\n properties:\n name: router-peer2\n router: ${router.name}\n region: us-central1\n peerIpAddress: 169.254.1.2\n peerAsn: 64515\n advertisedRoutePriority: 100\n interface: ${routerInterface2.name}\n tunnel1Spoke:\n type: gcp:networkconnectivity:Spoke\n name: tunnel1\n properties:\n name: vpn-tunnel-1-spoke\n location: us-central1\n description: A sample spoke with a linked VPN Tunnel\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpnTunnels:\n uris:\n - ${tunnel1.selfLink}\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n tunnel2Spoke:\n type: gcp:networkconnectivity:Spoke\n name: tunnel2\n properties:\n name: vpn-tunnel-2-spoke\n location: us-central1\n description: A sample spoke with a linked VPN Tunnel\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedVpnTunnels:\n uris:\n - ${tunnel2.selfLink}\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Interconnect Attachment Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {\n name: \"basic-hub1\",\n description: \"A sample hub\",\n labels: {\n \"label-two\": \"value-one\",\n },\n});\nconst network = new gcp.compute.Network(\"network\", {\n name: \"basic-network\",\n autoCreateSubnetworks: false,\n});\nconst router = new gcp.compute.Router(\"router\", {\n name: \"external-vpn-gateway\",\n region: \"us-central1\",\n network: network.name,\n bgp: {\n asn: 16550,\n },\n});\nconst interconnect_attachment = new gcp.compute.InterconnectAttachment(\"interconnect-attachment\", {\n name: \"partner-interconnect1\",\n edgeAvailabilityDomain: \"AVAILABILITY_DOMAIN_1\",\n type: \"PARTNER\",\n router: router.id,\n mtu: \"1500\",\n region: \"us-central1\",\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"interconnect-attachment-spoke\",\n location: \"us-central1\",\n description: \"A sample spoke with a linked Interconnect Attachment\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedInterconnectAttachments: {\n uris: [interconnect_attachment.selfLink],\n siteToSiteDataTransfer: true,\n includeImportRanges: [\"ALL_IPV4_RANGES\"],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\",\n name=\"basic-hub1\",\n description=\"A sample hub\",\n labels={\n \"label-two\": \"value-one\",\n })\nnetwork = gcp.compute.Network(\"network\",\n name=\"basic-network\",\n auto_create_subnetworks=False)\nrouter = gcp.compute.Router(\"router\",\n name=\"external-vpn-gateway\",\n region=\"us-central1\",\n network=network.name,\n bgp={\n \"asn\": 16550,\n })\ninterconnect_attachment = gcp.compute.InterconnectAttachment(\"interconnect-attachment\",\n name=\"partner-interconnect1\",\n edge_availability_domain=\"AVAILABILITY_DOMAIN_1\",\n type=\"PARTNER\",\n router=router.id,\n mtu=\"1500\",\n region=\"us-central1\")\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"interconnect-attachment-spoke\",\n location=\"us-central1\",\n description=\"A sample spoke with a linked Interconnect Attachment\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_interconnect_attachments={\n \"uris\": [interconnect_attachment.self_link],\n \"site_to_site_data_transfer\": True,\n \"include_import_ranges\": [\"ALL_IPV4_RANGES\"],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"basic-hub1\",\n Description = \"A sample hub\",\n Labels = \n {\n { \"label-two\", \"value-one\" },\n },\n });\n\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"basic-network\",\n AutoCreateSubnetworks = false,\n });\n\n var router = new Gcp.Compute.Router(\"router\", new()\n {\n Name = \"external-vpn-gateway\",\n Region = \"us-central1\",\n Network = network.Name,\n Bgp = new Gcp.Compute.Inputs.RouterBgpArgs\n {\n Asn = 16550,\n },\n });\n\n var interconnect_attachment = new Gcp.Compute.InterconnectAttachment(\"interconnect-attachment\", new()\n {\n Name = \"partner-interconnect1\",\n EdgeAvailabilityDomain = \"AVAILABILITY_DOMAIN_1\",\n Type = \"PARTNER\",\n Router = router.Id,\n Mtu = \"1500\",\n Region = \"us-central1\",\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"interconnect-attachment-spoke\",\n Location = \"us-central1\",\n Description = \"A sample spoke with a linked Interconnect Attachment\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedInterconnectAttachments = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedInterconnectAttachmentsArgs\n {\n Uris = new[]\n {\n interconnect_attachment.SelfLink,\n },\n SiteToSiteDataTransfer = true,\n IncludeImportRanges = new[]\n {\n \"ALL_IPV4_RANGES\",\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"basic-hub1\"),\n\t\t\tDescription: pulumi.String(\"A sample hub\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-two\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"basic-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trouter, err := compute.NewRouter(ctx, \"router\", \u0026compute.RouterArgs{\n\t\t\tName: pulumi.String(\"external-vpn-gateway\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.Name,\n\t\t\tBgp: \u0026compute.RouterBgpArgs{\n\t\t\t\tAsn: pulumi.Int(16550),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinterconnect_attachment, err := compute.NewInterconnectAttachment(ctx, \"interconnect-attachment\", \u0026compute.InterconnectAttachmentArgs{\n\t\t\tName: pulumi.String(\"partner-interconnect1\"),\n\t\t\tEdgeAvailabilityDomain: pulumi.String(\"AVAILABILITY_DOMAIN_1\"),\n\t\t\tType: pulumi.String(\"PARTNER\"),\n\t\t\tRouter: router.ID(),\n\t\t\tMtu: pulumi.String(\"1500\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"interconnect-attachment-spoke\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked Interconnect Attachment\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedInterconnectAttachments: \u0026networkconnectivity.SpokeLinkedInterconnectAttachmentsArgs{\n\t\t\t\tUris: pulumi.StringArray{\n\t\t\t\t\tinterconnect_attachment.SelfLink,\n\t\t\t\t},\n\t\t\t\tSiteToSiteDataTransfer: pulumi.Bool(true),\n\t\t\t\tIncludeImportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ALL_IPV4_RANGES\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Router;\nimport com.pulumi.gcp.compute.RouterArgs;\nimport com.pulumi.gcp.compute.inputs.RouterBgpArgs;\nimport com.pulumi.gcp.compute.InterconnectAttachment;\nimport com.pulumi.gcp.compute.InterconnectAttachmentArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedInterconnectAttachmentsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"basic-hub1\")\n .description(\"A sample hub\")\n .labels(Map.of(\"label-two\", \"value-one\"))\n .build());\n\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"basic-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var router = new Router(\"router\", RouterArgs.builder()\n .name(\"external-vpn-gateway\")\n .region(\"us-central1\")\n .network(network.name())\n .bgp(RouterBgpArgs.builder()\n .asn(16550)\n .build())\n .build());\n\n var interconnect_attachment = new InterconnectAttachment(\"interconnect-attachment\", InterconnectAttachmentArgs.builder()\n .name(\"partner-interconnect1\")\n .edgeAvailabilityDomain(\"AVAILABILITY_DOMAIN_1\")\n .type(\"PARTNER\")\n .router(router.id())\n .mtu(1500)\n .region(\"us-central1\")\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"interconnect-attachment-spoke\")\n .location(\"us-central1\")\n .description(\"A sample spoke with a linked Interconnect Attachment\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedInterconnectAttachments(SpokeLinkedInterconnectAttachmentsArgs.builder()\n .uris(interconnect_attachment.selfLink())\n .siteToSiteDataTransfer(true)\n .includeImportRanges(\"ALL_IPV4_RANGES\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: basic-hub1\n description: A sample hub\n labels:\n label-two: value-one\n network:\n type: gcp:compute:Network\n properties:\n name: basic-network\n autoCreateSubnetworks: false\n router:\n type: gcp:compute:Router\n properties:\n name: external-vpn-gateway\n region: us-central1\n network: ${network.name}\n bgp:\n asn: 16550\n interconnect-attachment:\n type: gcp:compute:InterconnectAttachment\n properties:\n name: partner-interconnect1\n edgeAvailabilityDomain: AVAILABILITY_DOMAIN_1\n type: PARTNER\n router: ${router.id}\n mtu: 1500\n region: us-central1\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: interconnect-attachment-spoke\n location: us-central1\n description: A sample spoke with a linked Interconnect Attachment\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedInterconnectAttachments:\n uris:\n - ${[\"interconnect-attachment\"].selfLink}\n siteToSiteDataTransfer: true\n includeImportRanges:\n - ALL_IPV4_RANGES\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Linked Producer Vpc Network Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"net-spoke\",\n autoCreateSubnetworks: false,\n});\nconst address = new gcp.compute.GlobalAddress(\"address\", {\n name: \"test-address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: network.id,\n});\nconst peering = new gcp.servicenetworking.Connection(\"peering\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [address.name],\n});\nconst basicHub = new gcp.networkconnectivity.Hub(\"basic_hub\", {name: \"hub-basic\"});\nconst linkedVpcSpoke = new gcp.networkconnectivity.Spoke(\"linked_vpc_spoke\", {\n name: \"vpc-spoke\",\n location: \"global\",\n hub: basicHub.id,\n linkedVpcNetwork: {\n uri: network.selfLink,\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"producer-spoke\",\n location: \"global\",\n description: \"A sample spoke with a linked router appliance instance\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: basicHub.id,\n linkedProducerVpcNetwork: {\n network: network.name,\n peering: peering.peering,\n excludeExportRanges: [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n },\n}, {\n dependsOn: [linkedVpcSpoke],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"net-spoke\",\n auto_create_subnetworks=False)\naddress = gcp.compute.GlobalAddress(\"address\",\n name=\"test-address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=network.id)\npeering = gcp.servicenetworking.Connection(\"peering\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[address.name])\nbasic_hub = gcp.networkconnectivity.Hub(\"basic_hub\", name=\"hub-basic\")\nlinked_vpc_spoke = gcp.networkconnectivity.Spoke(\"linked_vpc_spoke\",\n name=\"vpc-spoke\",\n location=\"global\",\n hub=basic_hub.id,\n linked_vpc_network={\n \"uri\": network.self_link,\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"producer-spoke\",\n location=\"global\",\n description=\"A sample spoke with a linked router appliance instance\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=basic_hub.id,\n linked_producer_vpc_network={\n \"network\": network.name,\n \"peering\": peering.peering,\n \"exclude_export_ranges\": [\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n ],\n },\n opts = pulumi.ResourceOptions(depends_on=[linked_vpc_spoke]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"net-spoke\",\n AutoCreateSubnetworks = false,\n });\n\n var address = new Gcp.Compute.GlobalAddress(\"address\", new()\n {\n Name = \"test-address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = network.Id,\n });\n\n var peering = new Gcp.ServiceNetworking.Connection(\"peering\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n address.Name,\n },\n });\n\n var basicHub = new Gcp.NetworkConnectivity.Hub(\"basic_hub\", new()\n {\n Name = \"hub-basic\",\n });\n\n var linkedVpcSpoke = new Gcp.NetworkConnectivity.Spoke(\"linked_vpc_spoke\", new()\n {\n Name = \"vpc-spoke\",\n Location = \"global\",\n Hub = basicHub.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n Uri = network.SelfLink,\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"producer-spoke\",\n Location = \"global\",\n Description = \"A sample spoke with a linked router appliance instance\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = basicHub.Id,\n LinkedProducerVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedProducerVpcNetworkArgs\n {\n Network = network.Name,\n Peering = peering.Peering,\n ExcludeExportRanges = new[]\n {\n \"198.51.100.0/24\",\n \"10.10.0.0/16\",\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n linkedVpcSpoke,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net-spoke\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddress, err := compute.NewGlobalAddress(ctx, \"address\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"test-address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpeering, err := servicenetworking.NewConnection(ctx, \"peering\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\taddress.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbasicHub, err := networkconnectivity.NewHub(ctx, \"basic_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub-basic\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tlinkedVpcSpoke, err := networkconnectivity.NewSpoke(ctx, \"linked_vpc_spoke\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpc-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\n\t\t\t\tUri: network.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"producer-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke with a linked router appliance instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: basicHub.ID(),\n\t\t\tLinkedProducerVpcNetwork: \u0026networkconnectivity.SpokeLinkedProducerVpcNetworkArgs{\n\t\t\t\tNetwork: network.Name,\n\t\t\t\tPeering: peering.Peering,\n\t\t\t\tExcludeExportRanges: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"198.51.100.0/24\"),\n\t\t\t\t\tpulumi.String(\"10.10.0.0/16\"),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tlinkedVpcSpoke,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedProducerVpcNetworkArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"net-spoke\")\n .autoCreateSubnetworks(false)\n .build());\n\n var address = new GlobalAddress(\"address\", GlobalAddressArgs.builder()\n .name(\"test-address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(network.id())\n .build());\n\n var peering = new Connection(\"peering\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(address.name())\n .build());\n\n var basicHub = new Hub(\"basicHub\", HubArgs.builder()\n .name(\"hub-basic\")\n .build());\n\n var linkedVpcSpoke = new Spoke(\"linkedVpcSpoke\", SpokeArgs.builder()\n .name(\"vpc-spoke\")\n .location(\"global\")\n .hub(basicHub.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .uri(network.selfLink())\n .build())\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"producer-spoke\")\n .location(\"global\")\n .description(\"A sample spoke with a linked router appliance instance\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(basicHub.id())\n .linkedProducerVpcNetwork(SpokeLinkedProducerVpcNetworkArgs.builder()\n .network(network.name())\n .peering(peering.peering())\n .excludeExportRanges( \n \"198.51.100.0/24\",\n \"10.10.0.0/16\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(linkedVpcSpoke)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: net-spoke\n autoCreateSubnetworks: false\n address:\n type: gcp:compute:GlobalAddress\n properties:\n name: test-address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${network.id}\n peering:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${address.name}\n basicHub:\n type: gcp:networkconnectivity:Hub\n name: basic_hub\n properties:\n name: hub-basic\n linkedVpcSpoke:\n type: gcp:networkconnectivity:Spoke\n name: linked_vpc_spoke\n properties:\n name: vpc-spoke\n location: global\n hub: ${basicHub.id}\n linkedVpcNetwork:\n uri: ${network.selfLink}\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: producer-spoke\n location: global\n description: A sample spoke with a linked router appliance instance\n labels:\n label-one: value-one\n hub: ${basicHub.id}\n linkedProducerVpcNetwork:\n network: ${network.name}\n peering: ${peering.peering}\n excludeExportRanges:\n - 198.51.100.0/24\n - 10.10.0.0/16\n options:\n dependsOn:\n - ${linkedVpcSpoke}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Connectivity Spoke Center Group\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"tf-net\",\n autoCreateSubnetworks: false,\n});\nconst starHub = new gcp.networkconnectivity.Hub(\"star_hub\", {\n name: \"hub-basic\",\n presetTopology: \"STAR\",\n});\nconst centerGroup = new gcp.networkconnectivity.Group(\"center_group\", {\n name: \"center\",\n hub: starHub.id,\n autoAccept: {\n autoAcceptProjects: [\n \"foo_40289\",\n \"bar_33395\",\n ],\n },\n});\nconst primary = new gcp.networkconnectivity.Spoke(\"primary\", {\n name: \"vpc-spoke\",\n location: \"global\",\n description: \"A sample spoke\",\n labels: {\n \"label-one\": \"value-one\",\n },\n hub: starHub.id,\n group: centerGroup.id,\n linkedVpcNetwork: {\n uri: network.selfLink,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"tf-net\",\n auto_create_subnetworks=False)\nstar_hub = gcp.networkconnectivity.Hub(\"star_hub\",\n name=\"hub-basic\",\n preset_topology=\"STAR\")\ncenter_group = gcp.networkconnectivity.Group(\"center_group\",\n name=\"center\",\n hub=star_hub.id,\n auto_accept={\n \"auto_accept_projects\": [\n \"foo_40289\",\n \"bar_33395\",\n ],\n })\nprimary = gcp.networkconnectivity.Spoke(\"primary\",\n name=\"vpc-spoke\",\n location=\"global\",\n description=\"A sample spoke\",\n labels={\n \"label-one\": \"value-one\",\n },\n hub=star_hub.id,\n group=center_group.id,\n linked_vpc_network={\n \"uri\": network.self_link,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"tf-net\",\n AutoCreateSubnetworks = false,\n });\n\n var starHub = new Gcp.NetworkConnectivity.Hub(\"star_hub\", new()\n {\n Name = \"hub-basic\",\n PresetTopology = \"STAR\",\n });\n\n var centerGroup = new Gcp.NetworkConnectivity.Group(\"center_group\", new()\n {\n Name = \"center\",\n Hub = starHub.Id,\n AutoAccept = new Gcp.NetworkConnectivity.Inputs.GroupAutoAcceptArgs\n {\n AutoAcceptProjects = new[]\n {\n \"foo_40289\",\n \"bar_33395\",\n },\n },\n });\n\n var primary = new Gcp.NetworkConnectivity.Spoke(\"primary\", new()\n {\n Name = \"vpc-spoke\",\n Location = \"global\",\n Description = \"A sample spoke\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Hub = starHub.Id,\n Group = centerGroup.Id,\n LinkedVpcNetwork = new Gcp.NetworkConnectivity.Inputs.SpokeLinkedVpcNetworkArgs\n {\n Uri = network.SelfLink,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"tf-net\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tstarHub, err := networkconnectivity.NewHub(ctx, \"star_hub\", \u0026networkconnectivity.HubArgs{\n\t\t\tName: pulumi.String(\"hub-basic\"),\n\t\t\tPresetTopology: pulumi.String(\"STAR\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcenterGroup, err := networkconnectivity.NewGroup(ctx, \"center_group\", \u0026networkconnectivity.GroupArgs{\n\t\t\tName: pulumi.String(\"center\"),\n\t\t\tHub: starHub.ID(),\n\t\t\tAutoAccept: \u0026networkconnectivity.GroupAutoAcceptArgs{\n\t\t\t\tAutoAcceptProjects: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"foo_40289\"),\n\t\t\t\t\tpulumi.String(\"bar_33395\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkconnectivity.NewSpoke(ctx, \"primary\", \u0026networkconnectivity.SpokeArgs{\n\t\t\tName: pulumi.String(\"vpc-spoke\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"A sample spoke\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tHub: starHub.ID(),\n\t\t\tGroup: centerGroup.ID(),\n\t\t\tLinkedVpcNetwork: \u0026networkconnectivity.SpokeLinkedVpcNetworkArgs{\n\t\t\t\tUri: network.SelfLink,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networkconnectivity.Hub;\nimport com.pulumi.gcp.networkconnectivity.HubArgs;\nimport com.pulumi.gcp.networkconnectivity.Group;\nimport com.pulumi.gcp.networkconnectivity.GroupArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.GroupAutoAcceptArgs;\nimport com.pulumi.gcp.networkconnectivity.Spoke;\nimport com.pulumi.gcp.networkconnectivity.SpokeArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.SpokeLinkedVpcNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"tf-net\")\n .autoCreateSubnetworks(false)\n .build());\n\n var starHub = new Hub(\"starHub\", HubArgs.builder()\n .name(\"hub-basic\")\n .presetTopology(\"STAR\")\n .build());\n\n var centerGroup = new Group(\"centerGroup\", GroupArgs.builder()\n .name(\"center\")\n .hub(starHub.id())\n .autoAccept(GroupAutoAcceptArgs.builder()\n .autoAcceptProjects( \n \"foo_40289\",\n \"bar_33395\")\n .build())\n .build());\n\n var primary = new Spoke(\"primary\", SpokeArgs.builder()\n .name(\"vpc-spoke\")\n .location(\"global\")\n .description(\"A sample spoke\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .hub(starHub.id())\n .group(centerGroup.id())\n .linkedVpcNetwork(SpokeLinkedVpcNetworkArgs.builder()\n .uri(network.selfLink())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network:\n type: gcp:compute:Network\n properties:\n name: tf-net\n autoCreateSubnetworks: false\n starHub:\n type: gcp:networkconnectivity:Hub\n name: star_hub\n properties:\n name: hub-basic\n presetTopology: STAR\n centerGroup:\n type: gcp:networkconnectivity:Group\n name: center_group\n properties:\n name: center\n hub: ${starHub.id}\n autoAccept:\n autoAcceptProjects:\n - foo_40289\n - bar_33395\n primary:\n type: gcp:networkconnectivity:Spoke\n properties:\n name: vpc-spoke\n location: global\n description: A sample spoke\n labels:\n label-one: value-one\n hub: ${starHub.id}\n group: ${centerGroup.id}\n linkedVpcNetwork:\n uri: ${network.selfLink}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSpoke can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/spokes/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Spoke can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkconnectivity/spoke:Spoke default projects/{{project}}/locations/{{location}}/spokes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/spoke:Spoke default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkconnectivity/spoke:Spoke default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -251348,7 +251348,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\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", + "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\tsource_addr, 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\tdest_addr, 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", @@ -253296,7 +253296,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: \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", + "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_default, 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", @@ -253402,7 +253402,7 @@ } }, "gcp:networksecurity/gatewaySecurityPolicyRule:GatewaySecurityPolicyRule": { - "description": "The GatewaySecurityPolicyRule resource is in a nested collection within a GatewaySecurityPolicy and represents\na traffic matching condition and associated action to perform.\n\n\nTo get more information about GatewaySecurityPolicyRule, see:\n\n* [API documentation](https://cloud.google.com/secure-web-proxy/docs/reference/network-security/rest/v1/projects.locations.gatewaySecurityPolicies.rules)\n\n## Example Usage\n\n### Network Security Gateway Security Policy Rules Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-gateway-security-policy\",\n location: \"us-central1\",\n description: \"gateway security policy created to be used as reference by the rule.\",\n});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"default\", {\n name: \"my-gateway-security-policy-rule\",\n location: \"us-central1\",\n gatewaySecurityPolicy: _default.name,\n enabled: true,\n description: \"my description\",\n priority: 0,\n sessionMatcher: \"host() == 'example.com'\",\n basicProfile: \"ALLOW\",\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=\"gateway security policy created to be used as reference by the rule.\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"default\",\n name=\"my-gateway-security-policy-rule\",\n location=\"us-central1\",\n gateway_security_policy=default.name,\n enabled=True,\n description=\"my description\",\n priority=0,\n session_matcher=\"host() == 'example.com'\",\n basic_profile=\"ALLOW\")\n```\n```csharp\nusing 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 = \"gateway security policy created to be used as reference by the rule.\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"default\", new()\n {\n Name = \"my-gateway-security-policy-rule\",\n Location = \"us-central1\",\n GatewaySecurityPolicy = @default.Name,\n Enabled = true,\n Description = \"my description\",\n Priority = 0,\n SessionMatcher = \"host() == 'example.com'\",\n BasicProfile = \"ALLOW\",\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(\"gateway security policy created to be used as reference by the rule.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicyRule(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"my-gateway-security-policy-rule\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGatewaySecurityPolicy: _default.Name,\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tPriority: pulumi.Int(0),\n\t\t\tSessionMatcher: pulumi.String(\"host() == 'example.com'\"),\n\t\t\tBasicProfile: pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRule;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"gateway security policy created to be used as reference by the rule.\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder()\n .name(\"my-gateway-security-policy-rule\")\n .location(\"us-central1\")\n .gatewaySecurityPolicy(default_.name())\n .enabled(true)\n .description(\"my description\")\n .priority(0)\n .sessionMatcher(\"host() == 'example.com'\")\n .basicProfile(\"ALLOW\")\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: gateway security policy created to be used as reference by the rule.\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n name: default\n properties:\n name: my-gateway-security-policy-rule\n location: us-central1\n gatewaySecurityPolicy: ${default.name}\n enabled: true\n description: my description\n priority: 0\n sessionMatcher: host() == 'example.com'\n basicProfile: ALLOW\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Gateway Security Policy Rules 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.GatewaySecurityPolicy(\"default\", {\n name: \"my-gateway-security-policy\",\n location: \"us-central1\",\n description: \"gateway security policy created to be used as reference by the rule.\",\n});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"default\", {\n name: \"my-gateway-security-policy-rule\",\n location: \"us-central1\",\n gatewaySecurityPolicy: _default.name,\n enabled: true,\n description: \"my description\",\n priority: 0,\n sessionMatcher: \"host() == 'example.com'\",\n applicationMatcher: \"request.method == 'POST'\",\n tlsInspectionEnabled: false,\n basicProfile: \"ALLOW\",\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=\"gateway security policy created to be used as reference by the rule.\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"default\",\n name=\"my-gateway-security-policy-rule\",\n location=\"us-central1\",\n gateway_security_policy=default.name,\n enabled=True,\n description=\"my description\",\n priority=0,\n session_matcher=\"host() == 'example.com'\",\n application_matcher=\"request.method == 'POST'\",\n tls_inspection_enabled=False,\n basic_profile=\"ALLOW\")\n```\n```csharp\nusing 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 = \"gateway security policy created to be used as reference by the rule.\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"default\", new()\n {\n Name = \"my-gateway-security-policy-rule\",\n Location = \"us-central1\",\n GatewaySecurityPolicy = @default.Name,\n Enabled = true,\n Description = \"my description\",\n Priority = 0,\n SessionMatcher = \"host() == 'example.com'\",\n ApplicationMatcher = \"request.method == 'POST'\",\n TlsInspectionEnabled = false,\n BasicProfile = \"ALLOW\",\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(\"gateway security policy created to be used as reference by the rule.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicyRule(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"my-gateway-security-policy-rule\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGatewaySecurityPolicy: _default.Name,\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tPriority: pulumi.Int(0),\n\t\t\tSessionMatcher: pulumi.String(\"host() == 'example.com'\"),\n\t\t\tApplicationMatcher: pulumi.String(\"request.method == 'POST'\"),\n\t\t\tTlsInspectionEnabled: pulumi.Bool(false),\n\t\t\tBasicProfile: pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRule;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"gateway security policy created to be used as reference by the rule.\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder()\n .name(\"my-gateway-security-policy-rule\")\n .location(\"us-central1\")\n .gatewaySecurityPolicy(default_.name())\n .enabled(true)\n .description(\"my description\")\n .priority(0)\n .sessionMatcher(\"host() == 'example.com'\")\n .applicationMatcher(\"request.method == 'POST'\")\n .tlsInspectionEnabled(false)\n .basicProfile(\"ALLOW\")\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: gateway security policy created to be used as reference by the rule.\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n name: default\n properties:\n name: my-gateway-security-policy-rule\n location: us-central1\n gatewaySecurityPolicy: ${default.name}\n enabled: true\n description: my description\n priority: 0\n sessionMatcher: host() == 'example.com'\n applicationMatcher: request.method == 'POST'\n tlsInspectionEnabled: false\n basicProfile: ALLOW\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGatewaySecurityPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/gatewaySecurityPolicies/{{gateway_security_policy}}/rules/{{name}}`\n\n* `{{project}}/{{location}}/{{gateway_security_policy}}/{{name}}`\n\n* `{{location}}/{{gateway_security_policy}}/{{name}}`\n\nWhen using the `pulumi import` command, GatewaySecurityPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicyRule:GatewaySecurityPolicyRule default projects/{{project}}/locations/{{location}}/gatewaySecurityPolicies/{{gateway_security_policy}}/rules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicyRule:GatewaySecurityPolicyRule default {{project}}/{{location}}/{{gateway_security_policy}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicyRule:GatewaySecurityPolicyRule default {{location}}/{{gateway_security_policy}}/{{name}}\n```\n\n", + "description": "The GatewaySecurityPolicyRule resource is in a nested collection within a GatewaySecurityPolicy and represents\na traffic matching condition and associated action to perform.\n\n\nTo get more information about GatewaySecurityPolicyRule, see:\n\n* [API documentation](https://cloud.google.com/secure-web-proxy/docs/reference/network-security/rest/v1/projects.locations.gatewaySecurityPolicies.rules)\n\n## Example Usage\n\n### Network Security Gateway Security Policy Rules Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-gateway-security-policy\",\n location: \"us-central1\",\n description: \"gateway security policy created to be used as reference by the rule.\",\n});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"default\", {\n name: \"my-gateway-security-policy-rule\",\n location: \"us-central1\",\n gatewaySecurityPolicy: _default.name,\n enabled: true,\n description: \"my description\",\n priority: 0,\n sessionMatcher: \"host() == 'example.com'\",\n basicProfile: \"ALLOW\",\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=\"gateway security policy created to be used as reference by the rule.\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"default\",\n name=\"my-gateway-security-policy-rule\",\n location=\"us-central1\",\n gateway_security_policy=default.name,\n enabled=True,\n description=\"my description\",\n priority=0,\n session_matcher=\"host() == 'example.com'\",\n basic_profile=\"ALLOW\")\n```\n```csharp\nusing 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 = \"gateway security policy created to be used as reference by the rule.\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"default\", new()\n {\n Name = \"my-gateway-security-policy-rule\",\n Location = \"us-central1\",\n GatewaySecurityPolicy = @default.Name,\n Enabled = true,\n Description = \"my description\",\n Priority = 0,\n SessionMatcher = \"host() == 'example.com'\",\n BasicProfile = \"ALLOW\",\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_default, 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(\"gateway security policy created to be used as reference by the rule.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicyRule(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"my-gateway-security-policy-rule\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGatewaySecurityPolicy: _default.Name,\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tPriority: pulumi.Int(0),\n\t\t\tSessionMatcher: pulumi.String(\"host() == 'example.com'\"),\n\t\t\tBasicProfile: pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRule;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"gateway security policy created to be used as reference by the rule.\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder()\n .name(\"my-gateway-security-policy-rule\")\n .location(\"us-central1\")\n .gatewaySecurityPolicy(default_.name())\n .enabled(true)\n .description(\"my description\")\n .priority(0)\n .sessionMatcher(\"host() == 'example.com'\")\n .basicProfile(\"ALLOW\")\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: gateway security policy created to be used as reference by the rule.\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n name: default\n properties:\n name: my-gateway-security-policy-rule\n location: us-central1\n gatewaySecurityPolicy: ${default.name}\n enabled: true\n description: my description\n priority: 0\n sessionMatcher: host() == 'example.com'\n basicProfile: ALLOW\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Gateway Security Policy Rules 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.GatewaySecurityPolicy(\"default\", {\n name: \"my-gateway-security-policy\",\n location: \"us-central1\",\n description: \"gateway security policy created to be used as reference by the rule.\",\n});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"default\", {\n name: \"my-gateway-security-policy-rule\",\n location: \"us-central1\",\n gatewaySecurityPolicy: _default.name,\n enabled: true,\n description: \"my description\",\n priority: 0,\n sessionMatcher: \"host() == 'example.com'\",\n applicationMatcher: \"request.method == 'POST'\",\n tlsInspectionEnabled: false,\n basicProfile: \"ALLOW\",\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=\"gateway security policy created to be used as reference by the rule.\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"default\",\n name=\"my-gateway-security-policy-rule\",\n location=\"us-central1\",\n gateway_security_policy=default.name,\n enabled=True,\n description=\"my description\",\n priority=0,\n session_matcher=\"host() == 'example.com'\",\n application_matcher=\"request.method == 'POST'\",\n tls_inspection_enabled=False,\n basic_profile=\"ALLOW\")\n```\n```csharp\nusing 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 = \"gateway security policy created to be used as reference by the rule.\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"default\", new()\n {\n Name = \"my-gateway-security-policy-rule\",\n Location = \"us-central1\",\n GatewaySecurityPolicy = @default.Name,\n Enabled = true,\n Description = \"my description\",\n Priority = 0,\n SessionMatcher = \"host() == 'example.com'\",\n ApplicationMatcher = \"request.method == 'POST'\",\n TlsInspectionEnabled = false,\n BasicProfile = \"ALLOW\",\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_default, 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(\"gateway security policy created to be used as reference by the rule.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicyRule(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"my-gateway-security-policy-rule\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGatewaySecurityPolicy: _default.Name,\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tPriority: pulumi.Int(0),\n\t\t\tSessionMatcher: pulumi.String(\"host() == 'example.com'\"),\n\t\t\tApplicationMatcher: pulumi.String(\"request.method == 'POST'\"),\n\t\t\tTlsInspectionEnabled: pulumi.Bool(false),\n\t\t\tBasicProfile: pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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 com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRule;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"gateway security policy created to be used as reference by the rule.\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder()\n .name(\"my-gateway-security-policy-rule\")\n .location(\"us-central1\")\n .gatewaySecurityPolicy(default_.name())\n .enabled(true)\n .description(\"my description\")\n .priority(0)\n .sessionMatcher(\"host() == 'example.com'\")\n .applicationMatcher(\"request.method == 'POST'\")\n .tlsInspectionEnabled(false)\n .basicProfile(\"ALLOW\")\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: gateway security policy created to be used as reference by the rule.\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n name: default\n properties:\n name: my-gateway-security-policy-rule\n location: us-central1\n gatewaySecurityPolicy: ${default.name}\n enabled: true\n description: my description\n priority: 0\n sessionMatcher: host() == 'example.com'\n applicationMatcher: request.method == 'POST'\n tlsInspectionEnabled: false\n basicProfile: ALLOW\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGatewaySecurityPolicyRule can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/gatewaySecurityPolicies/{{gateway_security_policy}}/rules/{{name}}`\n\n* `{{project}}/{{location}}/{{gateway_security_policy}}/{{name}}`\n\n* `{{location}}/{{gateway_security_policy}}/{{name}}`\n\nWhen using the `pulumi import` command, GatewaySecurityPolicyRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicyRule:GatewaySecurityPolicyRule default projects/{{project}}/locations/{{location}}/gatewaySecurityPolicies/{{gateway_security_policy}}/rules/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicyRule:GatewaySecurityPolicyRule default {{project}}/{{location}}/{{gateway_security_policy}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networksecurity/gatewaySecurityPolicyRule:GatewaySecurityPolicyRule default {{location}}/{{gateway_security_policy}}/{{name}}\n```\n\n", "properties": { "applicationMatcher": { "type": "string", @@ -255160,7 +255160,7 @@ } }, "gcp:networksecurity/securityProfile:SecurityProfile": { - "description": "A security profile defines the behavior associated to a profile type.\n\n\nTo get more information about SecurityProfile, see:\n\n* [API documentation](https://cloud.google.com/firewall/docs/reference/network-security/rest/v1/organizations.locations.securityProfiles)\n* How-to Guides\n * [Create and manage security profiles](https://cloud.google.com/firewall/docs/configure-security-profiles)\n\n## Example Usage\n\n### Network Security Security Profile Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"my-security-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"THREAT_PREVENTION\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"my-security-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"THREAT_PREVENTION\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"my-security-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"THREAT_PREVENTION\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"my-security-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"THREAT_PREVENTION\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new SecurityProfile(\"default\", SecurityProfileArgs.builder()\n .name(\"my-security-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"THREAT_PREVENTION\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:SecurityProfile\n properties:\n name: my-security-profile\n parent: organizations/123456789\n description: my description\n type: THREAT_PREVENTION\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Security Profile Overrides\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"my-security-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"THREAT_PREVENTION\",\n threatPreventionProfile: {\n severityOverrides: [\n {\n action: \"ALLOW\",\n severity: \"INFORMATIONAL\",\n },\n {\n action: \"DENY\",\n severity: \"HIGH\",\n },\n ],\n threatOverrides: [{\n action: \"ALLOW\",\n threatId: \"280647\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"my-security-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"THREAT_PREVENTION\",\n threat_prevention_profile={\n \"severity_overrides\": [\n {\n \"action\": \"ALLOW\",\n \"severity\": \"INFORMATIONAL\",\n },\n {\n \"action\": \"DENY\",\n \"severity\": \"HIGH\",\n },\n ],\n \"threat_overrides\": [{\n \"action\": \"ALLOW\",\n \"threat_id\": \"280647\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"my-security-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"THREAT_PREVENTION\",\n ThreatPreventionProfile = new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileArgs\n {\n SeverityOverrides = new[]\n {\n new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileSeverityOverrideArgs\n {\n Action = \"ALLOW\",\n Severity = \"INFORMATIONAL\",\n },\n new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileSeverityOverrideArgs\n {\n Action = \"DENY\",\n Severity = \"HIGH\",\n },\n },\n ThreatOverrides = new[]\n {\n new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileThreatOverrideArgs\n {\n Action = \"ALLOW\",\n ThreatId = \"280647\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"my-security-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"THREAT_PREVENTION\"),\n\t\t\tThreatPreventionProfile: \u0026networksecurity.SecurityProfileThreatPreventionProfileArgs{\n\t\t\t\tSeverityOverrides: networksecurity.SecurityProfileThreatPreventionProfileSeverityOverrideArray{\n\t\t\t\t\t\u0026networksecurity.SecurityProfileThreatPreventionProfileSeverityOverrideArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\t\t\t\tSeverity: pulumi.String(\"INFORMATIONAL\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networksecurity.SecurityProfileThreatPreventionProfileSeverityOverrideArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"DENY\"),\n\t\t\t\t\t\tSeverity: pulumi.String(\"HIGH\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tThreatOverrides: networksecurity.SecurityProfileThreatPreventionProfileThreatOverrideArray{\n\t\t\t\t\t\u0026networksecurity.SecurityProfileThreatPreventionProfileThreatOverrideArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\t\t\t\tThreatId: pulumi.String(\"280647\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.inputs.SecurityProfileThreatPreventionProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new SecurityProfile(\"default\", SecurityProfileArgs.builder()\n .name(\"my-security-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"THREAT_PREVENTION\")\n .threatPreventionProfile(SecurityProfileThreatPreventionProfileArgs.builder()\n .severityOverrides( \n SecurityProfileThreatPreventionProfileSeverityOverrideArgs.builder()\n .action(\"ALLOW\")\n .severity(\"INFORMATIONAL\")\n .build(),\n SecurityProfileThreatPreventionProfileSeverityOverrideArgs.builder()\n .action(\"DENY\")\n .severity(\"HIGH\")\n .build())\n .threatOverrides(SecurityProfileThreatPreventionProfileThreatOverrideArgs.builder()\n .action(\"ALLOW\")\n .threatId(\"280647\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:SecurityProfile\n properties:\n name: my-security-profile\n parent: organizations/123456789\n description: my description\n type: THREAT_PREVENTION\n threatPreventionProfile:\n severityOverrides:\n - action: ALLOW\n severity: INFORMATIONAL\n - action: DENY\n severity: HIGH\n threatOverrides:\n - action: ALLOW\n threatId: '280647'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Security Profile Mirroring\n\n\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: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultMirroringDeploymentGroup = new gcp.networksecurity.MirroringDeploymentGroup(\"default\", {\n mirroringDeploymentGroupId: \"my-dg\",\n location: \"global\",\n network: _default.id,\n});\nconst defaultMirroringEndpointGroup = new gcp.networksecurity.MirroringEndpointGroup(\"default\", {\n mirroringEndpointGroupId: \"my-eg\",\n location: \"global\",\n mirroringDeploymentGroup: defaultMirroringDeploymentGroup.id,\n});\nconst defaultSecurityProfile = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"my-security-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"CUSTOM_MIRRORING\",\n customMirroringProfile: {\n mirroringEndpointGroup: defaultMirroringEndpointGroup.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"my-network\",\n auto_create_subnetworks=False)\ndefault_mirroring_deployment_group = gcp.networksecurity.MirroringDeploymentGroup(\"default\",\n mirroring_deployment_group_id=\"my-dg\",\n location=\"global\",\n network=default.id)\ndefault_mirroring_endpoint_group = gcp.networksecurity.MirroringEndpointGroup(\"default\",\n mirroring_endpoint_group_id=\"my-eg\",\n location=\"global\",\n mirroring_deployment_group=default_mirroring_deployment_group.id)\ndefault_security_profile = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"my-security-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"CUSTOM_MIRRORING\",\n custom_mirroring_profile={\n \"mirroring_endpoint_group\": default_mirroring_endpoint_group.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultMirroringDeploymentGroup = new Gcp.NetworkSecurity.MirroringDeploymentGroup(\"default\", new()\n {\n MirroringDeploymentGroupId = \"my-dg\",\n Location = \"global\",\n Network = @default.Id,\n });\n\n var defaultMirroringEndpointGroup = new Gcp.NetworkSecurity.MirroringEndpointGroup(\"default\", new()\n {\n MirroringEndpointGroupId = \"my-eg\",\n Location = \"global\",\n MirroringDeploymentGroup = defaultMirroringDeploymentGroup.Id,\n });\n\n var defaultSecurityProfile = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"my-security-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"CUSTOM_MIRRORING\",\n CustomMirroringProfile = new Gcp.NetworkSecurity.Inputs.SecurityProfileCustomMirroringProfileArgs\n {\n MirroringEndpointGroup = defaultMirroringEndpointGroup.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-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 := compute.NewNetwork(ctx, \"default\", \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\tdefaultMirroringDeploymentGroup, err := networksecurity.NewMirroringDeploymentGroup(ctx, \"default\", \u0026networksecurity.MirroringDeploymentGroupArgs{\n\t\t\tMirroringDeploymentGroupId: pulumi.String(\"my-dg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultMirroringEndpointGroup, err := networksecurity.NewMirroringEndpointGroup(ctx, \"default\", \u0026networksecurity.MirroringEndpointGroupArgs{\n\t\t\tMirroringEndpointGroupId: pulumi.String(\"my-eg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tMirroringDeploymentGroup: defaultMirroringDeploymentGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"my-security-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"CUSTOM_MIRRORING\"),\n\t\t\tCustomMirroringProfile: \u0026networksecurity.SecurityProfileCustomMirroringProfileArgs{\n\t\t\t\tMirroringEndpointGroup: defaultMirroringEndpointGroup.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networksecurity.MirroringDeploymentGroup;\nimport com.pulumi.gcp.networksecurity.MirroringDeploymentGroupArgs;\nimport com.pulumi.gcp.networksecurity.MirroringEndpointGroup;\nimport com.pulumi.gcp.networksecurity.MirroringEndpointGroupArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.inputs.SecurityProfileCustomMirroringProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 .autoCreateSubnetworks(false)\n .build());\n\n var defaultMirroringDeploymentGroup = new MirroringDeploymentGroup(\"defaultMirroringDeploymentGroup\", MirroringDeploymentGroupArgs.builder()\n .mirroringDeploymentGroupId(\"my-dg\")\n .location(\"global\")\n .network(default_.id())\n .build());\n\n var defaultMirroringEndpointGroup = new MirroringEndpointGroup(\"defaultMirroringEndpointGroup\", MirroringEndpointGroupArgs.builder()\n .mirroringEndpointGroupId(\"my-eg\")\n .location(\"global\")\n .mirroringDeploymentGroup(defaultMirroringDeploymentGroup.id())\n .build());\n\n var defaultSecurityProfile = new SecurityProfile(\"defaultSecurityProfile\", SecurityProfileArgs.builder()\n .name(\"my-security-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"CUSTOM_MIRRORING\")\n .customMirroringProfile(SecurityProfileCustomMirroringProfileArgs.builder()\n .mirroringEndpointGroup(defaultMirroringEndpointGroup.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n defaultMirroringDeploymentGroup:\n type: gcp:networksecurity:MirroringDeploymentGroup\n name: default\n properties:\n mirroringDeploymentGroupId: my-dg\n location: global\n network: ${default.id}\n defaultMirroringEndpointGroup:\n type: gcp:networksecurity:MirroringEndpointGroup\n name: default\n properties:\n mirroringEndpointGroupId: my-eg\n location: global\n mirroringDeploymentGroup: ${defaultMirroringDeploymentGroup.id}\n defaultSecurityProfile:\n type: gcp:networksecurity:SecurityProfile\n name: default\n properties:\n name: my-security-profile\n parent: organizations/123456789\n description: my description\n type: CUSTOM_MIRRORING\n customMirroringProfile:\n mirroringEndpointGroup: ${defaultMirroringEndpointGroup.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Security Profile Intercept\n\n\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: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultInterceptDeploymentGroup = new gcp.networksecurity.InterceptDeploymentGroup(\"default\", {\n interceptDeploymentGroupId: \"my-dg\",\n location: \"global\",\n network: _default.id,\n});\nconst defaultInterceptEndpointGroup = new gcp.networksecurity.InterceptEndpointGroup(\"default\", {\n interceptEndpointGroupId: \"my-eg\",\n location: \"global\",\n interceptDeploymentGroup: defaultInterceptDeploymentGroup.id,\n});\nconst defaultSecurityProfile = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"my-security-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"CUSTOM_INTERCEPT\",\n customInterceptProfile: {\n interceptEndpointGroup: defaultInterceptEndpointGroup.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"my-network\",\n auto_create_subnetworks=False)\ndefault_intercept_deployment_group = gcp.networksecurity.InterceptDeploymentGroup(\"default\",\n intercept_deployment_group_id=\"my-dg\",\n location=\"global\",\n network=default.id)\ndefault_intercept_endpoint_group = gcp.networksecurity.InterceptEndpointGroup(\"default\",\n intercept_endpoint_group_id=\"my-eg\",\n location=\"global\",\n intercept_deployment_group=default_intercept_deployment_group.id)\ndefault_security_profile = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"my-security-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"CUSTOM_INTERCEPT\",\n custom_intercept_profile={\n \"intercept_endpoint_group\": default_intercept_endpoint_group.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultInterceptDeploymentGroup = new Gcp.NetworkSecurity.InterceptDeploymentGroup(\"default\", new()\n {\n InterceptDeploymentGroupId = \"my-dg\",\n Location = \"global\",\n Network = @default.Id,\n });\n\n var defaultInterceptEndpointGroup = new Gcp.NetworkSecurity.InterceptEndpointGroup(\"default\", new()\n {\n InterceptEndpointGroupId = \"my-eg\",\n Location = \"global\",\n InterceptDeploymentGroup = defaultInterceptDeploymentGroup.Id,\n });\n\n var defaultSecurityProfile = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"my-security-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"CUSTOM_INTERCEPT\",\n CustomInterceptProfile = new Gcp.NetworkSecurity.Inputs.SecurityProfileCustomInterceptProfileArgs\n {\n InterceptEndpointGroup = defaultInterceptEndpointGroup.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-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 := compute.NewNetwork(ctx, \"default\", \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\tdefaultInterceptDeploymentGroup, err := networksecurity.NewInterceptDeploymentGroup(ctx, \"default\", \u0026networksecurity.InterceptDeploymentGroupArgs{\n\t\t\tInterceptDeploymentGroupId: pulumi.String(\"my-dg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultInterceptEndpointGroup, err := networksecurity.NewInterceptEndpointGroup(ctx, \"default\", \u0026networksecurity.InterceptEndpointGroupArgs{\n\t\t\tInterceptEndpointGroupId: pulumi.String(\"my-eg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tInterceptDeploymentGroup: defaultInterceptDeploymentGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"my-security-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"CUSTOM_INTERCEPT\"),\n\t\t\tCustomInterceptProfile: \u0026networksecurity.SecurityProfileCustomInterceptProfileArgs{\n\t\t\t\tInterceptEndpointGroup: defaultInterceptEndpointGroup.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networksecurity.InterceptDeploymentGroup;\nimport com.pulumi.gcp.networksecurity.InterceptDeploymentGroupArgs;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroup;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroupArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.inputs.SecurityProfileCustomInterceptProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 .autoCreateSubnetworks(false)\n .build());\n\n var defaultInterceptDeploymentGroup = new InterceptDeploymentGroup(\"defaultInterceptDeploymentGroup\", InterceptDeploymentGroupArgs.builder()\n .interceptDeploymentGroupId(\"my-dg\")\n .location(\"global\")\n .network(default_.id())\n .build());\n\n var defaultInterceptEndpointGroup = new InterceptEndpointGroup(\"defaultInterceptEndpointGroup\", InterceptEndpointGroupArgs.builder()\n .interceptEndpointGroupId(\"my-eg\")\n .location(\"global\")\n .interceptDeploymentGroup(defaultInterceptDeploymentGroup.id())\n .build());\n\n var defaultSecurityProfile = new SecurityProfile(\"defaultSecurityProfile\", SecurityProfileArgs.builder()\n .name(\"my-security-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"CUSTOM_INTERCEPT\")\n .customInterceptProfile(SecurityProfileCustomInterceptProfileArgs.builder()\n .interceptEndpointGroup(defaultInterceptEndpointGroup.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n defaultInterceptDeploymentGroup:\n type: gcp:networksecurity:InterceptDeploymentGroup\n name: default\n properties:\n interceptDeploymentGroupId: my-dg\n location: global\n network: ${default.id}\n defaultInterceptEndpointGroup:\n type: gcp:networksecurity:InterceptEndpointGroup\n name: default\n properties:\n interceptEndpointGroupId: my-eg\n location: global\n interceptDeploymentGroup: ${defaultInterceptDeploymentGroup.id}\n defaultSecurityProfile:\n type: gcp:networksecurity:SecurityProfile\n name: default\n properties:\n name: my-security-profile\n parent: organizations/123456789\n description: my description\n type: CUSTOM_INTERCEPT\n customInterceptProfile:\n interceptEndpointGroup: ${defaultInterceptEndpointGroup.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurityProfile can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/{{location}}/securityProfiles/{{name}}`\n\nWhen using the `pulumi import` command, SecurityProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/securityProfile:SecurityProfile default {{parent}}/locations/{{location}}/securityProfiles/{{name}}\n```\n\n", + "description": "A security profile defines the behavior associated to a profile type.\n\n\nTo get more information about SecurityProfile, see:\n\n* [API documentation](https://cloud.google.com/firewall/docs/reference/network-security/rest/v1/organizations.locations.securityProfiles)\n* How-to Guides\n * [Create and manage security profiles](https://cloud.google.com/firewall/docs/configure-security-profiles)\n\n## Example Usage\n\n### Network Security Security Profile Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"my-security-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"THREAT_PREVENTION\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"my-security-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"THREAT_PREVENTION\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"my-security-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"THREAT_PREVENTION\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"my-security-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"THREAT_PREVENTION\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new SecurityProfile(\"default\", SecurityProfileArgs.builder()\n .name(\"my-security-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"THREAT_PREVENTION\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:SecurityProfile\n properties:\n name: my-security-profile\n parent: organizations/123456789\n description: my description\n type: THREAT_PREVENTION\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Security Profile Overrides\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"my-security-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"THREAT_PREVENTION\",\n threatPreventionProfile: {\n severityOverrides: [\n {\n action: \"ALLOW\",\n severity: \"INFORMATIONAL\",\n },\n {\n action: \"DENY\",\n severity: \"HIGH\",\n },\n ],\n threatOverrides: [{\n action: \"ALLOW\",\n threatId: \"280647\",\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"my-security-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"THREAT_PREVENTION\",\n threat_prevention_profile={\n \"severity_overrides\": [\n {\n \"action\": \"ALLOW\",\n \"severity\": \"INFORMATIONAL\",\n },\n {\n \"action\": \"DENY\",\n \"severity\": \"HIGH\",\n },\n ],\n \"threat_overrides\": [{\n \"action\": \"ALLOW\",\n \"threat_id\": \"280647\",\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"my-security-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"THREAT_PREVENTION\",\n ThreatPreventionProfile = new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileArgs\n {\n SeverityOverrides = new[]\n {\n new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileSeverityOverrideArgs\n {\n Action = \"ALLOW\",\n Severity = \"INFORMATIONAL\",\n },\n new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileSeverityOverrideArgs\n {\n Action = \"DENY\",\n Severity = \"HIGH\",\n },\n },\n ThreatOverrides = new[]\n {\n new Gcp.NetworkSecurity.Inputs.SecurityProfileThreatPreventionProfileThreatOverrideArgs\n {\n Action = \"ALLOW\",\n ThreatId = \"280647\",\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"my-security-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"THREAT_PREVENTION\"),\n\t\t\tThreatPreventionProfile: \u0026networksecurity.SecurityProfileThreatPreventionProfileArgs{\n\t\t\t\tSeverityOverrides: networksecurity.SecurityProfileThreatPreventionProfileSeverityOverrideArray{\n\t\t\t\t\t\u0026networksecurity.SecurityProfileThreatPreventionProfileSeverityOverrideArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\t\t\t\tSeverity: pulumi.String(\"INFORMATIONAL\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026networksecurity.SecurityProfileThreatPreventionProfileSeverityOverrideArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"DENY\"),\n\t\t\t\t\t\tSeverity: pulumi.String(\"HIGH\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tThreatOverrides: networksecurity.SecurityProfileThreatPreventionProfileThreatOverrideArray{\n\t\t\t\t\t\u0026networksecurity.SecurityProfileThreatPreventionProfileThreatOverrideArgs{\n\t\t\t\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\t\t\t\tThreatId: pulumi.String(\"280647\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.inputs.SecurityProfileThreatPreventionProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new SecurityProfile(\"default\", SecurityProfileArgs.builder()\n .name(\"my-security-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"THREAT_PREVENTION\")\n .threatPreventionProfile(SecurityProfileThreatPreventionProfileArgs.builder()\n .severityOverrides( \n SecurityProfileThreatPreventionProfileSeverityOverrideArgs.builder()\n .action(\"ALLOW\")\n .severity(\"INFORMATIONAL\")\n .build(),\n SecurityProfileThreatPreventionProfileSeverityOverrideArgs.builder()\n .action(\"DENY\")\n .severity(\"HIGH\")\n .build())\n .threatOverrides(SecurityProfileThreatPreventionProfileThreatOverrideArgs.builder()\n .action(\"ALLOW\")\n .threatId(\"280647\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:SecurityProfile\n properties:\n name: my-security-profile\n parent: organizations/123456789\n description: my description\n type: THREAT_PREVENTION\n threatPreventionProfile:\n severityOverrides:\n - action: ALLOW\n severity: INFORMATIONAL\n - action: DENY\n severity: HIGH\n threatOverrides:\n - action: ALLOW\n threatId: '280647'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Security Profile Mirroring\n\n\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: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultMirroringDeploymentGroup = new gcp.networksecurity.MirroringDeploymentGroup(\"default\", {\n mirroringDeploymentGroupId: \"my-dg\",\n location: \"global\",\n network: _default.id,\n});\nconst defaultMirroringEndpointGroup = new gcp.networksecurity.MirroringEndpointGroup(\"default\", {\n mirroringEndpointGroupId: \"my-eg\",\n location: \"global\",\n mirroringDeploymentGroup: defaultMirroringDeploymentGroup.id,\n});\nconst defaultSecurityProfile = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"my-security-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"CUSTOM_MIRRORING\",\n customMirroringProfile: {\n mirroringEndpointGroup: defaultMirroringEndpointGroup.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"my-network\",\n auto_create_subnetworks=False)\ndefault_mirroring_deployment_group = gcp.networksecurity.MirroringDeploymentGroup(\"default\",\n mirroring_deployment_group_id=\"my-dg\",\n location=\"global\",\n network=default.id)\ndefault_mirroring_endpoint_group = gcp.networksecurity.MirroringEndpointGroup(\"default\",\n mirroring_endpoint_group_id=\"my-eg\",\n location=\"global\",\n mirroring_deployment_group=default_mirroring_deployment_group.id)\ndefault_security_profile = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"my-security-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"CUSTOM_MIRRORING\",\n custom_mirroring_profile={\n \"mirroring_endpoint_group\": default_mirroring_endpoint_group.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultMirroringDeploymentGroup = new Gcp.NetworkSecurity.MirroringDeploymentGroup(\"default\", new()\n {\n MirroringDeploymentGroupId = \"my-dg\",\n Location = \"global\",\n Network = @default.Id,\n });\n\n var defaultMirroringEndpointGroup = new Gcp.NetworkSecurity.MirroringEndpointGroup(\"default\", new()\n {\n MirroringEndpointGroupId = \"my-eg\",\n Location = \"global\",\n MirroringDeploymentGroup = defaultMirroringDeploymentGroup.Id,\n });\n\n var defaultSecurityProfile = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"my-security-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"CUSTOM_MIRRORING\",\n CustomMirroringProfile = new Gcp.NetworkSecurity.Inputs.SecurityProfileCustomMirroringProfileArgs\n {\n MirroringEndpointGroup = defaultMirroringEndpointGroup.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-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_default, err := compute.NewNetwork(ctx, \"default\", \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\tdefaultMirroringDeploymentGroup, err := networksecurity.NewMirroringDeploymentGroup(ctx, \"default\", \u0026networksecurity.MirroringDeploymentGroupArgs{\n\t\t\tMirroringDeploymentGroupId: pulumi.String(\"my-dg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultMirroringEndpointGroup, err := networksecurity.NewMirroringEndpointGroup(ctx, \"default\", \u0026networksecurity.MirroringEndpointGroupArgs{\n\t\t\tMirroringEndpointGroupId: pulumi.String(\"my-eg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tMirroringDeploymentGroup: defaultMirroringDeploymentGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"my-security-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"CUSTOM_MIRRORING\"),\n\t\t\tCustomMirroringProfile: \u0026networksecurity.SecurityProfileCustomMirroringProfileArgs{\n\t\t\t\tMirroringEndpointGroup: defaultMirroringEndpointGroup.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networksecurity.MirroringDeploymentGroup;\nimport com.pulumi.gcp.networksecurity.MirroringDeploymentGroupArgs;\nimport com.pulumi.gcp.networksecurity.MirroringEndpointGroup;\nimport com.pulumi.gcp.networksecurity.MirroringEndpointGroupArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.inputs.SecurityProfileCustomMirroringProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 .autoCreateSubnetworks(false)\n .build());\n\n var defaultMirroringDeploymentGroup = new MirroringDeploymentGroup(\"defaultMirroringDeploymentGroup\", MirroringDeploymentGroupArgs.builder()\n .mirroringDeploymentGroupId(\"my-dg\")\n .location(\"global\")\n .network(default_.id())\n .build());\n\n var defaultMirroringEndpointGroup = new MirroringEndpointGroup(\"defaultMirroringEndpointGroup\", MirroringEndpointGroupArgs.builder()\n .mirroringEndpointGroupId(\"my-eg\")\n .location(\"global\")\n .mirroringDeploymentGroup(defaultMirroringDeploymentGroup.id())\n .build());\n\n var defaultSecurityProfile = new SecurityProfile(\"defaultSecurityProfile\", SecurityProfileArgs.builder()\n .name(\"my-security-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"CUSTOM_MIRRORING\")\n .customMirroringProfile(SecurityProfileCustomMirroringProfileArgs.builder()\n .mirroringEndpointGroup(defaultMirroringEndpointGroup.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n defaultMirroringDeploymentGroup:\n type: gcp:networksecurity:MirroringDeploymentGroup\n name: default\n properties:\n mirroringDeploymentGroupId: my-dg\n location: global\n network: ${default.id}\n defaultMirroringEndpointGroup:\n type: gcp:networksecurity:MirroringEndpointGroup\n name: default\n properties:\n mirroringEndpointGroupId: my-eg\n location: global\n mirroringDeploymentGroup: ${defaultMirroringDeploymentGroup.id}\n defaultSecurityProfile:\n type: gcp:networksecurity:SecurityProfile\n name: default\n properties:\n name: my-security-profile\n parent: organizations/123456789\n description: my description\n type: CUSTOM_MIRRORING\n customMirroringProfile:\n mirroringEndpointGroup: ${defaultMirroringEndpointGroup.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Security Profile Intercept\n\n\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: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst defaultInterceptDeploymentGroup = new gcp.networksecurity.InterceptDeploymentGroup(\"default\", {\n interceptDeploymentGroupId: \"my-dg\",\n location: \"global\",\n network: _default.id,\n});\nconst defaultInterceptEndpointGroup = new gcp.networksecurity.InterceptEndpointGroup(\"default\", {\n interceptEndpointGroupId: \"my-eg\",\n location: \"global\",\n interceptDeploymentGroup: defaultInterceptDeploymentGroup.id,\n});\nconst defaultSecurityProfile = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"my-security-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"CUSTOM_INTERCEPT\",\n customInterceptProfile: {\n interceptEndpointGroup: defaultInterceptEndpointGroup.id,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"my-network\",\n auto_create_subnetworks=False)\ndefault_intercept_deployment_group = gcp.networksecurity.InterceptDeploymentGroup(\"default\",\n intercept_deployment_group_id=\"my-dg\",\n location=\"global\",\n network=default.id)\ndefault_intercept_endpoint_group = gcp.networksecurity.InterceptEndpointGroup(\"default\",\n intercept_endpoint_group_id=\"my-eg\",\n location=\"global\",\n intercept_deployment_group=default_intercept_deployment_group.id)\ndefault_security_profile = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"my-security-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"CUSTOM_INTERCEPT\",\n custom_intercept_profile={\n \"intercept_endpoint_group\": default_intercept_endpoint_group.id,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultInterceptDeploymentGroup = new Gcp.NetworkSecurity.InterceptDeploymentGroup(\"default\", new()\n {\n InterceptDeploymentGroupId = \"my-dg\",\n Location = \"global\",\n Network = @default.Id,\n });\n\n var defaultInterceptEndpointGroup = new Gcp.NetworkSecurity.InterceptEndpointGroup(\"default\", new()\n {\n InterceptEndpointGroupId = \"my-eg\",\n Location = \"global\",\n InterceptDeploymentGroup = defaultInterceptDeploymentGroup.Id,\n });\n\n var defaultSecurityProfile = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"my-security-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"CUSTOM_INTERCEPT\",\n CustomInterceptProfile = new Gcp.NetworkSecurity.Inputs.SecurityProfileCustomInterceptProfileArgs\n {\n InterceptEndpointGroup = defaultInterceptEndpointGroup.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-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_default, err := compute.NewNetwork(ctx, \"default\", \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\tdefaultInterceptDeploymentGroup, err := networksecurity.NewInterceptDeploymentGroup(ctx, \"default\", \u0026networksecurity.InterceptDeploymentGroupArgs{\n\t\t\tInterceptDeploymentGroupId: pulumi.String(\"my-dg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultInterceptEndpointGroup, err := networksecurity.NewInterceptEndpointGroup(ctx, \"default\", \u0026networksecurity.InterceptEndpointGroupArgs{\n\t\t\tInterceptEndpointGroupId: pulumi.String(\"my-eg\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tInterceptDeploymentGroup: defaultInterceptDeploymentGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"my-security-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"CUSTOM_INTERCEPT\"),\n\t\t\tCustomInterceptProfile: \u0026networksecurity.SecurityProfileCustomInterceptProfileArgs{\n\t\t\t\tInterceptEndpointGroup: defaultInterceptEndpointGroup.ID(),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.networksecurity.InterceptDeploymentGroup;\nimport com.pulumi.gcp.networksecurity.InterceptDeploymentGroupArgs;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroup;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroupArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.inputs.SecurityProfileCustomInterceptProfileArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 .autoCreateSubnetworks(false)\n .build());\n\n var defaultInterceptDeploymentGroup = new InterceptDeploymentGroup(\"defaultInterceptDeploymentGroup\", InterceptDeploymentGroupArgs.builder()\n .interceptDeploymentGroupId(\"my-dg\")\n .location(\"global\")\n .network(default_.id())\n .build());\n\n var defaultInterceptEndpointGroup = new InterceptEndpointGroup(\"defaultInterceptEndpointGroup\", InterceptEndpointGroupArgs.builder()\n .interceptEndpointGroupId(\"my-eg\")\n .location(\"global\")\n .interceptDeploymentGroup(defaultInterceptDeploymentGroup.id())\n .build());\n\n var defaultSecurityProfile = new SecurityProfile(\"defaultSecurityProfile\", SecurityProfileArgs.builder()\n .name(\"my-security-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"CUSTOM_INTERCEPT\")\n .customInterceptProfile(SecurityProfileCustomInterceptProfileArgs.builder()\n .interceptEndpointGroup(defaultInterceptEndpointGroup.id())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n defaultInterceptDeploymentGroup:\n type: gcp:networksecurity:InterceptDeploymentGroup\n name: default\n properties:\n interceptDeploymentGroupId: my-dg\n location: global\n network: ${default.id}\n defaultInterceptEndpointGroup:\n type: gcp:networksecurity:InterceptEndpointGroup\n name: default\n properties:\n interceptEndpointGroupId: my-eg\n location: global\n interceptDeploymentGroup: ${defaultInterceptDeploymentGroup.id}\n defaultSecurityProfile:\n type: gcp:networksecurity:SecurityProfile\n name: default\n properties:\n name: my-security-profile\n parent: organizations/123456789\n description: my description\n type: CUSTOM_INTERCEPT\n customInterceptProfile:\n interceptEndpointGroup: ${defaultInterceptEndpointGroup.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurityProfile can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/{{location}}/securityProfiles/{{name}}`\n\nWhen using the `pulumi import` command, SecurityProfile can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/securityProfile:SecurityProfile default {{parent}}/locations/{{location}}/securityProfiles/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -255375,7 +255375,7 @@ } }, "gcp:networksecurity/securityProfileGroup:SecurityProfileGroup": { - "description": "A security profile group defines a container for security profiles.\n\n\nTo get more information about SecurityProfileGroup, see:\n\n* [API documentation](https://cloud.google.com/firewall/docs/reference/network-security/rest/v1/organizations.locations.securityProfileGroups)\n* How-to Guides\n * [Create and manage security profile groups](https://cloud.google.com/firewall/docs/configure-security-profile-groups)\n * [Security profile groups overview](https://cloud.google.com/firewall/docs/about-security-profile-groups)\n\n## Example Usage\n\n### Network Security Security Profile 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 securityProfile = new gcp.networksecurity.SecurityProfile(\"security_profile\", {\n name: \"sec-profile\",\n type: \"THREAT_PREVENTION\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst _default = new gcp.networksecurity.SecurityProfileGroup(\"default\", {\n name: \"sec-profile-group\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n threatPreventionProfile: securityProfile.id,\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecurity_profile = gcp.networksecurity.SecurityProfile(\"security_profile\",\n name=\"sec-profile\",\n type=\"THREAT_PREVENTION\",\n parent=\"organizations/123456789\",\n location=\"global\")\ndefault = gcp.networksecurity.SecurityProfileGroup(\"default\",\n name=\"sec-profile-group\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n threat_prevention_profile=security_profile.id,\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var securityProfile = new Gcp.NetworkSecurity.SecurityProfile(\"security_profile\", new()\n {\n Name = \"sec-profile\",\n Type = \"THREAT_PREVENTION\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var @default = new Gcp.NetworkSecurity.SecurityProfileGroup(\"default\", new()\n {\n Name = \"sec-profile-group\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n ThreatPreventionProfile = securityProfile.Id,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/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\tsecurityProfile, err := networksecurity.NewSecurityProfile(ctx, \"security_profile\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"sec-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\t_, err = networksecurity.NewSecurityProfileGroup(ctx, \"default\", \u0026networksecurity.SecurityProfileGroupArgs{\n\t\t\tName: pulumi.String(\"sec-profile-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tThreatPreventionProfile: securityProfile.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroup;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var securityProfile = new SecurityProfile(\"securityProfile\", SecurityProfileArgs.builder()\n .name(\"sec-profile\")\n .type(\"THREAT_PREVENTION\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var default_ = new SecurityProfileGroup(\"default\", SecurityProfileGroupArgs.builder()\n .name(\"sec-profile-group\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .threatPreventionProfile(securityProfile.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:SecurityProfileGroup\n properties:\n name: sec-profile-group\n parent: organizations/123456789\n description: my description\n threatPreventionProfile: ${securityProfile.id}\n labels:\n foo: bar\n securityProfile:\n type: gcp:networksecurity:SecurityProfile\n name: security_profile\n properties:\n name: sec-profile\n type: THREAT_PREVENTION\n parent: organizations/123456789\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Security Profile Group Mirroring\n\n\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 defaultMirroringDeploymentGroup = new gcp.networksecurity.MirroringDeploymentGroup(\"default\", {\n mirroringDeploymentGroupId: \"deployment-group\",\n location: \"global\",\n network: _default.id,\n});\nconst defaultMirroringEndpointGroup = new gcp.networksecurity.MirroringEndpointGroup(\"default\", {\n mirroringEndpointGroupId: \"endpoint-group\",\n location: \"global\",\n mirroringDeploymentGroup: defaultMirroringDeploymentGroup.id,\n});\nconst defaultSecurityProfile = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"sec-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"CUSTOM_MIRRORING\",\n customMirroringProfile: {\n mirroringEndpointGroup: defaultMirroringEndpointGroup.id,\n },\n});\nconst defaultSecurityProfileGroup = new gcp.networksecurity.SecurityProfileGroup(\"default\", {\n name: \"sec-profile-group\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n customMirroringProfile: defaultSecurityProfile.id,\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_mirroring_deployment_group = gcp.networksecurity.MirroringDeploymentGroup(\"default\",\n mirroring_deployment_group_id=\"deployment-group\",\n location=\"global\",\n network=default.id)\ndefault_mirroring_endpoint_group = gcp.networksecurity.MirroringEndpointGroup(\"default\",\n mirroring_endpoint_group_id=\"endpoint-group\",\n location=\"global\",\n mirroring_deployment_group=default_mirroring_deployment_group.id)\ndefault_security_profile = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"sec-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"CUSTOM_MIRRORING\",\n custom_mirroring_profile={\n \"mirroring_endpoint_group\": default_mirroring_endpoint_group.id,\n })\ndefault_security_profile_group = gcp.networksecurity.SecurityProfileGroup(\"default\",\n name=\"sec-profile-group\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n custom_mirroring_profile=default_security_profile.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultMirroringDeploymentGroup = new Gcp.NetworkSecurity.MirroringDeploymentGroup(\"default\", new()\n {\n MirroringDeploymentGroupId = \"deployment-group\",\n Location = \"global\",\n Network = @default.Id,\n });\n\n var defaultMirroringEndpointGroup = new Gcp.NetworkSecurity.MirroringEndpointGroup(\"default\", new()\n {\n MirroringEndpointGroupId = \"endpoint-group\",\n Location = \"global\",\n MirroringDeploymentGroup = defaultMirroringDeploymentGroup.Id,\n });\n\n var defaultSecurityProfile = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"sec-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"CUSTOM_MIRRORING\",\n CustomMirroringProfile = new Gcp.NetworkSecurity.Inputs.SecurityProfileCustomMirroringProfileArgs\n {\n MirroringEndpointGroup = defaultMirroringEndpointGroup.Id,\n },\n });\n\n var defaultSecurityProfileGroup = new Gcp.NetworkSecurity.SecurityProfileGroup(\"default\", new()\n {\n Name = \"sec-profile-group\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n CustomMirroringProfile = defaultSecurityProfile.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/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 := 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\tdefaultMirroringDeploymentGroup, err := networksecurity.NewMirroringDeploymentGroup(ctx, \"default\", \u0026networksecurity.MirroringDeploymentGroupArgs{\n\t\t\tMirroringDeploymentGroupId: pulumi.String(\"deployment-group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultMirroringEndpointGroup, err := networksecurity.NewMirroringEndpointGroup(ctx, \"default\", \u0026networksecurity.MirroringEndpointGroupArgs{\n\t\t\tMirroringEndpointGroupId: pulumi.String(\"endpoint-group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tMirroringDeploymentGroup: defaultMirroringDeploymentGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSecurityProfile, err := networksecurity.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"sec-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"CUSTOM_MIRRORING\"),\n\t\t\tCustomMirroringProfile: \u0026networksecurity.SecurityProfileCustomMirroringProfileArgs{\n\t\t\t\tMirroringEndpointGroup: defaultMirroringEndpointGroup.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 = networksecurity.NewSecurityProfileGroup(ctx, \"default\", \u0026networksecurity.SecurityProfileGroupArgs{\n\t\t\tName: pulumi.String(\"sec-profile-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tCustomMirroringProfile: defaultSecurityProfile.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.networksecurity.MirroringDeploymentGroup;\nimport com.pulumi.gcp.networksecurity.MirroringDeploymentGroupArgs;\nimport com.pulumi.gcp.networksecurity.MirroringEndpointGroup;\nimport com.pulumi.gcp.networksecurity.MirroringEndpointGroupArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.inputs.SecurityProfileCustomMirroringProfileArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroup;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 defaultMirroringDeploymentGroup = new MirroringDeploymentGroup(\"defaultMirroringDeploymentGroup\", MirroringDeploymentGroupArgs.builder()\n .mirroringDeploymentGroupId(\"deployment-group\")\n .location(\"global\")\n .network(default_.id())\n .build());\n\n var defaultMirroringEndpointGroup = new MirroringEndpointGroup(\"defaultMirroringEndpointGroup\", MirroringEndpointGroupArgs.builder()\n .mirroringEndpointGroupId(\"endpoint-group\")\n .location(\"global\")\n .mirroringDeploymentGroup(defaultMirroringDeploymentGroup.id())\n .build());\n\n var defaultSecurityProfile = new SecurityProfile(\"defaultSecurityProfile\", SecurityProfileArgs.builder()\n .name(\"sec-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"CUSTOM_MIRRORING\")\n .customMirroringProfile(SecurityProfileCustomMirroringProfileArgs.builder()\n .mirroringEndpointGroup(defaultMirroringEndpointGroup.id())\n .build())\n .build());\n\n var defaultSecurityProfileGroup = new SecurityProfileGroup(\"defaultSecurityProfileGroup\", SecurityProfileGroupArgs.builder()\n .name(\"sec-profile-group\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .customMirroringProfile(defaultSecurityProfile.id())\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 defaultMirroringDeploymentGroup:\n type: gcp:networksecurity:MirroringDeploymentGroup\n name: default\n properties:\n mirroringDeploymentGroupId: deployment-group\n location: global\n network: ${default.id}\n defaultMirroringEndpointGroup:\n type: gcp:networksecurity:MirroringEndpointGroup\n name: default\n properties:\n mirroringEndpointGroupId: endpoint-group\n location: global\n mirroringDeploymentGroup: ${defaultMirroringDeploymentGroup.id}\n defaultSecurityProfile:\n type: gcp:networksecurity:SecurityProfile\n name: default\n properties:\n name: sec-profile\n parent: organizations/123456789\n description: my description\n type: CUSTOM_MIRRORING\n customMirroringProfile:\n mirroringEndpointGroup: ${defaultMirroringEndpointGroup.id}\n defaultSecurityProfileGroup:\n type: gcp:networksecurity:SecurityProfileGroup\n name: default\n properties:\n name: sec-profile-group\n parent: organizations/123456789\n description: my description\n customMirroringProfile: ${defaultSecurityProfile.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Security Profile Group Intercept\n\n\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 defaultInterceptDeploymentGroup = new gcp.networksecurity.InterceptDeploymentGroup(\"default\", {\n interceptDeploymentGroupId: \"deployment-group\",\n location: \"global\",\n network: _default.id,\n});\nconst defaultInterceptEndpointGroup = new gcp.networksecurity.InterceptEndpointGroup(\"default\", {\n interceptEndpointGroupId: \"endpoint-group\",\n location: \"global\",\n interceptDeploymentGroup: defaultInterceptDeploymentGroup.id,\n});\nconst defaultSecurityProfile = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"sec-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"CUSTOM_INTERCEPT\",\n customInterceptProfile: {\n interceptEndpointGroup: defaultInterceptEndpointGroup.id,\n },\n});\nconst defaultSecurityProfileGroup = new gcp.networksecurity.SecurityProfileGroup(\"default\", {\n name: \"sec-profile-group\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n customInterceptProfile: defaultSecurityProfile.id,\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_intercept_deployment_group = gcp.networksecurity.InterceptDeploymentGroup(\"default\",\n intercept_deployment_group_id=\"deployment-group\",\n location=\"global\",\n network=default.id)\ndefault_intercept_endpoint_group = gcp.networksecurity.InterceptEndpointGroup(\"default\",\n intercept_endpoint_group_id=\"endpoint-group\",\n location=\"global\",\n intercept_deployment_group=default_intercept_deployment_group.id)\ndefault_security_profile = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"sec-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"CUSTOM_INTERCEPT\",\n custom_intercept_profile={\n \"intercept_endpoint_group\": default_intercept_endpoint_group.id,\n })\ndefault_security_profile_group = gcp.networksecurity.SecurityProfileGroup(\"default\",\n name=\"sec-profile-group\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n custom_intercept_profile=default_security_profile.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultInterceptDeploymentGroup = new Gcp.NetworkSecurity.InterceptDeploymentGroup(\"default\", new()\n {\n InterceptDeploymentGroupId = \"deployment-group\",\n Location = \"global\",\n Network = @default.Id,\n });\n\n var defaultInterceptEndpointGroup = new Gcp.NetworkSecurity.InterceptEndpointGroup(\"default\", new()\n {\n InterceptEndpointGroupId = \"endpoint-group\",\n Location = \"global\",\n InterceptDeploymentGroup = defaultInterceptDeploymentGroup.Id,\n });\n\n var defaultSecurityProfile = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"sec-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"CUSTOM_INTERCEPT\",\n CustomInterceptProfile = new Gcp.NetworkSecurity.Inputs.SecurityProfileCustomInterceptProfileArgs\n {\n InterceptEndpointGroup = defaultInterceptEndpointGroup.Id,\n },\n });\n\n var defaultSecurityProfileGroup = new Gcp.NetworkSecurity.SecurityProfileGroup(\"default\", new()\n {\n Name = \"sec-profile-group\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n CustomInterceptProfile = defaultSecurityProfile.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/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 := 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\tdefaultInterceptDeploymentGroup, err := networksecurity.NewInterceptDeploymentGroup(ctx, \"default\", \u0026networksecurity.InterceptDeploymentGroupArgs{\n\t\t\tInterceptDeploymentGroupId: pulumi.String(\"deployment-group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultInterceptEndpointGroup, err := networksecurity.NewInterceptEndpointGroup(ctx, \"default\", \u0026networksecurity.InterceptEndpointGroupArgs{\n\t\t\tInterceptEndpointGroupId: pulumi.String(\"endpoint-group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tInterceptDeploymentGroup: defaultInterceptDeploymentGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSecurityProfile, err := networksecurity.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"sec-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"CUSTOM_INTERCEPT\"),\n\t\t\tCustomInterceptProfile: \u0026networksecurity.SecurityProfileCustomInterceptProfileArgs{\n\t\t\t\tInterceptEndpointGroup: defaultInterceptEndpointGroup.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 = networksecurity.NewSecurityProfileGroup(ctx, \"default\", \u0026networksecurity.SecurityProfileGroupArgs{\n\t\t\tName: pulumi.String(\"sec-profile-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tCustomInterceptProfile: defaultSecurityProfile.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.networksecurity.InterceptDeploymentGroup;\nimport com.pulumi.gcp.networksecurity.InterceptDeploymentGroupArgs;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroup;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroupArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.inputs.SecurityProfileCustomInterceptProfileArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroup;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 defaultInterceptDeploymentGroup = new InterceptDeploymentGroup(\"defaultInterceptDeploymentGroup\", InterceptDeploymentGroupArgs.builder()\n .interceptDeploymentGroupId(\"deployment-group\")\n .location(\"global\")\n .network(default_.id())\n .build());\n\n var defaultInterceptEndpointGroup = new InterceptEndpointGroup(\"defaultInterceptEndpointGroup\", InterceptEndpointGroupArgs.builder()\n .interceptEndpointGroupId(\"endpoint-group\")\n .location(\"global\")\n .interceptDeploymentGroup(defaultInterceptDeploymentGroup.id())\n .build());\n\n var defaultSecurityProfile = new SecurityProfile(\"defaultSecurityProfile\", SecurityProfileArgs.builder()\n .name(\"sec-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"CUSTOM_INTERCEPT\")\n .customInterceptProfile(SecurityProfileCustomInterceptProfileArgs.builder()\n .interceptEndpointGroup(defaultInterceptEndpointGroup.id())\n .build())\n .build());\n\n var defaultSecurityProfileGroup = new SecurityProfileGroup(\"defaultSecurityProfileGroup\", SecurityProfileGroupArgs.builder()\n .name(\"sec-profile-group\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .customInterceptProfile(defaultSecurityProfile.id())\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 defaultInterceptDeploymentGroup:\n type: gcp:networksecurity:InterceptDeploymentGroup\n name: default\n properties:\n interceptDeploymentGroupId: deployment-group\n location: global\n network: ${default.id}\n defaultInterceptEndpointGroup:\n type: gcp:networksecurity:InterceptEndpointGroup\n name: default\n properties:\n interceptEndpointGroupId: endpoint-group\n location: global\n interceptDeploymentGroup: ${defaultInterceptDeploymentGroup.id}\n defaultSecurityProfile:\n type: gcp:networksecurity:SecurityProfile\n name: default\n properties:\n name: sec-profile\n parent: organizations/123456789\n description: my description\n type: CUSTOM_INTERCEPT\n customInterceptProfile:\n interceptEndpointGroup: ${defaultInterceptEndpointGroup.id}\n defaultSecurityProfileGroup:\n type: gcp:networksecurity:SecurityProfileGroup\n name: default\n properties:\n name: sec-profile-group\n parent: organizations/123456789\n description: my description\n customInterceptProfile: ${defaultSecurityProfile.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurityProfileGroup can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/{{location}}/securityProfileGroups/{{name}}`\n\nWhen using the `pulumi import` command, SecurityProfileGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/securityProfileGroup:SecurityProfileGroup default {{parent}}/locations/{{location}}/securityProfileGroups/{{name}}\n```\n\n", + "description": "A security profile group defines a container for security profiles.\n\n\nTo get more information about SecurityProfileGroup, see:\n\n* [API documentation](https://cloud.google.com/firewall/docs/reference/network-security/rest/v1/organizations.locations.securityProfileGroups)\n* How-to Guides\n * [Create and manage security profile groups](https://cloud.google.com/firewall/docs/configure-security-profile-groups)\n * [Security profile groups overview](https://cloud.google.com/firewall/docs/about-security-profile-groups)\n\n## Example Usage\n\n### Network Security Security Profile 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 securityProfile = new gcp.networksecurity.SecurityProfile(\"security_profile\", {\n name: \"sec-profile\",\n type: \"THREAT_PREVENTION\",\n parent: \"organizations/123456789\",\n location: \"global\",\n});\nconst _default = new gcp.networksecurity.SecurityProfileGroup(\"default\", {\n name: \"sec-profile-group\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n threatPreventionProfile: securityProfile.id,\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecurity_profile = gcp.networksecurity.SecurityProfile(\"security_profile\",\n name=\"sec-profile\",\n type=\"THREAT_PREVENTION\",\n parent=\"organizations/123456789\",\n location=\"global\")\ndefault = gcp.networksecurity.SecurityProfileGroup(\"default\",\n name=\"sec-profile-group\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n threat_prevention_profile=security_profile.id,\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var securityProfile = new Gcp.NetworkSecurity.SecurityProfile(\"security_profile\", new()\n {\n Name = \"sec-profile\",\n Type = \"THREAT_PREVENTION\",\n Parent = \"organizations/123456789\",\n Location = \"global\",\n });\n\n var @default = new Gcp.NetworkSecurity.SecurityProfileGroup(\"default\", new()\n {\n Name = \"sec-profile-group\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n ThreatPreventionProfile = securityProfile.Id,\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/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\tsecurityProfile, err := networksecurity.NewSecurityProfile(ctx, \"security_profile\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"sec-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\t_, err = networksecurity.NewSecurityProfileGroup(ctx, \"default\", \u0026networksecurity.SecurityProfileGroupArgs{\n\t\t\tName: pulumi.String(\"sec-profile-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tThreatPreventionProfile: securityProfile.ID(),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroup;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var securityProfile = new SecurityProfile(\"securityProfile\", SecurityProfileArgs.builder()\n .name(\"sec-profile\")\n .type(\"THREAT_PREVENTION\")\n .parent(\"organizations/123456789\")\n .location(\"global\")\n .build());\n\n var default_ = new SecurityProfileGroup(\"default\", SecurityProfileGroupArgs.builder()\n .name(\"sec-profile-group\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .threatPreventionProfile(securityProfile.id())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networksecurity:SecurityProfileGroup\n properties:\n name: sec-profile-group\n parent: organizations/123456789\n description: my description\n threatPreventionProfile: ${securityProfile.id}\n labels:\n foo: bar\n securityProfile:\n type: gcp:networksecurity:SecurityProfile\n name: security_profile\n properties:\n name: sec-profile\n type: THREAT_PREVENTION\n parent: organizations/123456789\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Security Profile Group Mirroring\n\n\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 defaultMirroringDeploymentGroup = new gcp.networksecurity.MirroringDeploymentGroup(\"default\", {\n mirroringDeploymentGroupId: \"deployment-group\",\n location: \"global\",\n network: _default.id,\n});\nconst defaultMirroringEndpointGroup = new gcp.networksecurity.MirroringEndpointGroup(\"default\", {\n mirroringEndpointGroupId: \"endpoint-group\",\n location: \"global\",\n mirroringDeploymentGroup: defaultMirroringDeploymentGroup.id,\n});\nconst defaultSecurityProfile = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"sec-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"CUSTOM_MIRRORING\",\n customMirroringProfile: {\n mirroringEndpointGroup: defaultMirroringEndpointGroup.id,\n },\n});\nconst defaultSecurityProfileGroup = new gcp.networksecurity.SecurityProfileGroup(\"default\", {\n name: \"sec-profile-group\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n customMirroringProfile: defaultSecurityProfile.id,\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_mirroring_deployment_group = gcp.networksecurity.MirroringDeploymentGroup(\"default\",\n mirroring_deployment_group_id=\"deployment-group\",\n location=\"global\",\n network=default.id)\ndefault_mirroring_endpoint_group = gcp.networksecurity.MirroringEndpointGroup(\"default\",\n mirroring_endpoint_group_id=\"endpoint-group\",\n location=\"global\",\n mirroring_deployment_group=default_mirroring_deployment_group.id)\ndefault_security_profile = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"sec-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"CUSTOM_MIRRORING\",\n custom_mirroring_profile={\n \"mirroring_endpoint_group\": default_mirroring_endpoint_group.id,\n })\ndefault_security_profile_group = gcp.networksecurity.SecurityProfileGroup(\"default\",\n name=\"sec-profile-group\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n custom_mirroring_profile=default_security_profile.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultMirroringDeploymentGroup = new Gcp.NetworkSecurity.MirroringDeploymentGroup(\"default\", new()\n {\n MirroringDeploymentGroupId = \"deployment-group\",\n Location = \"global\",\n Network = @default.Id,\n });\n\n var defaultMirroringEndpointGroup = new Gcp.NetworkSecurity.MirroringEndpointGroup(\"default\", new()\n {\n MirroringEndpointGroupId = \"endpoint-group\",\n Location = \"global\",\n MirroringDeploymentGroup = defaultMirroringDeploymentGroup.Id,\n });\n\n var defaultSecurityProfile = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"sec-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"CUSTOM_MIRRORING\",\n CustomMirroringProfile = new Gcp.NetworkSecurity.Inputs.SecurityProfileCustomMirroringProfileArgs\n {\n MirroringEndpointGroup = defaultMirroringEndpointGroup.Id,\n },\n });\n\n var defaultSecurityProfileGroup = new Gcp.NetworkSecurity.SecurityProfileGroup(\"default\", new()\n {\n Name = \"sec-profile-group\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n CustomMirroringProfile = defaultSecurityProfile.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/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_default, 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\tdefaultMirroringDeploymentGroup, err := networksecurity.NewMirroringDeploymentGroup(ctx, \"default\", \u0026networksecurity.MirroringDeploymentGroupArgs{\n\t\t\tMirroringDeploymentGroupId: pulumi.String(\"deployment-group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultMirroringEndpointGroup, err := networksecurity.NewMirroringEndpointGroup(ctx, \"default\", \u0026networksecurity.MirroringEndpointGroupArgs{\n\t\t\tMirroringEndpointGroupId: pulumi.String(\"endpoint-group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tMirroringDeploymentGroup: defaultMirroringDeploymentGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSecurityProfile, err := networksecurity.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"sec-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"CUSTOM_MIRRORING\"),\n\t\t\tCustomMirroringProfile: \u0026networksecurity.SecurityProfileCustomMirroringProfileArgs{\n\t\t\t\tMirroringEndpointGroup: defaultMirroringEndpointGroup.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 = networksecurity.NewSecurityProfileGroup(ctx, \"default\", \u0026networksecurity.SecurityProfileGroupArgs{\n\t\t\tName: pulumi.String(\"sec-profile-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tCustomMirroringProfile: defaultSecurityProfile.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.networksecurity.MirroringDeploymentGroup;\nimport com.pulumi.gcp.networksecurity.MirroringDeploymentGroupArgs;\nimport com.pulumi.gcp.networksecurity.MirroringEndpointGroup;\nimport com.pulumi.gcp.networksecurity.MirroringEndpointGroupArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.inputs.SecurityProfileCustomMirroringProfileArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroup;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 defaultMirroringDeploymentGroup = new MirroringDeploymentGroup(\"defaultMirroringDeploymentGroup\", MirroringDeploymentGroupArgs.builder()\n .mirroringDeploymentGroupId(\"deployment-group\")\n .location(\"global\")\n .network(default_.id())\n .build());\n\n var defaultMirroringEndpointGroup = new MirroringEndpointGroup(\"defaultMirroringEndpointGroup\", MirroringEndpointGroupArgs.builder()\n .mirroringEndpointGroupId(\"endpoint-group\")\n .location(\"global\")\n .mirroringDeploymentGroup(defaultMirroringDeploymentGroup.id())\n .build());\n\n var defaultSecurityProfile = new SecurityProfile(\"defaultSecurityProfile\", SecurityProfileArgs.builder()\n .name(\"sec-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"CUSTOM_MIRRORING\")\n .customMirroringProfile(SecurityProfileCustomMirroringProfileArgs.builder()\n .mirroringEndpointGroup(defaultMirroringEndpointGroup.id())\n .build())\n .build());\n\n var defaultSecurityProfileGroup = new SecurityProfileGroup(\"defaultSecurityProfileGroup\", SecurityProfileGroupArgs.builder()\n .name(\"sec-profile-group\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .customMirroringProfile(defaultSecurityProfile.id())\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 defaultMirroringDeploymentGroup:\n type: gcp:networksecurity:MirroringDeploymentGroup\n name: default\n properties:\n mirroringDeploymentGroupId: deployment-group\n location: global\n network: ${default.id}\n defaultMirroringEndpointGroup:\n type: gcp:networksecurity:MirroringEndpointGroup\n name: default\n properties:\n mirroringEndpointGroupId: endpoint-group\n location: global\n mirroringDeploymentGroup: ${defaultMirroringDeploymentGroup.id}\n defaultSecurityProfile:\n type: gcp:networksecurity:SecurityProfile\n name: default\n properties:\n name: sec-profile\n parent: organizations/123456789\n description: my description\n type: CUSTOM_MIRRORING\n customMirroringProfile:\n mirroringEndpointGroup: ${defaultMirroringEndpointGroup.id}\n defaultSecurityProfileGroup:\n type: gcp:networksecurity:SecurityProfileGroup\n name: default\n properties:\n name: sec-profile-group\n parent: organizations/123456789\n description: my description\n customMirroringProfile: ${defaultSecurityProfile.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Security Security Profile Group Intercept\n\n\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 defaultInterceptDeploymentGroup = new gcp.networksecurity.InterceptDeploymentGroup(\"default\", {\n interceptDeploymentGroupId: \"deployment-group\",\n location: \"global\",\n network: _default.id,\n});\nconst defaultInterceptEndpointGroup = new gcp.networksecurity.InterceptEndpointGroup(\"default\", {\n interceptEndpointGroupId: \"endpoint-group\",\n location: \"global\",\n interceptDeploymentGroup: defaultInterceptDeploymentGroup.id,\n});\nconst defaultSecurityProfile = new gcp.networksecurity.SecurityProfile(\"default\", {\n name: \"sec-profile\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n type: \"CUSTOM_INTERCEPT\",\n customInterceptProfile: {\n interceptEndpointGroup: defaultInterceptEndpointGroup.id,\n },\n});\nconst defaultSecurityProfileGroup = new gcp.networksecurity.SecurityProfileGroup(\"default\", {\n name: \"sec-profile-group\",\n parent: \"organizations/123456789\",\n description: \"my description\",\n customInterceptProfile: defaultSecurityProfile.id,\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_intercept_deployment_group = gcp.networksecurity.InterceptDeploymentGroup(\"default\",\n intercept_deployment_group_id=\"deployment-group\",\n location=\"global\",\n network=default.id)\ndefault_intercept_endpoint_group = gcp.networksecurity.InterceptEndpointGroup(\"default\",\n intercept_endpoint_group_id=\"endpoint-group\",\n location=\"global\",\n intercept_deployment_group=default_intercept_deployment_group.id)\ndefault_security_profile = gcp.networksecurity.SecurityProfile(\"default\",\n name=\"sec-profile\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n type=\"CUSTOM_INTERCEPT\",\n custom_intercept_profile={\n \"intercept_endpoint_group\": default_intercept_endpoint_group.id,\n })\ndefault_security_profile_group = gcp.networksecurity.SecurityProfileGroup(\"default\",\n name=\"sec-profile-group\",\n parent=\"organizations/123456789\",\n description=\"my description\",\n custom_intercept_profile=default_security_profile.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultInterceptDeploymentGroup = new Gcp.NetworkSecurity.InterceptDeploymentGroup(\"default\", new()\n {\n InterceptDeploymentGroupId = \"deployment-group\",\n Location = \"global\",\n Network = @default.Id,\n });\n\n var defaultInterceptEndpointGroup = new Gcp.NetworkSecurity.InterceptEndpointGroup(\"default\", new()\n {\n InterceptEndpointGroupId = \"endpoint-group\",\n Location = \"global\",\n InterceptDeploymentGroup = defaultInterceptDeploymentGroup.Id,\n });\n\n var defaultSecurityProfile = new Gcp.NetworkSecurity.SecurityProfile(\"default\", new()\n {\n Name = \"sec-profile\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n Type = \"CUSTOM_INTERCEPT\",\n CustomInterceptProfile = new Gcp.NetworkSecurity.Inputs.SecurityProfileCustomInterceptProfileArgs\n {\n InterceptEndpointGroup = defaultInterceptEndpointGroup.Id,\n },\n });\n\n var defaultSecurityProfileGroup = new Gcp.NetworkSecurity.SecurityProfileGroup(\"default\", new()\n {\n Name = \"sec-profile-group\",\n Parent = \"organizations/123456789\",\n Description = \"my description\",\n CustomInterceptProfile = defaultSecurityProfile.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/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_default, 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\tdefaultInterceptDeploymentGroup, err := networksecurity.NewInterceptDeploymentGroup(ctx, \"default\", \u0026networksecurity.InterceptDeploymentGroupArgs{\n\t\t\tInterceptDeploymentGroupId: pulumi.String(\"deployment-group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tNetwork: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultInterceptEndpointGroup, err := networksecurity.NewInterceptEndpointGroup(ctx, \"default\", \u0026networksecurity.InterceptEndpointGroupArgs{\n\t\t\tInterceptEndpointGroupId: pulumi.String(\"endpoint-group\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tInterceptDeploymentGroup: defaultInterceptDeploymentGroup.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSecurityProfile, err := networksecurity.NewSecurityProfile(ctx, \"default\", \u0026networksecurity.SecurityProfileArgs{\n\t\t\tName: pulumi.String(\"sec-profile\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"CUSTOM_INTERCEPT\"),\n\t\t\tCustomInterceptProfile: \u0026networksecurity.SecurityProfileCustomInterceptProfileArgs{\n\t\t\t\tInterceptEndpointGroup: defaultInterceptEndpointGroup.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 = networksecurity.NewSecurityProfileGroup(ctx, \"default\", \u0026networksecurity.SecurityProfileGroupArgs{\n\t\t\tName: pulumi.String(\"sec-profile-group\"),\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tCustomInterceptProfile: defaultSecurityProfile.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.networksecurity.InterceptDeploymentGroup;\nimport com.pulumi.gcp.networksecurity.InterceptDeploymentGroupArgs;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroup;\nimport com.pulumi.gcp.networksecurity.InterceptEndpointGroupArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfile;\nimport com.pulumi.gcp.networksecurity.SecurityProfileArgs;\nimport com.pulumi.gcp.networksecurity.inputs.SecurityProfileCustomInterceptProfileArgs;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroup;\nimport com.pulumi.gcp.networksecurity.SecurityProfileGroupArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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 defaultInterceptDeploymentGroup = new InterceptDeploymentGroup(\"defaultInterceptDeploymentGroup\", InterceptDeploymentGroupArgs.builder()\n .interceptDeploymentGroupId(\"deployment-group\")\n .location(\"global\")\n .network(default_.id())\n .build());\n\n var defaultInterceptEndpointGroup = new InterceptEndpointGroup(\"defaultInterceptEndpointGroup\", InterceptEndpointGroupArgs.builder()\n .interceptEndpointGroupId(\"endpoint-group\")\n .location(\"global\")\n .interceptDeploymentGroup(defaultInterceptDeploymentGroup.id())\n .build());\n\n var defaultSecurityProfile = new SecurityProfile(\"defaultSecurityProfile\", SecurityProfileArgs.builder()\n .name(\"sec-profile\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .type(\"CUSTOM_INTERCEPT\")\n .customInterceptProfile(SecurityProfileCustomInterceptProfileArgs.builder()\n .interceptEndpointGroup(defaultInterceptEndpointGroup.id())\n .build())\n .build());\n\n var defaultSecurityProfileGroup = new SecurityProfileGroup(\"defaultSecurityProfileGroup\", SecurityProfileGroupArgs.builder()\n .name(\"sec-profile-group\")\n .parent(\"organizations/123456789\")\n .description(\"my description\")\n .customInterceptProfile(defaultSecurityProfile.id())\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 defaultInterceptDeploymentGroup:\n type: gcp:networksecurity:InterceptDeploymentGroup\n name: default\n properties:\n interceptDeploymentGroupId: deployment-group\n location: global\n network: ${default.id}\n defaultInterceptEndpointGroup:\n type: gcp:networksecurity:InterceptEndpointGroup\n name: default\n properties:\n interceptEndpointGroupId: endpoint-group\n location: global\n interceptDeploymentGroup: ${defaultInterceptDeploymentGroup.id}\n defaultSecurityProfile:\n type: gcp:networksecurity:SecurityProfile\n name: default\n properties:\n name: sec-profile\n parent: organizations/123456789\n description: my description\n type: CUSTOM_INTERCEPT\n customInterceptProfile:\n interceptEndpointGroup: ${defaultInterceptEndpointGroup.id}\n defaultSecurityProfileGroup:\n type: gcp:networksecurity:SecurityProfileGroup\n name: default\n properties:\n name: sec-profile-group\n parent: organizations/123456789\n description: my description\n customInterceptProfile: ${defaultSecurityProfile.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSecurityProfileGroup can be imported using any of these accepted formats:\n\n* `{{parent}}/locations/{{location}}/securityProfileGroups/{{name}}`\n\nWhen using the `pulumi import` command, SecurityProfileGroup can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networksecurity/securityProfileGroup:SecurityProfileGroup default {{parent}}/locations/{{location}}/securityProfileGroups/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -255741,7 +255741,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: \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", + "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_default, 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_default, 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", @@ -256023,7 +256023,7 @@ } }, "gcp:networkservices/authzExtension:AuthzExtension": { - "description": "AuthzExtension is a resource that allows traffic forwarding to a callout backend service to make an authorization decision.\n\n\nTo get more information about AuthzExtension, see:\n\n* [API documentation](https://cloud.google.com/service-extensions/docs/reference/rest/v1beta1/projects.locations.authzExtensions)\n\n## Example Usage\n\n### Network Services Authz Extension 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.RegionBackendService(\"default\", {\n name: \"authz-service\",\n project: \"my-project-name\",\n region: \"us-west1\",\n protocol: \"HTTP2\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n portName: \"grpc\",\n});\nconst defaultAuthzExtension = new gcp.networkservices.AuthzExtension(\"default\", {\n name: \"my-authz-ext\",\n project: \"my-project-name\",\n location: \"us-west1\",\n description: \"my description\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n authority: \"ext11.com\",\n service: _default.selfLink,\n timeout: \"0.1s\",\n failOpen: false,\n forwardHeaders: [\"Authorization\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionBackendService(\"default\",\n name=\"authz-service\",\n project=\"my-project-name\",\n region=\"us-west1\",\n protocol=\"HTTP2\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n port_name=\"grpc\")\ndefault_authz_extension = gcp.networkservices.AuthzExtension(\"default\",\n name=\"my-authz-ext\",\n project=\"my-project-name\",\n location=\"us-west1\",\n description=\"my description\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n authority=\"ext11.com\",\n service=default.self_link,\n timeout=\"0.1s\",\n fail_open=False,\n forward_headers=[\"Authorization\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"authz-service\",\n Project = \"my-project-name\",\n Region = \"us-west1\",\n Protocol = \"HTTP2\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n PortName = \"grpc\",\n });\n\n var defaultAuthzExtension = new Gcp.NetworkServices.AuthzExtension(\"default\", new()\n {\n Name = \"my-authz-ext\",\n Project = \"my-project-name\",\n Location = \"us-west1\",\n Description = \"my description\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n Authority = \"ext11.com\",\n Service = @default.SelfLink,\n Timeout = \"0.1s\",\n FailOpen = false,\n ForwardHeaders = new[]\n {\n \"Authorization\",\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/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 := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"authz-service\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRegion: pulumi.String(\"us-west1\"),\n\t\t\tProtocol: pulumi.String(\"HTTP2\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tPortName: pulumi.String(\"grpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewAuthzExtension(ctx, \"default\", \u0026networkservices.AuthzExtensionArgs{\n\t\t\tName: pulumi.String(\"my-authz-ext\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tAuthority: pulumi.String(\"ext11.com\"),\n\t\t\tService: _default.SelfLink,\n\t\t\tTimeout: pulumi.String(\"0.1s\"),\n\t\t\tFailOpen: pulumi.Bool(false),\n\t\t\tForwardHeaders: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Authorization\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.networkservices.AuthzExtension;\nimport com.pulumi.gcp.networkservices.AuthzExtensionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .name(\"authz-service\")\n .project(\"my-project-name\")\n .region(\"us-west1\")\n .protocol(\"HTTP2\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .portName(\"grpc\")\n .build());\n\n var defaultAuthzExtension = new AuthzExtension(\"defaultAuthzExtension\", AuthzExtensionArgs.builder()\n .name(\"my-authz-ext\")\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .description(\"my description\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .authority(\"ext11.com\")\n .service(default_.selfLink())\n .timeout(\"0.1s\")\n .failOpen(false)\n .forwardHeaders(\"Authorization\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n name: authz-service\n project: my-project-name\n region: us-west1\n protocol: HTTP2\n loadBalancingScheme: INTERNAL_MANAGED\n portName: grpc\n defaultAuthzExtension:\n type: gcp:networkservices:AuthzExtension\n name: default\n properties:\n name: my-authz-ext\n project: my-project-name\n location: us-west1\n description: my description\n loadBalancingScheme: INTERNAL_MANAGED\n authority: ext11.com\n service: ${default.selfLink}\n timeout: 0.1s\n failOpen: false\n forwardHeaders:\n - Authorization\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAuthzExtension can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/authzExtensions/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AuthzExtension can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/authzExtension:AuthzExtension default projects/{{project}}/locations/{{location}}/authzExtensions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/authzExtension:AuthzExtension default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/authzExtension:AuthzExtension default {{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/authzExtension:AuthzExtension default {{name}}\n```\n\n", + "description": "AuthzExtension is a resource that allows traffic forwarding to a callout backend service to make an authorization decision.\n\n\nTo get more information about AuthzExtension, see:\n\n* [API documentation](https://cloud.google.com/service-extensions/docs/reference/rest/v1beta1/projects.locations.authzExtensions)\n\n## Example Usage\n\n### Network Services Authz Extension 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.RegionBackendService(\"default\", {\n name: \"authz-service\",\n project: \"my-project-name\",\n region: \"us-west1\",\n protocol: \"HTTP2\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n portName: \"grpc\",\n});\nconst defaultAuthzExtension = new gcp.networkservices.AuthzExtension(\"default\", {\n name: \"my-authz-ext\",\n project: \"my-project-name\",\n location: \"us-west1\",\n description: \"my description\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n authority: \"ext11.com\",\n service: _default.selfLink,\n timeout: \"0.1s\",\n failOpen: false,\n forwardHeaders: [\"Authorization\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.RegionBackendService(\"default\",\n name=\"authz-service\",\n project=\"my-project-name\",\n region=\"us-west1\",\n protocol=\"HTTP2\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n port_name=\"grpc\")\ndefault_authz_extension = gcp.networkservices.AuthzExtension(\"default\",\n name=\"my-authz-ext\",\n project=\"my-project-name\",\n location=\"us-west1\",\n description=\"my description\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n authority=\"ext11.com\",\n service=default.self_link,\n timeout=\"0.1s\",\n fail_open=False,\n forward_headers=[\"Authorization\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.RegionBackendService(\"default\", new()\n {\n Name = \"authz-service\",\n Project = \"my-project-name\",\n Region = \"us-west1\",\n Protocol = \"HTTP2\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n PortName = \"grpc\",\n });\n\n var defaultAuthzExtension = new Gcp.NetworkServices.AuthzExtension(\"default\", new()\n {\n Name = \"my-authz-ext\",\n Project = \"my-project-name\",\n Location = \"us-west1\",\n Description = \"my description\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n Authority = \"ext11.com\",\n Service = @default.SelfLink,\n Timeout = \"0.1s\",\n FailOpen = false,\n ForwardHeaders = new[]\n {\n \"Authorization\",\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/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_default, err := compute.NewRegionBackendService(ctx, \"default\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"authz-service\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRegion: pulumi.String(\"us-west1\"),\n\t\t\tProtocol: pulumi.String(\"HTTP2\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tPortName: pulumi.String(\"grpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewAuthzExtension(ctx, \"default\", \u0026networkservices.AuthzExtensionArgs{\n\t\t\tName: pulumi.String(\"my-authz-ext\"),\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tAuthority: pulumi.String(\"ext11.com\"),\n\t\t\tService: _default.SelfLink,\n\t\t\tTimeout: pulumi.String(\"0.1s\"),\n\t\t\tFailOpen: pulumi.Bool(false),\n\t\t\tForwardHeaders: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"Authorization\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.networkservices.AuthzExtension;\nimport com.pulumi.gcp.networkservices.AuthzExtensionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new RegionBackendService(\"default\", RegionBackendServiceArgs.builder()\n .name(\"authz-service\")\n .project(\"my-project-name\")\n .region(\"us-west1\")\n .protocol(\"HTTP2\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .portName(\"grpc\")\n .build());\n\n var defaultAuthzExtension = new AuthzExtension(\"defaultAuthzExtension\", AuthzExtensionArgs.builder()\n .name(\"my-authz-ext\")\n .project(\"my-project-name\")\n .location(\"us-west1\")\n .description(\"my description\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .authority(\"ext11.com\")\n .service(default_.selfLink())\n .timeout(\"0.1s\")\n .failOpen(false)\n .forwardHeaders(\"Authorization\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:RegionBackendService\n properties:\n name: authz-service\n project: my-project-name\n region: us-west1\n protocol: HTTP2\n loadBalancingScheme: INTERNAL_MANAGED\n portName: grpc\n defaultAuthzExtension:\n type: gcp:networkservices:AuthzExtension\n name: default\n properties:\n name: my-authz-ext\n project: my-project-name\n location: us-west1\n description: my description\n loadBalancingScheme: INTERNAL_MANAGED\n authority: ext11.com\n service: ${default.selfLink}\n timeout: 0.1s\n failOpen: false\n forwardHeaders:\n - Authorization\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAuthzExtension can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/authzExtensions/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AuthzExtension can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/authzExtension:AuthzExtension default projects/{{project}}/locations/{{location}}/authzExtensions/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/authzExtension:AuthzExtension default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/authzExtension:AuthzExtension default {{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/authzExtension:AuthzExtension default {{name}}\n```\n\n", "properties": { "authority": { "type": "string", @@ -256290,7 +256290,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: \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", + "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\tsecret_basic, 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\tsecret_version_basic, 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", @@ -256444,7 +256444,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: \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", + "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\tsecret_basic, 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\tsecret_version_basic, 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", @@ -256692,7 +256692,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: \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", + "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\tsecret_basic, 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\tsecret_version_basic, 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", @@ -257147,7 +257147,7 @@ } }, "gcp:networkservices/gateway:Gateway": { - "description": "Gateway represents the configuration for a proxy, typically a load balancer.\nIt captures the ip:port over which the services are exposed by the proxy,\nalong with any policy configurations. Routes have reference to to Gateways\nto dictate how requests should be routed by this Gateway.\n\n\nTo get more information about Gateway, see:\n\n* [API documentation](https://cloud.google.com/traffic-director/docs/reference/network-services/rest/v1/projects.locations.gateways)\n\n## Example Usage\n\n### Network Services Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-gateway\",\n scope: \"default-scope-basic\",\n type: \"OPEN_MESH\",\n ports: [443],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Gateway(\"default\",\n name=\"my-gateway\",\n scope=\"default-scope-basic\",\n type=\"OPEN_MESH\",\n ports=[443])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-gateway\",\n Scope = \"default-scope-basic\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway\"),\n\t\t\tScope: pulumi.String(\"default-scope-basic\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Gateway(\"default\", GatewayArgs.builder()\n .name(\"my-gateway\")\n .scope(\"default-scope-basic\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Gateway\n properties:\n name: my-gateway\n scope: default-scope-basic\n type: OPEN_MESH\n ports:\n - 443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Gateway Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-gateway\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n type: \"OPEN_MESH\",\n ports: [443],\n scope: \"default-scope-advance\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Gateway(\"default\",\n name=\"my-gateway\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n type=\"OPEN_MESH\",\n ports=[443],\n scope=\"default-scope-advance\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-gateway\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"default-scope-advance\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"default-scope-advance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Gateway(\"default\", GatewayArgs.builder()\n .name(\"my-gateway\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .scope(\"default-scope-advance\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Gateway\n properties:\n name: my-gateway\n labels:\n foo: bar\n description: my description\n type: OPEN_MESH\n ports:\n - 443\n scope: default-scope-advance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Gateway Secure Web Proxy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"my-network\",\n routingMode: \"REGIONAL\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnetwork-name\",\n purpose: \"PRIVATE\",\n ipCidrRange: \"10.128.0.0/20\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst proxyonlysubnet = new gcp.compute.Subnetwork(\"proxyonlysubnet\", {\n name: \"my-proxy-only-subnetwork\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n ipCidrRange: \"192.168.0.0/23\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst defaultGatewaySecurityPolicy = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-policy-name\",\n location: \"us-central1\",\n});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"default\", {\n name: \"my-policyrule-name\",\n location: \"us-central1\",\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.name,\n enabled: true,\n priority: 1,\n sessionMatcher: \"host() == 'example.com'\",\n basicProfile: \"ALLOW\",\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-gateway1\",\n location: \"us-central1\",\n addresses: [\"10.128.0.99\"],\n type: \"SECURE_WEB_GATEWAY\",\n ports: [443],\n scope: \"my-default-scope1\",\n certificateUrls: [_default.id],\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.id,\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n deleteSwgAutogenRouterOnDestroy: true,\n}, {\n dependsOn: [proxyonlysubnet],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n location=\"us-central1\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_network = gcp.compute.Network(\"default\",\n name=\"my-network\",\n routing_mode=\"REGIONAL\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnetwork-name\",\n purpose=\"PRIVATE\",\n ip_cidr_range=\"10.128.0.0/20\",\n region=\"us-central1\",\n network=default_network.id,\n role=\"ACTIVE\")\nproxyonlysubnet = gcp.compute.Subnetwork(\"proxyonlysubnet\",\n name=\"my-proxy-only-subnetwork\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n ip_cidr_range=\"192.168.0.0/23\",\n region=\"us-central1\",\n network=default_network.id,\n role=\"ACTIVE\")\ndefault_gateway_security_policy = gcp.networksecurity.GatewaySecurityPolicy(\"default\",\n name=\"my-policy-name\",\n location=\"us-central1\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"default\",\n name=\"my-policyrule-name\",\n location=\"us-central1\",\n gateway_security_policy=default_gateway_security_policy.name,\n enabled=True,\n priority=1,\n session_matcher=\"host() == 'example.com'\",\n basic_profile=\"ALLOW\")\ndefault_gateway = gcp.networkservices.Gateway(\"default\",\n name=\"my-gateway1\",\n location=\"us-central1\",\n addresses=[\"10.128.0.99\"],\n type=\"SECURE_WEB_GATEWAY\",\n ports=[443],\n scope=\"my-default-scope1\",\n certificate_urls=[default.id],\n gateway_security_policy=default_gateway_security_policy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n delete_swg_autogen_router_on_destroy=True,\n opts = pulumi.ResourceOptions(depends_on=[proxyonlysubnet]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n RoutingMode = \"REGIONAL\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnetwork-name\",\n Purpose = \"PRIVATE\",\n IpCidrRange = \"10.128.0.0/20\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var proxyonlysubnet = new Gcp.Compute.Subnetwork(\"proxyonlysubnet\", new()\n {\n Name = \"my-proxy-only-subnetwork\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n IpCidrRange = \"192.168.0.0/23\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var defaultGatewaySecurityPolicy = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"default\", new()\n {\n Name = \"my-policy-name\",\n Location = \"us-central1\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"default\", new()\n {\n Name = \"my-policyrule-name\",\n Location = \"us-central1\",\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Name,\n Enabled = true,\n Priority = 1,\n SessionMatcher = \"host() == 'example.com'\",\n BasicProfile = \"ALLOW\",\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-gateway1\",\n Location = \"us-central1\",\n Addresses = new[]\n {\n \"10.128.0.99\",\n },\n Type = \"SECURE_WEB_GATEWAY\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"my-default-scope1\",\n CertificateUrls = new[]\n {\n @default.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxyonlysubnet,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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/networkservices\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork-name\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.128.0.0/20\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxyonlysubnet, err := compute.NewSubnetwork(ctx, \"proxyonlysubnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-proxy-only-subnetwork\"),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGatewaySecurityPolicy, err := networksecurity.NewGatewaySecurityPolicy(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicyRule(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"my-policyrule-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.Name,\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tPriority: pulumi.Int(1),\n\t\t\tSessionMatcher: pulumi.String(\"host() == 'example.com'\"),\n\t\t\tBasicProfile: pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway1\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.128.0.99\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SECURE_WEB_GATEWAY\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"my-default-scope1\"),\n\t\t\tCertificateUrls: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDeleteSwgAutogenRouterOnDestroy: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxyonlysubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRule;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRuleArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"my-certificate\")\n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .routingMode(\"REGIONAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork-name\")\n .purpose(\"PRIVATE\")\n .ipCidrRange(\"10.128.0.0/20\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var proxyonlysubnet = new Subnetwork(\"proxyonlysubnet\", SubnetworkArgs.builder()\n .name(\"my-proxy-only-subnetwork\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .ipCidrRange(\"192.168.0.0/23\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var defaultGatewaySecurityPolicy = new GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", GatewaySecurityPolicyArgs.builder()\n .name(\"my-policy-name\")\n .location(\"us-central1\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder()\n .name(\"my-policyrule-name\")\n .location(\"us-central1\")\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.name())\n .enabled(true)\n .priority(1)\n .sessionMatcher(\"host() == 'example.com'\")\n .basicProfile(\"ALLOW\")\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder()\n .name(\"my-gateway1\")\n .location(\"us-central1\")\n .addresses(\"10.128.0.99\")\n .type(\"SECURE_WEB_GATEWAY\")\n .ports(443)\n .scope(\"my-default-scope1\")\n .certificateUrls(default_.id())\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .deleteSwgAutogenRouterOnDestroy(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxyonlysubnet)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n name: my-certificate\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::invoke:\n function: std:file\n arguments:\n input: test-fixtures/cert.pem\n return: result\n pemPrivateKey:\n fn::invoke:\n function: std:file\n arguments:\n input: test-fixtures/private-key.pem\n return: result\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: my-network\n routingMode: REGIONAL\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnetwork-name\n purpose: PRIVATE\n ipCidrRange: 10.128.0.0/20\n region: us-central1\n network: ${defaultNetwork.id}\n role: ACTIVE\n proxyonlysubnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-proxy-only-subnetwork\n purpose: REGIONAL_MANAGED_PROXY\n ipCidrRange: 192.168.0.0/23\n region: us-central1\n network: ${defaultNetwork.id}\n role: ACTIVE\n defaultGatewaySecurityPolicy:\n type: gcp:networksecurity:GatewaySecurityPolicy\n name: default\n properties:\n name: my-policy-name\n location: us-central1\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n name: default\n properties:\n name: my-policyrule-name\n location: us-central1\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.name}\n enabled: true\n priority: 1\n sessionMatcher: host() == 'example.com'\n basicProfile: ALLOW\n defaultGateway:\n type: gcp:networkservices:Gateway\n name: default\n properties:\n name: my-gateway1\n location: us-central1\n addresses:\n - 10.128.0.99\n type: SECURE_WEB_GATEWAY\n ports:\n - 443\n scope: my-default-scope1\n certificateUrls:\n - ${default.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependsOn:\n - ${proxyonlysubnet}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Gateway Multiple Swp Same Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n location: \"us-south1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"my-network\",\n routingMode: \"REGIONAL\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnetwork-name\",\n purpose: \"PRIVATE\",\n ipCidrRange: \"10.128.0.0/20\",\n region: \"us-south1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst proxyonlysubnet = new gcp.compute.Subnetwork(\"proxyonlysubnet\", {\n name: \"my-proxy-only-subnetwork\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n ipCidrRange: \"192.168.0.0/23\",\n region: \"us-south1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst defaultGatewaySecurityPolicy = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-policy-name\",\n location: \"us-south1\",\n});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"default\", {\n name: \"my-policyrule-name\",\n location: \"us-south1\",\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.name,\n enabled: true,\n priority: 1,\n sessionMatcher: \"host() == 'example.com'\",\n basicProfile: \"ALLOW\",\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-gateway1\",\n location: \"us-south1\",\n addresses: [\"10.128.0.99\"],\n type: \"SECURE_WEB_GATEWAY\",\n ports: [443],\n scope: \"my-default-scope1\",\n certificateUrls: [_default.id],\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.id,\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n deleteSwgAutogenRouterOnDestroy: true,\n}, {\n dependsOn: [proxyonlysubnet],\n});\nconst gateway2 = new gcp.networkservices.Gateway(\"gateway2\", {\n name: \"my-gateway2\",\n location: \"us-south1\",\n addresses: [\"10.128.0.98\"],\n type: \"SECURE_WEB_GATEWAY\",\n ports: [443],\n scope: \"my-default-scope2\",\n certificateUrls: [_default.id],\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.id,\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n deleteSwgAutogenRouterOnDestroy: true,\n}, {\n dependsOn: [proxyonlysubnet],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n location=\"us-south1\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_network = gcp.compute.Network(\"default\",\n name=\"my-network\",\n routing_mode=\"REGIONAL\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnetwork-name\",\n purpose=\"PRIVATE\",\n ip_cidr_range=\"10.128.0.0/20\",\n region=\"us-south1\",\n network=default_network.id,\n role=\"ACTIVE\")\nproxyonlysubnet = gcp.compute.Subnetwork(\"proxyonlysubnet\",\n name=\"my-proxy-only-subnetwork\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n ip_cidr_range=\"192.168.0.0/23\",\n region=\"us-south1\",\n network=default_network.id,\n role=\"ACTIVE\")\ndefault_gateway_security_policy = gcp.networksecurity.GatewaySecurityPolicy(\"default\",\n name=\"my-policy-name\",\n location=\"us-south1\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"default\",\n name=\"my-policyrule-name\",\n location=\"us-south1\",\n gateway_security_policy=default_gateway_security_policy.name,\n enabled=True,\n priority=1,\n session_matcher=\"host() == 'example.com'\",\n basic_profile=\"ALLOW\")\ndefault_gateway = gcp.networkservices.Gateway(\"default\",\n name=\"my-gateway1\",\n location=\"us-south1\",\n addresses=[\"10.128.0.99\"],\n type=\"SECURE_WEB_GATEWAY\",\n ports=[443],\n scope=\"my-default-scope1\",\n certificate_urls=[default.id],\n gateway_security_policy=default_gateway_security_policy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n delete_swg_autogen_router_on_destroy=True,\n opts = pulumi.ResourceOptions(depends_on=[proxyonlysubnet]))\ngateway2 = gcp.networkservices.Gateway(\"gateway2\",\n name=\"my-gateway2\",\n location=\"us-south1\",\n addresses=[\"10.128.0.98\"],\n type=\"SECURE_WEB_GATEWAY\",\n ports=[443],\n scope=\"my-default-scope2\",\n certificate_urls=[default.id],\n gateway_security_policy=default_gateway_security_policy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n delete_swg_autogen_router_on_destroy=True,\n opts = pulumi.ResourceOptions(depends_on=[proxyonlysubnet]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Location = \"us-south1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n RoutingMode = \"REGIONAL\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnetwork-name\",\n Purpose = \"PRIVATE\",\n IpCidrRange = \"10.128.0.0/20\",\n Region = \"us-south1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var proxyonlysubnet = new Gcp.Compute.Subnetwork(\"proxyonlysubnet\", new()\n {\n Name = \"my-proxy-only-subnetwork\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n IpCidrRange = \"192.168.0.0/23\",\n Region = \"us-south1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var defaultGatewaySecurityPolicy = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"default\", new()\n {\n Name = \"my-policy-name\",\n Location = \"us-south1\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"default\", new()\n {\n Name = \"my-policyrule-name\",\n Location = \"us-south1\",\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Name,\n Enabled = true,\n Priority = 1,\n SessionMatcher = \"host() == 'example.com'\",\n BasicProfile = \"ALLOW\",\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-gateway1\",\n Location = \"us-south1\",\n Addresses = new[]\n {\n \"10.128.0.99\",\n },\n Type = \"SECURE_WEB_GATEWAY\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"my-default-scope1\",\n CertificateUrls = new[]\n {\n @default.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxyonlysubnet,\n },\n });\n\n var gateway2 = new Gcp.NetworkServices.Gateway(\"gateway2\", new()\n {\n Name = \"my-gateway2\",\n Location = \"us-south1\",\n Addresses = new[]\n {\n \"10.128.0.98\",\n },\n Type = \"SECURE_WEB_GATEWAY\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"my-default-scope2\",\n CertificateUrls = new[]\n {\n @default.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxyonlysubnet,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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/networkservices\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork-name\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.128.0.0/20\"),\n\t\t\tRegion: pulumi.String(\"us-south1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxyonlysubnet, err := compute.NewSubnetwork(ctx, \"proxyonlysubnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-proxy-only-subnetwork\"),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tRegion: pulumi.String(\"us-south1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGatewaySecurityPolicy, err := networksecurity.NewGatewaySecurityPolicy(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy-name\"),\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicyRule(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"my-policyrule-name\"),\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.Name,\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tPriority: pulumi.Int(1),\n\t\t\tSessionMatcher: pulumi.String(\"host() == 'example.com'\"),\n\t\t\tBasicProfile: pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway1\"),\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.128.0.99\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SECURE_WEB_GATEWAY\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"my-default-scope1\"),\n\t\t\tCertificateUrls: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDeleteSwgAutogenRouterOnDestroy: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxyonlysubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewGateway(ctx, \"gateway2\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway2\"),\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.128.0.98\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SECURE_WEB_GATEWAY\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"my-default-scope2\"),\n\t\t\tCertificateUrls: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDeleteSwgAutogenRouterOnDestroy: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxyonlysubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRule;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRuleArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"my-certificate\")\n .location(\"us-south1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .routingMode(\"REGIONAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork-name\")\n .purpose(\"PRIVATE\")\n .ipCidrRange(\"10.128.0.0/20\")\n .region(\"us-south1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var proxyonlysubnet = new Subnetwork(\"proxyonlysubnet\", SubnetworkArgs.builder()\n .name(\"my-proxy-only-subnetwork\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .ipCidrRange(\"192.168.0.0/23\")\n .region(\"us-south1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var defaultGatewaySecurityPolicy = new GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", GatewaySecurityPolicyArgs.builder()\n .name(\"my-policy-name\")\n .location(\"us-south1\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder()\n .name(\"my-policyrule-name\")\n .location(\"us-south1\")\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.name())\n .enabled(true)\n .priority(1)\n .sessionMatcher(\"host() == 'example.com'\")\n .basicProfile(\"ALLOW\")\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder()\n .name(\"my-gateway1\")\n .location(\"us-south1\")\n .addresses(\"10.128.0.99\")\n .type(\"SECURE_WEB_GATEWAY\")\n .ports(443)\n .scope(\"my-default-scope1\")\n .certificateUrls(default_.id())\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .deleteSwgAutogenRouterOnDestroy(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxyonlysubnet)\n .build());\n\n var gateway2 = new Gateway(\"gateway2\", GatewayArgs.builder()\n .name(\"my-gateway2\")\n .location(\"us-south1\")\n .addresses(\"10.128.0.98\")\n .type(\"SECURE_WEB_GATEWAY\")\n .ports(443)\n .scope(\"my-default-scope2\")\n .certificateUrls(default_.id())\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .deleteSwgAutogenRouterOnDestroy(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxyonlysubnet)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n name: my-certificate\n location: us-south1\n selfManaged:\n pemCertificate:\n fn::invoke:\n function: std:file\n arguments:\n input: test-fixtures/cert.pem\n return: result\n pemPrivateKey:\n fn::invoke:\n function: std:file\n arguments:\n input: test-fixtures/private-key.pem\n return: result\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: my-network\n routingMode: REGIONAL\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnetwork-name\n purpose: PRIVATE\n ipCidrRange: 10.128.0.0/20\n region: us-south1\n network: ${defaultNetwork.id}\n role: ACTIVE\n proxyonlysubnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-proxy-only-subnetwork\n purpose: REGIONAL_MANAGED_PROXY\n ipCidrRange: 192.168.0.0/23\n region: us-south1\n network: ${defaultNetwork.id}\n role: ACTIVE\n defaultGatewaySecurityPolicy:\n type: gcp:networksecurity:GatewaySecurityPolicy\n name: default\n properties:\n name: my-policy-name\n location: us-south1\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n name: default\n properties:\n name: my-policyrule-name\n location: us-south1\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.name}\n enabled: true\n priority: 1\n sessionMatcher: host() == 'example.com'\n basicProfile: ALLOW\n defaultGateway:\n type: gcp:networkservices:Gateway\n name: default\n properties:\n name: my-gateway1\n location: us-south1\n addresses:\n - 10.128.0.99\n type: SECURE_WEB_GATEWAY\n ports:\n - 443\n scope: my-default-scope1\n certificateUrls:\n - ${default.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependsOn:\n - ${proxyonlysubnet}\n gateway2:\n type: gcp:networkservices:Gateway\n properties:\n name: my-gateway2\n location: us-south1\n addresses:\n - 10.128.0.98\n type: SECURE_WEB_GATEWAY\n ports:\n - 443\n scope: my-default-scope2\n certificateUrls:\n - ${default.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependsOn:\n - ${proxyonlysubnet}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGateway can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/gateways/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Gateway can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/gateway:Gateway default projects/{{project}}/locations/{{location}}/gateways/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/gateway:Gateway default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/gateway:Gateway default {{location}}/{{name}}\n```\n\n", + "description": "Gateway represents the configuration for a proxy, typically a load balancer.\nIt captures the ip:port over which the services are exposed by the proxy,\nalong with any policy configurations. Routes have reference to to Gateways\nto dictate how requests should be routed by this Gateway.\n\n\nTo get more information about Gateway, see:\n\n* [API documentation](https://cloud.google.com/traffic-director/docs/reference/network-services/rest/v1/projects.locations.gateways)\n\n## Example Usage\n\n### Network Services Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-gateway\",\n scope: \"default-scope-basic\",\n type: \"OPEN_MESH\",\n ports: [443],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Gateway(\"default\",\n name=\"my-gateway\",\n scope=\"default-scope-basic\",\n type=\"OPEN_MESH\",\n ports=[443])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-gateway\",\n Scope = \"default-scope-basic\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway\"),\n\t\t\tScope: pulumi.String(\"default-scope-basic\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Gateway(\"default\", GatewayArgs.builder()\n .name(\"my-gateway\")\n .scope(\"default-scope-basic\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Gateway\n properties:\n name: my-gateway\n scope: default-scope-basic\n type: OPEN_MESH\n ports:\n - 443\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Gateway Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-gateway\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n type: \"OPEN_MESH\",\n ports: [443],\n scope: \"default-scope-advance\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.Gateway(\"default\",\n name=\"my-gateway\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n type=\"OPEN_MESH\",\n ports=[443],\n scope=\"default-scope-advance\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-gateway\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"default-scope-advance\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"default-scope-advance\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Gateway(\"default\", GatewayArgs.builder()\n .name(\"my-gateway\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .scope(\"default-scope-advance\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:Gateway\n properties:\n name: my-gateway\n labels:\n foo: bar\n description: my description\n type: OPEN_MESH\n ports:\n - 443\n scope: default-scope-advance\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Gateway Secure Web Proxy\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n location: \"us-central1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"my-network\",\n routingMode: \"REGIONAL\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnetwork-name\",\n purpose: \"PRIVATE\",\n ipCidrRange: \"10.128.0.0/20\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst proxyonlysubnet = new gcp.compute.Subnetwork(\"proxyonlysubnet\", {\n name: \"my-proxy-only-subnetwork\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n ipCidrRange: \"192.168.0.0/23\",\n region: \"us-central1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst defaultGatewaySecurityPolicy = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-policy-name\",\n location: \"us-central1\",\n});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"default\", {\n name: \"my-policyrule-name\",\n location: \"us-central1\",\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.name,\n enabled: true,\n priority: 1,\n sessionMatcher: \"host() == 'example.com'\",\n basicProfile: \"ALLOW\",\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-gateway1\",\n location: \"us-central1\",\n addresses: [\"10.128.0.99\"],\n type: \"SECURE_WEB_GATEWAY\",\n ports: [443],\n scope: \"my-default-scope1\",\n certificateUrls: [_default.id],\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.id,\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n deleteSwgAutogenRouterOnDestroy: true,\n}, {\n dependsOn: [proxyonlysubnet],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n location=\"us-central1\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_network = gcp.compute.Network(\"default\",\n name=\"my-network\",\n routing_mode=\"REGIONAL\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnetwork-name\",\n purpose=\"PRIVATE\",\n ip_cidr_range=\"10.128.0.0/20\",\n region=\"us-central1\",\n network=default_network.id,\n role=\"ACTIVE\")\nproxyonlysubnet = gcp.compute.Subnetwork(\"proxyonlysubnet\",\n name=\"my-proxy-only-subnetwork\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n ip_cidr_range=\"192.168.0.0/23\",\n region=\"us-central1\",\n network=default_network.id,\n role=\"ACTIVE\")\ndefault_gateway_security_policy = gcp.networksecurity.GatewaySecurityPolicy(\"default\",\n name=\"my-policy-name\",\n location=\"us-central1\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"default\",\n name=\"my-policyrule-name\",\n location=\"us-central1\",\n gateway_security_policy=default_gateway_security_policy.name,\n enabled=True,\n priority=1,\n session_matcher=\"host() == 'example.com'\",\n basic_profile=\"ALLOW\")\ndefault_gateway = gcp.networkservices.Gateway(\"default\",\n name=\"my-gateway1\",\n location=\"us-central1\",\n addresses=[\"10.128.0.99\"],\n type=\"SECURE_WEB_GATEWAY\",\n ports=[443],\n scope=\"my-default-scope1\",\n certificate_urls=[default.id],\n gateway_security_policy=default_gateway_security_policy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n delete_swg_autogen_router_on_destroy=True,\n opts = pulumi.ResourceOptions(depends_on=[proxyonlysubnet]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Location = \"us-central1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n RoutingMode = \"REGIONAL\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnetwork-name\",\n Purpose = \"PRIVATE\",\n IpCidrRange = \"10.128.0.0/20\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var proxyonlysubnet = new Gcp.Compute.Subnetwork(\"proxyonlysubnet\", new()\n {\n Name = \"my-proxy-only-subnetwork\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n IpCidrRange = \"192.168.0.0/23\",\n Region = \"us-central1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var defaultGatewaySecurityPolicy = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"default\", new()\n {\n Name = \"my-policy-name\",\n Location = \"us-central1\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"default\", new()\n {\n Name = \"my-policyrule-name\",\n Location = \"us-central1\",\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Name,\n Enabled = true,\n Priority = 1,\n SessionMatcher = \"host() == 'example.com'\",\n BasicProfile = \"ALLOW\",\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-gateway1\",\n Location = \"us-central1\",\n Addresses = new[]\n {\n \"10.128.0.99\",\n },\n Type = \"SECURE_WEB_GATEWAY\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"my-default-scope1\",\n CertificateUrls = new[]\n {\n @default.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxyonlysubnet,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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/networkservices\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork-name\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.128.0.0/20\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxyonlysubnet, err := compute.NewSubnetwork(ctx, \"proxyonlysubnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-proxy-only-subnetwork\"),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGatewaySecurityPolicy, err := networksecurity.NewGatewaySecurityPolicy(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicyRule(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"my-policyrule-name\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.Name,\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tPriority: pulumi.Int(1),\n\t\t\tSessionMatcher: pulumi.String(\"host() == 'example.com'\"),\n\t\t\tBasicProfile: pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway1\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.128.0.99\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SECURE_WEB_GATEWAY\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"my-default-scope1\"),\n\t\t\tCertificateUrls: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDeleteSwgAutogenRouterOnDestroy: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxyonlysubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRule;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRuleArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"my-certificate\")\n .location(\"us-central1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .routingMode(\"REGIONAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork-name\")\n .purpose(\"PRIVATE\")\n .ipCidrRange(\"10.128.0.0/20\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var proxyonlysubnet = new Subnetwork(\"proxyonlysubnet\", SubnetworkArgs.builder()\n .name(\"my-proxy-only-subnetwork\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .ipCidrRange(\"192.168.0.0/23\")\n .region(\"us-central1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var defaultGatewaySecurityPolicy = new GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", GatewaySecurityPolicyArgs.builder()\n .name(\"my-policy-name\")\n .location(\"us-central1\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder()\n .name(\"my-policyrule-name\")\n .location(\"us-central1\")\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.name())\n .enabled(true)\n .priority(1)\n .sessionMatcher(\"host() == 'example.com'\")\n .basicProfile(\"ALLOW\")\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder()\n .name(\"my-gateway1\")\n .location(\"us-central1\")\n .addresses(\"10.128.0.99\")\n .type(\"SECURE_WEB_GATEWAY\")\n .ports(443)\n .scope(\"my-default-scope1\")\n .certificateUrls(default_.id())\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .deleteSwgAutogenRouterOnDestroy(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxyonlysubnet)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n name: my-certificate\n location: us-central1\n selfManaged:\n pemCertificate:\n fn::invoke:\n function: std:file\n arguments:\n input: test-fixtures/cert.pem\n return: result\n pemPrivateKey:\n fn::invoke:\n function: std:file\n arguments:\n input: test-fixtures/private-key.pem\n return: result\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: my-network\n routingMode: REGIONAL\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnetwork-name\n purpose: PRIVATE\n ipCidrRange: 10.128.0.0/20\n region: us-central1\n network: ${defaultNetwork.id}\n role: ACTIVE\n proxyonlysubnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-proxy-only-subnetwork\n purpose: REGIONAL_MANAGED_PROXY\n ipCidrRange: 192.168.0.0/23\n region: us-central1\n network: ${defaultNetwork.id}\n role: ACTIVE\n defaultGatewaySecurityPolicy:\n type: gcp:networksecurity:GatewaySecurityPolicy\n name: default\n properties:\n name: my-policy-name\n location: us-central1\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n name: default\n properties:\n name: my-policyrule-name\n location: us-central1\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.name}\n enabled: true\n priority: 1\n sessionMatcher: host() == 'example.com'\n basicProfile: ALLOW\n defaultGateway:\n type: gcp:networkservices:Gateway\n name: default\n properties:\n name: my-gateway1\n location: us-central1\n addresses:\n - 10.128.0.99\n type: SECURE_WEB_GATEWAY\n ports:\n - 443\n scope: my-default-scope1\n certificateUrls:\n - ${default.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependsOn:\n - ${proxyonlysubnet}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Gateway Multiple Swp Same Network\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst _default = new gcp.certificatemanager.Certificate(\"default\", {\n name: \"my-certificate\",\n location: \"us-south1\",\n selfManaged: {\n pemCertificate: std.file({\n input: \"test-fixtures/cert.pem\",\n }).then(invoke =\u003e invoke.result),\n pemPrivateKey: std.file({\n input: \"test-fixtures/private-key.pem\",\n }).then(invoke =\u003e invoke.result),\n },\n});\nconst defaultNetwork = new gcp.compute.Network(\"default\", {\n name: \"my-network\",\n routingMode: \"REGIONAL\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"my-subnetwork-name\",\n purpose: \"PRIVATE\",\n ipCidrRange: \"10.128.0.0/20\",\n region: \"us-south1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst proxyonlysubnet = new gcp.compute.Subnetwork(\"proxyonlysubnet\", {\n name: \"my-proxy-only-subnetwork\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n ipCidrRange: \"192.168.0.0/23\",\n region: \"us-south1\",\n network: defaultNetwork.id,\n role: \"ACTIVE\",\n});\nconst defaultGatewaySecurityPolicy = new gcp.networksecurity.GatewaySecurityPolicy(\"default\", {\n name: \"my-policy-name\",\n location: \"us-south1\",\n});\nconst defaultGatewaySecurityPolicyRule = new gcp.networksecurity.GatewaySecurityPolicyRule(\"default\", {\n name: \"my-policyrule-name\",\n location: \"us-south1\",\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.name,\n enabled: true,\n priority: 1,\n sessionMatcher: \"host() == 'example.com'\",\n basicProfile: \"ALLOW\",\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-gateway1\",\n location: \"us-south1\",\n addresses: [\"10.128.0.99\"],\n type: \"SECURE_WEB_GATEWAY\",\n ports: [443],\n scope: \"my-default-scope1\",\n certificateUrls: [_default.id],\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.id,\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n deleteSwgAutogenRouterOnDestroy: true,\n}, {\n dependsOn: [proxyonlysubnet],\n});\nconst gateway2 = new gcp.networkservices.Gateway(\"gateway2\", {\n name: \"my-gateway2\",\n location: \"us-south1\",\n addresses: [\"10.128.0.98\"],\n type: \"SECURE_WEB_GATEWAY\",\n ports: [443],\n scope: \"my-default-scope2\",\n certificateUrls: [_default.id],\n gatewaySecurityPolicy: defaultGatewaySecurityPolicy.id,\n network: defaultNetwork.id,\n subnetwork: defaultSubnetwork.id,\n deleteSwgAutogenRouterOnDestroy: true,\n}, {\n dependsOn: [proxyonlysubnet],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\ndefault = gcp.certificatemanager.Certificate(\"default\",\n name=\"my-certificate\",\n location=\"us-south1\",\n self_managed={\n \"pem_certificate\": std.file(input=\"test-fixtures/cert.pem\").result,\n \"pem_private_key\": std.file(input=\"test-fixtures/private-key.pem\").result,\n })\ndefault_network = gcp.compute.Network(\"default\",\n name=\"my-network\",\n routing_mode=\"REGIONAL\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"my-subnetwork-name\",\n purpose=\"PRIVATE\",\n ip_cidr_range=\"10.128.0.0/20\",\n region=\"us-south1\",\n network=default_network.id,\n role=\"ACTIVE\")\nproxyonlysubnet = gcp.compute.Subnetwork(\"proxyonlysubnet\",\n name=\"my-proxy-only-subnetwork\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n ip_cidr_range=\"192.168.0.0/23\",\n region=\"us-south1\",\n network=default_network.id,\n role=\"ACTIVE\")\ndefault_gateway_security_policy = gcp.networksecurity.GatewaySecurityPolicy(\"default\",\n name=\"my-policy-name\",\n location=\"us-south1\")\ndefault_gateway_security_policy_rule = gcp.networksecurity.GatewaySecurityPolicyRule(\"default\",\n name=\"my-policyrule-name\",\n location=\"us-south1\",\n gateway_security_policy=default_gateway_security_policy.name,\n enabled=True,\n priority=1,\n session_matcher=\"host() == 'example.com'\",\n basic_profile=\"ALLOW\")\ndefault_gateway = gcp.networkservices.Gateway(\"default\",\n name=\"my-gateway1\",\n location=\"us-south1\",\n addresses=[\"10.128.0.99\"],\n type=\"SECURE_WEB_GATEWAY\",\n ports=[443],\n scope=\"my-default-scope1\",\n certificate_urls=[default.id],\n gateway_security_policy=default_gateway_security_policy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n delete_swg_autogen_router_on_destroy=True,\n opts = pulumi.ResourceOptions(depends_on=[proxyonlysubnet]))\ngateway2 = gcp.networkservices.Gateway(\"gateway2\",\n name=\"my-gateway2\",\n location=\"us-south1\",\n addresses=[\"10.128.0.98\"],\n type=\"SECURE_WEB_GATEWAY\",\n ports=[443],\n scope=\"my-default-scope2\",\n certificate_urls=[default.id],\n gateway_security_policy=default_gateway_security_policy.id,\n network=default_network.id,\n subnetwork=default_subnetwork.id,\n delete_swg_autogen_router_on_destroy=True,\n opts = pulumi.ResourceOptions(depends_on=[proxyonlysubnet]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.CertificateManager.Certificate(\"default\", new()\n {\n Name = \"my-certificate\",\n Location = \"us-south1\",\n SelfManaged = new Gcp.CertificateManager.Inputs.CertificateSelfManagedArgs\n {\n PemCertificate = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/cert.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n PemPrivateKey = Std.File.Invoke(new()\n {\n Input = \"test-fixtures/private-key.pem\",\n }).Apply(invoke =\u003e invoke.Result),\n },\n });\n\n var defaultNetwork = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"my-network\",\n RoutingMode = \"REGIONAL\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"my-subnetwork-name\",\n Purpose = \"PRIVATE\",\n IpCidrRange = \"10.128.0.0/20\",\n Region = \"us-south1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var proxyonlysubnet = new Gcp.Compute.Subnetwork(\"proxyonlysubnet\", new()\n {\n Name = \"my-proxy-only-subnetwork\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n IpCidrRange = \"192.168.0.0/23\",\n Region = \"us-south1\",\n Network = defaultNetwork.Id,\n Role = \"ACTIVE\",\n });\n\n var defaultGatewaySecurityPolicy = new Gcp.NetworkSecurity.GatewaySecurityPolicy(\"default\", new()\n {\n Name = \"my-policy-name\",\n Location = \"us-south1\",\n });\n\n var defaultGatewaySecurityPolicyRule = new Gcp.NetworkSecurity.GatewaySecurityPolicyRule(\"default\", new()\n {\n Name = \"my-policyrule-name\",\n Location = \"us-south1\",\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Name,\n Enabled = true,\n Priority = 1,\n SessionMatcher = \"host() == 'example.com'\",\n BasicProfile = \"ALLOW\",\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-gateway1\",\n Location = \"us-south1\",\n Addresses = new[]\n {\n \"10.128.0.99\",\n },\n Type = \"SECURE_WEB_GATEWAY\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"my-default-scope1\",\n CertificateUrls = new[]\n {\n @default.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxyonlysubnet,\n },\n });\n\n var gateway2 = new Gcp.NetworkServices.Gateway(\"gateway2\", new()\n {\n Name = \"my-gateway2\",\n Location = \"us-south1\",\n Addresses = new[]\n {\n \"10.128.0.98\",\n },\n Type = \"SECURE_WEB_GATEWAY\",\n Ports = new[]\n {\n 443,\n },\n Scope = \"my-default-scope2\",\n CertificateUrls = new[]\n {\n @default.Id,\n },\n GatewaySecurityPolicy = defaultGatewaySecurityPolicy.Id,\n Network = defaultNetwork.Id,\n Subnetwork = defaultSubnetwork.Id,\n DeleteSwgAutogenRouterOnDestroy = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxyonlysubnet,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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/networkservices\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tinvokeFile, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/cert.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFile1, err := std.File(ctx, \u0026std.FileArgs{\n\t\t\tInput: \"test-fixtures/private-key.pem\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := certificatemanager.NewCertificate(ctx, \"default\", \u0026certificatemanager.CertificateArgs{\n\t\t\tName: pulumi.String(\"my-certificate\"),\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tSelfManaged: \u0026certificatemanager.CertificateSelfManagedArgs{\n\t\t\t\tPemCertificate: pulumi.String(invokeFile.Result),\n\t\t\t\tPemPrivateKey: pulumi.String(invokeFile1.Result),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultNetwork, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tRoutingMode: pulumi.String(\"REGIONAL\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnetwork-name\"),\n\t\t\tPurpose: pulumi.String(\"PRIVATE\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.128.0.0/20\"),\n\t\t\tRegion: pulumi.String(\"us-south1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxyonlysubnet, err := compute.NewSubnetwork(ctx, \"proxyonlysubnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-proxy-only-subnetwork\"),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.0.0/23\"),\n\t\t\tRegion: pulumi.String(\"us-south1\"),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGatewaySecurityPolicy, err := networksecurity.NewGatewaySecurityPolicy(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyArgs{\n\t\t\tName: pulumi.String(\"my-policy-name\"),\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networksecurity.NewGatewaySecurityPolicyRule(ctx, \"default\", \u0026networksecurity.GatewaySecurityPolicyRuleArgs{\n\t\t\tName: pulumi.String(\"my-policyrule-name\"),\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.Name,\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t\tPriority: pulumi.Int(1),\n\t\t\tSessionMatcher: pulumi.String(\"host() == 'example.com'\"),\n\t\t\tBasicProfile: pulumi.String(\"ALLOW\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway1\"),\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.128.0.99\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SECURE_WEB_GATEWAY\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"my-default-scope1\"),\n\t\t\tCertificateUrls: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDeleteSwgAutogenRouterOnDestroy: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxyonlysubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewGateway(ctx, \"gateway2\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-gateway2\"),\n\t\t\tLocation: pulumi.String(\"us-south1\"),\n\t\t\tAddresses: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"10.128.0.98\"),\n\t\t\t},\n\t\t\tType: pulumi.String(\"SECURE_WEB_GATEWAY\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t\tScope: pulumi.String(\"my-default-scope2\"),\n\t\t\tCertificateUrls: pulumi.StringArray{\n\t\t\t\t_default.ID(),\n\t\t\t},\n\t\t\tGatewaySecurityPolicy: defaultGatewaySecurityPolicy.ID(),\n\t\t\tNetwork: defaultNetwork.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tDeleteSwgAutogenRouterOnDestroy: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxyonlysubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificatemanager.Certificate;\nimport com.pulumi.gcp.certificatemanager.CertificateArgs;\nimport com.pulumi.gcp.certificatemanager.inputs.CertificateSelfManagedArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicy;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyArgs;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRule;\nimport com.pulumi.gcp.networksecurity.GatewaySecurityPolicyRuleArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Certificate(\"default\", CertificateArgs.builder()\n .name(\"my-certificate\")\n .location(\"us-south1\")\n .selfManaged(CertificateSelfManagedArgs.builder()\n .pemCertificate(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/cert.pem\")\n .build()).result())\n .pemPrivateKey(StdFunctions.file(FileArgs.builder()\n .input(\"test-fixtures/private-key.pem\")\n .build()).result())\n .build())\n .build());\n\n var defaultNetwork = new Network(\"defaultNetwork\", NetworkArgs.builder()\n .name(\"my-network\")\n .routingMode(\"REGIONAL\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"my-subnetwork-name\")\n .purpose(\"PRIVATE\")\n .ipCidrRange(\"10.128.0.0/20\")\n .region(\"us-south1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var proxyonlysubnet = new Subnetwork(\"proxyonlysubnet\", SubnetworkArgs.builder()\n .name(\"my-proxy-only-subnetwork\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .ipCidrRange(\"192.168.0.0/23\")\n .region(\"us-south1\")\n .network(defaultNetwork.id())\n .role(\"ACTIVE\")\n .build());\n\n var defaultGatewaySecurityPolicy = new GatewaySecurityPolicy(\"defaultGatewaySecurityPolicy\", GatewaySecurityPolicyArgs.builder()\n .name(\"my-policy-name\")\n .location(\"us-south1\")\n .build());\n\n var defaultGatewaySecurityPolicyRule = new GatewaySecurityPolicyRule(\"defaultGatewaySecurityPolicyRule\", GatewaySecurityPolicyRuleArgs.builder()\n .name(\"my-policyrule-name\")\n .location(\"us-south1\")\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.name())\n .enabled(true)\n .priority(1)\n .sessionMatcher(\"host() == 'example.com'\")\n .basicProfile(\"ALLOW\")\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder()\n .name(\"my-gateway1\")\n .location(\"us-south1\")\n .addresses(\"10.128.0.99\")\n .type(\"SECURE_WEB_GATEWAY\")\n .ports(443)\n .scope(\"my-default-scope1\")\n .certificateUrls(default_.id())\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .deleteSwgAutogenRouterOnDestroy(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxyonlysubnet)\n .build());\n\n var gateway2 = new Gateway(\"gateway2\", GatewayArgs.builder()\n .name(\"my-gateway2\")\n .location(\"us-south1\")\n .addresses(\"10.128.0.98\")\n .type(\"SECURE_WEB_GATEWAY\")\n .ports(443)\n .scope(\"my-default-scope2\")\n .certificateUrls(default_.id())\n .gatewaySecurityPolicy(defaultGatewaySecurityPolicy.id())\n .network(defaultNetwork.id())\n .subnetwork(defaultSubnetwork.id())\n .deleteSwgAutogenRouterOnDestroy(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxyonlysubnet)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:certificatemanager:Certificate\n properties:\n name: my-certificate\n location: us-south1\n selfManaged:\n pemCertificate:\n fn::invoke:\n function: std:file\n arguments:\n input: test-fixtures/cert.pem\n return: result\n pemPrivateKey:\n fn::invoke:\n function: std:file\n arguments:\n input: test-fixtures/private-key.pem\n return: result\n defaultNetwork:\n type: gcp:compute:Network\n name: default\n properties:\n name: my-network\n routingMode: REGIONAL\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: my-subnetwork-name\n purpose: PRIVATE\n ipCidrRange: 10.128.0.0/20\n region: us-south1\n network: ${defaultNetwork.id}\n role: ACTIVE\n proxyonlysubnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-proxy-only-subnetwork\n purpose: REGIONAL_MANAGED_PROXY\n ipCidrRange: 192.168.0.0/23\n region: us-south1\n network: ${defaultNetwork.id}\n role: ACTIVE\n defaultGatewaySecurityPolicy:\n type: gcp:networksecurity:GatewaySecurityPolicy\n name: default\n properties:\n name: my-policy-name\n location: us-south1\n defaultGatewaySecurityPolicyRule:\n type: gcp:networksecurity:GatewaySecurityPolicyRule\n name: default\n properties:\n name: my-policyrule-name\n location: us-south1\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.name}\n enabled: true\n priority: 1\n sessionMatcher: host() == 'example.com'\n basicProfile: ALLOW\n defaultGateway:\n type: gcp:networkservices:Gateway\n name: default\n properties:\n name: my-gateway1\n location: us-south1\n addresses:\n - 10.128.0.99\n type: SECURE_WEB_GATEWAY\n ports:\n - 443\n scope: my-default-scope1\n certificateUrls:\n - ${default.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependsOn:\n - ${proxyonlysubnet}\n gateway2:\n type: gcp:networkservices:Gateway\n properties:\n name: my-gateway2\n location: us-south1\n addresses:\n - 10.128.0.98\n type: SECURE_WEB_GATEWAY\n ports:\n - 443\n scope: my-default-scope2\n certificateUrls:\n - ${default.id}\n gatewaySecurityPolicy: ${defaultGatewaySecurityPolicy.id}\n network: ${defaultNetwork.id}\n subnetwork: ${defaultSubnetwork.id}\n deleteSwgAutogenRouterOnDestroy: true\n options:\n dependsOn:\n - ${proxyonlysubnet}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nGateway can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/gateways/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, Gateway can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/gateway:Gateway default projects/{{project}}/locations/{{location}}/gateways/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/gateway:Gateway default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/gateway:Gateway default {{location}}/{{name}}\n```\n\n", "properties": { "addresses": { "type": "array", @@ -257698,7 +257698,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_default, 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", @@ -258449,7 +258449,7 @@ } }, "gcp:networkservices/serviceBinding:ServiceBinding": { - "description": "## Example Usage\n\n### Network Services Service 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 _default = new gcp.servicedirectory.Namespace(\"default\", {\n namespaceId: \"my-namespace\",\n location: \"us-central1\",\n});\nconst defaultService = new gcp.servicedirectory.Service(\"default\", {\n serviceId: \"my-service\",\n namespace: _default.id,\n metadata: {\n stage: \"prod\",\n region: \"us-central1\",\n },\n});\nconst defaultServiceBinding = new gcp.networkservices.ServiceBinding(\"default\", {\n name: \"my-service-binding\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n service: defaultService.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.servicedirectory.Namespace(\"default\",\n namespace_id=\"my-namespace\",\n location=\"us-central1\")\ndefault_service = gcp.servicedirectory.Service(\"default\",\n service_id=\"my-service\",\n namespace=default.id,\n metadata={\n \"stage\": \"prod\",\n \"region\": \"us-central1\",\n })\ndefault_service_binding = gcp.networkservices.ServiceBinding(\"default\",\n name=\"my-service-binding\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n service=default_service.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceDirectory.Namespace(\"default\", new()\n {\n NamespaceId = \"my-namespace\",\n Location = \"us-central1\",\n });\n\n var defaultService = new Gcp.ServiceDirectory.Service(\"default\", new()\n {\n ServiceId = \"my-service\",\n Namespace = @default.Id,\n Metadata = \n {\n { \"stage\", \"prod\" },\n { \"region\", \"us-central1\" },\n },\n });\n\n var defaultServiceBinding = new Gcp.NetworkServices.ServiceBinding(\"default\", new()\n {\n Name = \"my-service-binding\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Service = defaultService.Id,\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/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\t_, err := servicedirectory.NewNamespace(ctx, \"default\", \u0026servicedirectory.NamespaceArgs{\n\t\t\tNamespaceId: pulumi.String(\"my-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\tdefaultService, err := servicedirectory.NewService(ctx, \"default\", \u0026servicedirectory.ServiceArgs{\n\t\t\tServiceId: pulumi.String(\"my-service\"),\n\t\t\tNamespace: _default.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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewServiceBinding(ctx, \"default\", \u0026networkservices.ServiceBindingArgs{\n\t\t\tName: pulumi.String(\"my-service-binding\"),\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\tService: defaultService.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.servicedirectory.Namespace;\nimport com.pulumi.gcp.servicedirectory.NamespaceArgs;\nimport com.pulumi.gcp.servicedirectory.Service;\nimport com.pulumi.gcp.servicedirectory.ServiceArgs;\nimport com.pulumi.gcp.networkservices.ServiceBinding;\nimport com.pulumi.gcp.networkservices.ServiceBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Namespace(\"default\", NamespaceArgs.builder()\n .namespaceId(\"my-namespace\")\n .location(\"us-central1\")\n .build());\n\n var defaultService = new Service(\"defaultService\", ServiceArgs.builder()\n .serviceId(\"my-service\")\n .namespace(default_.id())\n .metadata(Map.ofEntries(\n Map.entry(\"stage\", \"prod\"),\n Map.entry(\"region\", \"us-central1\")\n ))\n .build());\n\n var defaultServiceBinding = new ServiceBinding(\"defaultServiceBinding\", ServiceBindingArgs.builder()\n .name(\"my-service-binding\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .service(defaultService.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:servicedirectory:Namespace\n properties:\n namespaceId: my-namespace\n location: us-central1\n defaultService:\n type: gcp:servicedirectory:Service\n name: default\n properties:\n serviceId: my-service\n namespace: ${default.id}\n metadata:\n stage: prod\n region: us-central1\n defaultServiceBinding:\n type: gcp:networkservices:ServiceBinding\n name: default\n properties:\n name: my-service-binding\n labels:\n foo: bar\n description: my description\n service: ${defaultService.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceBinding can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/serviceBindings/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ServiceBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/serviceBinding:ServiceBinding default projects/{{project}}/locations/global/serviceBindings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/serviceBinding:ServiceBinding default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/serviceBinding:ServiceBinding default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Services Service 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 _default = new gcp.servicedirectory.Namespace(\"default\", {\n namespaceId: \"my-namespace\",\n location: \"us-central1\",\n});\nconst defaultService = new gcp.servicedirectory.Service(\"default\", {\n serviceId: \"my-service\",\n namespace: _default.id,\n metadata: {\n stage: \"prod\",\n region: \"us-central1\",\n },\n});\nconst defaultServiceBinding = new gcp.networkservices.ServiceBinding(\"default\", {\n name: \"my-service-binding\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n service: defaultService.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.servicedirectory.Namespace(\"default\",\n namespace_id=\"my-namespace\",\n location=\"us-central1\")\ndefault_service = gcp.servicedirectory.Service(\"default\",\n service_id=\"my-service\",\n namespace=default.id,\n metadata={\n \"stage\": \"prod\",\n \"region\": \"us-central1\",\n })\ndefault_service_binding = gcp.networkservices.ServiceBinding(\"default\",\n name=\"my-service-binding\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n service=default_service.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.ServiceDirectory.Namespace(\"default\", new()\n {\n NamespaceId = \"my-namespace\",\n Location = \"us-central1\",\n });\n\n var defaultService = new Gcp.ServiceDirectory.Service(\"default\", new()\n {\n ServiceId = \"my-service\",\n Namespace = @default.Id,\n Metadata = \n {\n { \"stage\", \"prod\" },\n { \"region\", \"us-central1\" },\n },\n });\n\n var defaultServiceBinding = new Gcp.NetworkServices.ServiceBinding(\"default\", new()\n {\n Name = \"my-service-binding\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Service = defaultService.Id,\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/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\t_default, err := servicedirectory.NewNamespace(ctx, \"default\", \u0026servicedirectory.NamespaceArgs{\n\t\t\tNamespaceId: pulumi.String(\"my-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\tdefaultService, err := servicedirectory.NewService(ctx, \"default\", \u0026servicedirectory.ServiceArgs{\n\t\t\tServiceId: pulumi.String(\"my-service\"),\n\t\t\tNamespace: _default.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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewServiceBinding(ctx, \"default\", \u0026networkservices.ServiceBindingArgs{\n\t\t\tName: pulumi.String(\"my-service-binding\"),\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\tService: defaultService.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.servicedirectory.Namespace;\nimport com.pulumi.gcp.servicedirectory.NamespaceArgs;\nimport com.pulumi.gcp.servicedirectory.Service;\nimport com.pulumi.gcp.servicedirectory.ServiceArgs;\nimport com.pulumi.gcp.networkservices.ServiceBinding;\nimport com.pulumi.gcp.networkservices.ServiceBindingArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Namespace(\"default\", NamespaceArgs.builder()\n .namespaceId(\"my-namespace\")\n .location(\"us-central1\")\n .build());\n\n var defaultService = new Service(\"defaultService\", ServiceArgs.builder()\n .serviceId(\"my-service\")\n .namespace(default_.id())\n .metadata(Map.ofEntries(\n Map.entry(\"stage\", \"prod\"),\n Map.entry(\"region\", \"us-central1\")\n ))\n .build());\n\n var defaultServiceBinding = new ServiceBinding(\"defaultServiceBinding\", ServiceBindingArgs.builder()\n .name(\"my-service-binding\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .service(defaultService.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:servicedirectory:Namespace\n properties:\n namespaceId: my-namespace\n location: us-central1\n defaultService:\n type: gcp:servicedirectory:Service\n name: default\n properties:\n serviceId: my-service\n namespace: ${default.id}\n metadata:\n stage: prod\n region: us-central1\n defaultServiceBinding:\n type: gcp:networkservices:ServiceBinding\n name: default\n properties:\n name: my-service-binding\n labels:\n foo: bar\n description: my description\n service: ${defaultService.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceBinding can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/serviceBindings/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ServiceBinding can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/serviceBinding:ServiceBinding default projects/{{project}}/locations/global/serviceBindings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/serviceBinding:ServiceBinding default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/serviceBinding:ServiceBinding default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -258600,7 +258600,7 @@ } }, "gcp:networkservices/serviceLbPolicies:ServiceLbPolicies": { - "description": "## Example Usage\n\n### Network Services Service Lb Policies Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.ServiceLbPolicies(\"default\", {\n name: \"my-lb-policy\",\n location: \"global\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.ServiceLbPolicies(\"default\",\n name=\"my-lb-policy\",\n location=\"global\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.ServiceLbPolicies(\"default\", new()\n {\n Name = \"my-lb-policy\",\n Location = \"global\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewServiceLbPolicies(ctx, \"default\", \u0026networkservices.ServiceLbPoliciesArgs{\n\t\t\tName: pulumi.String(\"my-lb-policy\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.ServiceLbPolicies;\nimport com.pulumi.gcp.networkservices.ServiceLbPoliciesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ServiceLbPolicies(\"default\", ServiceLbPoliciesArgs.builder()\n .name(\"my-lb-policy\")\n .location(\"global\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:ServiceLbPolicies\n properties:\n name: my-lb-policy\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Service Lb Policies Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.ServiceLbPolicies(\"default\", {\n name: \"my-lb-policy\",\n location: \"global\",\n description: \"my description\",\n loadBalancingAlgorithm: \"SPRAY_TO_REGION\",\n autoCapacityDrain: {\n enable: true,\n },\n failoverConfig: {\n failoverHealthThreshold: 70,\n },\n labels: {\n foo: \"bar\",\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"my-lb-backend\",\n description: \"my description\",\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n protocol: \"HTTP\",\n serviceLbPolicy: pulumi.interpolate`//networkservices.googleapis.com/${_default.id}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.ServiceLbPolicies(\"default\",\n name=\"my-lb-policy\",\n location=\"global\",\n description=\"my description\",\n load_balancing_algorithm=\"SPRAY_TO_REGION\",\n auto_capacity_drain={\n \"enable\": True,\n },\n failover_config={\n \"failover_health_threshold\": 70,\n },\n labels={\n \"foo\": \"bar\",\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"my-lb-backend\",\n description=\"my description\",\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n protocol=\"HTTP\",\n service_lb_policy=default.id.apply(lambda id: f\"//networkservices.googleapis.com/{id}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.ServiceLbPolicies(\"default\", new()\n {\n Name = \"my-lb-policy\",\n Location = \"global\",\n Description = \"my description\",\n LoadBalancingAlgorithm = \"SPRAY_TO_REGION\",\n AutoCapacityDrain = new Gcp.NetworkServices.Inputs.ServiceLbPoliciesAutoCapacityDrainArgs\n {\n Enable = true,\n },\n FailoverConfig = new Gcp.NetworkServices.Inputs.ServiceLbPoliciesFailoverConfigArgs\n {\n FailoverHealthThreshold = 70,\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-lb-backend\",\n Description = \"my description\",\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n Protocol = \"HTTP\",\n ServiceLbPolicy = @default.Id.Apply(id =\u003e $\"//networkservices.googleapis.com/{id}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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.NewServiceLbPolicies(ctx, \"default\", \u0026networkservices.ServiceLbPoliciesArgs{\n\t\t\tName: pulumi.String(\"my-lb-policy\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLoadBalancingAlgorithm: pulumi.String(\"SPRAY_TO_REGION\"),\n\t\t\tAutoCapacityDrain: \u0026networkservices.ServiceLbPoliciesAutoCapacityDrainArgs{\n\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t},\n\t\t\tFailoverConfig: \u0026networkservices.ServiceLbPoliciesFailoverConfigArgs{\n\t\t\t\tFailoverHealthThreshold: pulumi.Int(70),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-lb-backend\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tServiceLbPolicy: _default.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"//networkservices.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.ServiceLbPolicies;\nimport com.pulumi.gcp.networkservices.ServiceLbPoliciesArgs;\nimport com.pulumi.gcp.networkservices.inputs.ServiceLbPoliciesAutoCapacityDrainArgs;\nimport com.pulumi.gcp.networkservices.inputs.ServiceLbPoliciesFailoverConfigArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ServiceLbPolicies(\"default\", ServiceLbPoliciesArgs.builder()\n .name(\"my-lb-policy\")\n .location(\"global\")\n .description(\"my description\")\n .loadBalancingAlgorithm(\"SPRAY_TO_REGION\")\n .autoCapacityDrain(ServiceLbPoliciesAutoCapacityDrainArgs.builder()\n .enable(true)\n .build())\n .failoverConfig(ServiceLbPoliciesFailoverConfigArgs.builder()\n .failoverHealthThreshold(70)\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"my-lb-backend\")\n .description(\"my description\")\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .protocol(\"HTTP\")\n .serviceLbPolicy(default_.id().applyValue(id -\u003e String.format(\"//networkservices.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:ServiceLbPolicies\n properties:\n name: my-lb-policy\n location: global\n description: my description\n loadBalancingAlgorithm: SPRAY_TO_REGION\n autoCapacityDrain:\n enable: true\n failoverConfig:\n failoverHealthThreshold: 70\n labels:\n foo: bar\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: my-lb-backend\n description: my description\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n protocol: HTTP\n serviceLbPolicy: //networkservices.googleapis.com/${default.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceLbPolicies can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/serviceLbPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ServiceLbPolicies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/serviceLbPolicies:ServiceLbPolicies default projects/{{project}}/locations/{{location}}/serviceLbPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/serviceLbPolicies:ServiceLbPolicies default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/serviceLbPolicies:ServiceLbPolicies default {{location}}/{{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Services Service Lb Policies Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.ServiceLbPolicies(\"default\", {\n name: \"my-lb-policy\",\n location: \"global\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.ServiceLbPolicies(\"default\",\n name=\"my-lb-policy\",\n location=\"global\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.ServiceLbPolicies(\"default\", new()\n {\n Name = \"my-lb-policy\",\n Location = \"global\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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.NewServiceLbPolicies(ctx, \"default\", \u0026networkservices.ServiceLbPoliciesArgs{\n\t\t\tName: pulumi.String(\"my-lb-policy\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.ServiceLbPolicies;\nimport com.pulumi.gcp.networkservices.ServiceLbPoliciesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ServiceLbPolicies(\"default\", ServiceLbPoliciesArgs.builder()\n .name(\"my-lb-policy\")\n .location(\"global\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:ServiceLbPolicies\n properties:\n name: my-lb-policy\n location: global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Service Lb Policies Advanced\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.networkservices.ServiceLbPolicies(\"default\", {\n name: \"my-lb-policy\",\n location: \"global\",\n description: \"my description\",\n loadBalancingAlgorithm: \"SPRAY_TO_REGION\",\n autoCapacityDrain: {\n enable: true,\n },\n failoverConfig: {\n failoverHealthThreshold: 70,\n },\n labels: {\n foo: \"bar\",\n },\n});\nconst defaultBackendService = new gcp.compute.BackendService(\"default\", {\n name: \"my-lb-backend\",\n description: \"my description\",\n loadBalancingScheme: \"INTERNAL_SELF_MANAGED\",\n protocol: \"HTTP\",\n serviceLbPolicy: pulumi.interpolate`//networkservices.googleapis.com/${_default.id}`,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.networkservices.ServiceLbPolicies(\"default\",\n name=\"my-lb-policy\",\n location=\"global\",\n description=\"my description\",\n load_balancing_algorithm=\"SPRAY_TO_REGION\",\n auto_capacity_drain={\n \"enable\": True,\n },\n failover_config={\n \"failover_health_threshold\": 70,\n },\n labels={\n \"foo\": \"bar\",\n })\ndefault_backend_service = gcp.compute.BackendService(\"default\",\n name=\"my-lb-backend\",\n description=\"my description\",\n load_balancing_scheme=\"INTERNAL_SELF_MANAGED\",\n protocol=\"HTTP\",\n service_lb_policy=default.id.apply(lambda id: f\"//networkservices.googleapis.com/{id}\"))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.NetworkServices.ServiceLbPolicies(\"default\", new()\n {\n Name = \"my-lb-policy\",\n Location = \"global\",\n Description = \"my description\",\n LoadBalancingAlgorithm = \"SPRAY_TO_REGION\",\n AutoCapacityDrain = new Gcp.NetworkServices.Inputs.ServiceLbPoliciesAutoCapacityDrainArgs\n {\n Enable = true,\n },\n FailoverConfig = new Gcp.NetworkServices.Inputs.ServiceLbPoliciesFailoverConfigArgs\n {\n FailoverHealthThreshold = 70,\n },\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n var defaultBackendService = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-lb-backend\",\n Description = \"my description\",\n LoadBalancingScheme = \"INTERNAL_SELF_MANAGED\",\n Protocol = \"HTTP\",\n ServiceLbPolicy = @default.Id.Apply(id =\u003e $\"//networkservices.googleapis.com/{id}\"),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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_default, err := networkservices.NewServiceLbPolicies(ctx, \"default\", \u0026networkservices.ServiceLbPoliciesArgs{\n\t\t\tName: pulumi.String(\"my-lb-policy\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLoadBalancingAlgorithm: pulumi.String(\"SPRAY_TO_REGION\"),\n\t\t\tAutoCapacityDrain: \u0026networkservices.ServiceLbPoliciesAutoCapacityDrainArgs{\n\t\t\t\tEnable: pulumi.Bool(true),\n\t\t\t},\n\t\t\tFailoverConfig: \u0026networkservices.ServiceLbPoliciesFailoverConfigArgs{\n\t\t\t\tFailoverHealthThreshold: pulumi.Int(70),\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-lb-backend\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_SELF_MANAGED\"),\n\t\t\tProtocol: pulumi.String(\"HTTP\"),\n\t\t\tServiceLbPolicy: _default.ID().ApplyT(func(id string) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"//networkservices.googleapis.com/%v\", id), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.networkservices.ServiceLbPolicies;\nimport com.pulumi.gcp.networkservices.ServiceLbPoliciesArgs;\nimport com.pulumi.gcp.networkservices.inputs.ServiceLbPoliciesAutoCapacityDrainArgs;\nimport com.pulumi.gcp.networkservices.inputs.ServiceLbPoliciesFailoverConfigArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new ServiceLbPolicies(\"default\", ServiceLbPoliciesArgs.builder()\n .name(\"my-lb-policy\")\n .location(\"global\")\n .description(\"my description\")\n .loadBalancingAlgorithm(\"SPRAY_TO_REGION\")\n .autoCapacityDrain(ServiceLbPoliciesAutoCapacityDrainArgs.builder()\n .enable(true)\n .build())\n .failoverConfig(ServiceLbPoliciesFailoverConfigArgs.builder()\n .failoverHealthThreshold(70)\n .build())\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n var defaultBackendService = new BackendService(\"defaultBackendService\", BackendServiceArgs.builder()\n .name(\"my-lb-backend\")\n .description(\"my description\")\n .loadBalancingScheme(\"INTERNAL_SELF_MANAGED\")\n .protocol(\"HTTP\")\n .serviceLbPolicy(default_.id().applyValue(id -\u003e String.format(\"//networkservices.googleapis.com/%s\", id)))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:networkservices:ServiceLbPolicies\n properties:\n name: my-lb-policy\n location: global\n description: my description\n loadBalancingAlgorithm: SPRAY_TO_REGION\n autoCapacityDrain:\n enable: true\n failoverConfig:\n failoverHealthThreshold: 70\n labels:\n foo: bar\n defaultBackendService:\n type: gcp:compute:BackendService\n name: default\n properties:\n name: my-lb-backend\n description: my description\n loadBalancingScheme: INTERNAL_SELF_MANAGED\n protocol: HTTP\n serviceLbPolicy: //networkservices.googleapis.com/${default.id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceLbPolicies can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/serviceLbPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, ServiceLbPolicies can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/serviceLbPolicies:ServiceLbPolicies default projects/{{project}}/locations/{{location}}/serviceLbPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/serviceLbPolicies:ServiceLbPolicies default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/serviceLbPolicies:ServiceLbPolicies default {{location}}/{{name}}\n```\n\n", "properties": { "autoCapacityDrain": { "$ref": "#/types/gcp:networkservices/ServiceLbPoliciesAutoCapacityDrain:ServiceLbPoliciesAutoCapacityDrain", @@ -258780,7 +258780,7 @@ } }, "gcp:networkservices/tcpRoute:TcpRoute": { - "description": "## Example Usage\n\n### Network Services Tcp Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n rules: [{\n matches: [{\n address: \"10.0.0.1/32\",\n port: \"8081\",\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n rules=[{\n \"matches\": [{\n \"address\": \"10.0.0.1/32\",\n \"port\": \"8081\",\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n \"original_destination\": False,\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleMatchArgs\n {\n Address = \"10.0.0.1/32\",\n Port = \"8081\",\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TcpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\t\tPort: pulumi.String(\"8081\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .rules(TcpRouteRuleArgs.builder()\n .matches(TcpRouteRuleMatchArgs.builder()\n .address(\"10.0.0.1/32\")\n .port(\"8081\")\n .build())\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n rules:\n - matches:\n - address: 10.0.0.1/32\n port: '8081'\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tcp Route Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n rules: [{\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n idleTimeout: \"60s\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n rules=[{\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n \"original_destination\": False,\n \"idle_timeout\": \"60s\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n IdleTimeout = \"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/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\n\t\t\t\t\t\tIdleTimeout: 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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .rules(TcpRouteRuleArgs.builder()\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .idleTimeout(\"60s\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n rules:\n - action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n idleTimeout: 60s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tcp Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultMesh = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n meshes: [defaultMesh.id],\n rules: [{\n matches: [{\n address: \"10.0.0.1/32\",\n port: \"8081\",\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_mesh = gcp.networkservices.Mesh(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n meshes=[default_mesh.id],\n rules=[{\n \"matches\": [{\n \"address\": \"10.0.0.1/32\",\n \"port\": \"8081\",\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n \"original_destination\": False,\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultMesh = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Meshes = new[]\n {\n defaultMesh.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleMatchArgs\n {\n Address = \"10.0.0.1/32\",\n Port = \"8081\",\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultMesh, err := networkservices.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\tdefaultMesh.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TcpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\t\tPort: pulumi.String(\"8081\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultMesh = new Mesh(\"defaultMesh\", MeshArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .meshes(defaultMesh.id())\n .rules(TcpRouteRuleArgs.builder()\n .matches(TcpRouteRuleMatchArgs.builder()\n .address(\"10.0.0.1/32\")\n .port(\"8081\")\n .build())\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultMesh:\n type: gcp:networkservices:Mesh\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n meshes:\n - ${defaultMesh.id}\n rules:\n - matches:\n - address: 10.0.0.1/32\n port: '8081'\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tcp Route Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n scope: \"my-scope\",\n type: \"OPEN_MESH\",\n ports: [443],\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n gateways: [defaultGateway.id],\n rules: [{\n matches: [{\n address: \"10.0.0.1/32\",\n port: \"8081\",\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_gateway = gcp.networkservices.Gateway(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n scope=\"my-scope\",\n type=\"OPEN_MESH\",\n ports=[443])\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n gateways=[default_gateway.id],\n rules=[{\n \"matches\": [{\n \"address\": \"10.0.0.1/32\",\n \"port\": \"8081\",\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n \"original_destination\": False,\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Scope = \"my-scope\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Gateways = new[]\n {\n defaultGateway.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleMatchArgs\n {\n Address = \"10.0.0.1/32\",\n Port = \"8081\",\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGateway, err := networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tScope: pulumi.String(\"my-scope\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tGateways: pulumi.StringArray{\n\t\t\t\tdefaultGateway.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TcpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\t\tPort: pulumi.String(\"8081\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .scope(\"my-scope\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .gateways(defaultGateway.id())\n .rules(TcpRouteRuleArgs.builder()\n .matches(TcpRouteRuleMatchArgs.builder()\n .address(\"10.0.0.1/32\")\n .port(\"8081\")\n .build())\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGateway:\n type: gcp:networkservices:Gateway\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n scope: my-scope\n type: OPEN_MESH\n ports:\n - 443\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n gateways:\n - ${defaultGateway.id}\n rules:\n - matches:\n - address: 10.0.0.1/32\n port: '8081'\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTcpRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/tcpRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TcpRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/tcpRoute:TcpRoute default projects/{{project}}/locations/global/tcpRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tcpRoute:TcpRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tcpRoute:TcpRoute default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Services Tcp Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n rules: [{\n matches: [{\n address: \"10.0.0.1/32\",\n port: \"8081\",\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n rules=[{\n \"matches\": [{\n \"address\": \"10.0.0.1/32\",\n \"port\": \"8081\",\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n \"original_destination\": False,\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleMatchArgs\n {\n Address = \"10.0.0.1/32\",\n Port = \"8081\",\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TcpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\t\tPort: pulumi.String(\"8081\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .rules(TcpRouteRuleArgs.builder()\n .matches(TcpRouteRuleMatchArgs.builder()\n .address(\"10.0.0.1/32\")\n .port(\"8081\")\n .build())\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n rules:\n - matches:\n - address: 10.0.0.1/32\n port: '8081'\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tcp Route Actions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n rules: [{\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n idleTimeout: \"60s\",\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n rules=[{\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n \"original_destination\": False,\n \"idle_timeout\": \"60s\",\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n IdleTimeout = \"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/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\n\t\t\t\t\t\tIdleTimeout: 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.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .rules(TcpRouteRuleArgs.builder()\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .idleTimeout(\"60s\")\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n rules:\n - action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n idleTimeout: 60s\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tcp Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultMesh = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n meshes: [defaultMesh.id],\n rules: [{\n matches: [{\n address: \"10.0.0.1/32\",\n port: \"8081\",\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_mesh = gcp.networkservices.Mesh(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n meshes=[default_mesh.id],\n rules=[{\n \"matches\": [{\n \"address\": \"10.0.0.1/32\",\n \"port\": \"8081\",\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n \"original_destination\": False,\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultMesh = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Meshes = new[]\n {\n defaultMesh.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleMatchArgs\n {\n Address = \"10.0.0.1/32\",\n Port = \"8081\",\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultMesh, err := networkservices.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\tdefaultMesh.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TcpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\t\tPort: pulumi.String(\"8081\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultMesh = new Mesh(\"defaultMesh\", MeshArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .meshes(defaultMesh.id())\n .rules(TcpRouteRuleArgs.builder()\n .matches(TcpRouteRuleMatchArgs.builder()\n .address(\"10.0.0.1/32\")\n .port(\"8081\")\n .build())\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultMesh:\n type: gcp:networkservices:Mesh\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n meshes:\n - ${defaultMesh.id}\n rules:\n - matches:\n - address: 10.0.0.1/32\n port: '8081'\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tcp Route Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n scope: \"my-scope\",\n type: \"OPEN_MESH\",\n ports: [443],\n});\nconst defaultTcpRoute = new gcp.networkservices.TcpRoute(\"default\", {\n name: \"my-tcp-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n gateways: [defaultGateway.id],\n rules: [{\n matches: [{\n address: \"10.0.0.1/32\",\n port: \"8081\",\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n originalDestination: false,\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_gateway = gcp.networkservices.Gateway(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n scope=\"my-scope\",\n type=\"OPEN_MESH\",\n ports=[443])\ndefault_tcp_route = gcp.networkservices.TcpRoute(\"default\",\n name=\"my-tcp-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n gateways=[default_gateway.id],\n rules=[{\n \"matches\": [{\n \"address\": \"10.0.0.1/32\",\n \"port\": \"8081\",\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n \"original_destination\": False,\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Scope = \"my-scope\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n });\n\n var defaultTcpRoute = new Gcp.NetworkServices.TcpRoute(\"default\", new()\n {\n Name = \"my-tcp-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Gateways = new[]\n {\n defaultGateway.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleMatchArgs\n {\n Address = \"10.0.0.1/32\",\n Port = \"8081\",\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TcpRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TcpRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n OriginalDestination = false,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGateway, err := networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tScope: pulumi.String(\"my-scope\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTcpRoute(ctx, \"default\", \u0026networkservices.TcpRouteArgs{\n\t\t\tName: pulumi.String(\"my-tcp-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tGateways: pulumi.StringArray{\n\t\t\t\tdefaultGateway.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TcpRouteRuleArray{\n\t\t\t\t\u0026networkservices.TcpRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TcpRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleMatchArgs{\n\t\t\t\t\t\t\tAddress: pulumi.String(\"10.0.0.1/32\"),\n\t\t\t\t\t\t\tPort: pulumi.String(\"8081\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TcpRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TcpRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TcpRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tOriginalDestination: pulumi.Bool(false),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.gcp.networkservices.TcpRoute;\nimport com.pulumi.gcp.networkservices.TcpRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TcpRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .scope(\"my-scope\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .build());\n\n var defaultTcpRoute = new TcpRoute(\"defaultTcpRoute\", TcpRouteArgs.builder()\n .name(\"my-tcp-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .gateways(defaultGateway.id())\n .rules(TcpRouteRuleArgs.builder()\n .matches(TcpRouteRuleMatchArgs.builder()\n .address(\"10.0.0.1/32\")\n .port(\"8081\")\n .build())\n .action(TcpRouteRuleActionArgs.builder()\n .destinations(TcpRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .originalDestination(false)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGateway:\n type: gcp:networkservices:Gateway\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n scope: my-scope\n type: OPEN_MESH\n ports:\n - 443\n defaultTcpRoute:\n type: gcp:networkservices:TcpRoute\n name: default\n properties:\n name: my-tcp-route\n labels:\n foo: bar\n description: my description\n gateways:\n - ${defaultGateway.id}\n rules:\n - matches:\n - address: 10.0.0.1/32\n port: '8081'\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n originalDestination: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTcpRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/tcpRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TcpRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/tcpRoute:TcpRoute default projects/{{project}}/locations/global/tcpRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tcpRoute:TcpRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tcpRoute:TcpRoute default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -258983,7 +258983,7 @@ } }, "gcp:networkservices/tlsRoute:TlsRoute": { - "description": "## Example Usage\n\n### Network Services Tls Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultTlsRoute = new gcp.networkservices.TlsRoute(\"default\", {\n name: \"my-tls-route\",\n description: \"my description\",\n rules: [{\n matches: [{\n sniHosts: [\"example.com\"],\n alpns: [\"http/1.1\"],\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_tls_route = gcp.networkservices.TlsRoute(\"default\",\n name=\"my-tls-route\",\n description=\"my description\",\n rules=[{\n \"matches\": [{\n \"sni_hosts\": [\"example.com\"],\n \"alpns\": [\"http/1.1\"],\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultTlsRoute = new Gcp.NetworkServices.TlsRoute(\"default\", new()\n {\n Name = \"my-tls-route\",\n Description = \"my description\",\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleMatchArgs\n {\n SniHosts = new[]\n {\n \"example.com\",\n },\n Alpns = new[]\n {\n \"http/1.1\",\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TlsRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTlsRoute(ctx, \"default\", \u0026networkservices.TlsRouteArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tRules: networkservices.TlsRouteRuleArray{\n\t\t\t\t\u0026networkservices.TlsRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TlsRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleMatchArgs{\n\t\t\t\t\t\t\tSniHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAlpns: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"http/1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TlsRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TlsRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.TlsRoute;\nimport com.pulumi.gcp.networkservices.TlsRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultTlsRoute = new TlsRoute(\"defaultTlsRoute\", TlsRouteArgs.builder()\n .name(\"my-tls-route\")\n .description(\"my description\")\n .rules(TlsRouteRuleArgs.builder()\n .matches(TlsRouteRuleMatchArgs.builder()\n .sniHosts(\"example.com\")\n .alpns(\"http/1.1\")\n .build())\n .action(TlsRouteRuleActionArgs.builder()\n .destinations(TlsRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultTlsRoute:\n type: gcp:networkservices:TlsRoute\n name: default\n properties:\n name: my-tls-route\n description: my description\n rules:\n - matches:\n - sniHosts:\n - example.com\n alpns:\n - http/1.1\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tls Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultMesh = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-tls-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultTlsRoute = new gcp.networkservices.TlsRoute(\"default\", {\n name: \"my-tls-route\",\n description: \"my description\",\n meshes: [defaultMesh.id],\n rules: [{\n matches: [{\n sniHosts: [\"example.com\"],\n alpns: [\"http/1.1\"],\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_mesh = gcp.networkservices.Mesh(\"default\",\n name=\"my-tls-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_tls_route = gcp.networkservices.TlsRoute(\"default\",\n name=\"my-tls-route\",\n description=\"my description\",\n meshes=[default_mesh.id],\n rules=[{\n \"matches\": [{\n \"sni_hosts\": [\"example.com\"],\n \"alpns\": [\"http/1.1\"],\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultMesh = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-tls-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultTlsRoute = new Gcp.NetworkServices.TlsRoute(\"default\", new()\n {\n Name = \"my-tls-route\",\n Description = \"my description\",\n Meshes = new[]\n {\n defaultMesh.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleMatchArgs\n {\n SniHosts = new[]\n {\n \"example.com\",\n },\n Alpns = new[]\n {\n \"http/1.1\",\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TlsRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultMesh, err := networkservices.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTlsRoute(ctx, \"default\", \u0026networkservices.TlsRouteArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\tdefaultMesh.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TlsRouteRuleArray{\n\t\t\t\t\u0026networkservices.TlsRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TlsRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleMatchArgs{\n\t\t\t\t\t\t\tSniHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAlpns: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"http/1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TlsRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TlsRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.TlsRoute;\nimport com.pulumi.gcp.networkservices.TlsRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultMesh = new Mesh(\"defaultMesh\", MeshArgs.builder()\n .name(\"my-tls-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultTlsRoute = new TlsRoute(\"defaultTlsRoute\", TlsRouteArgs.builder()\n .name(\"my-tls-route\")\n .description(\"my description\")\n .meshes(defaultMesh.id())\n .rules(TlsRouteRuleArgs.builder()\n .matches(TlsRouteRuleMatchArgs.builder()\n .sniHosts(\"example.com\")\n .alpns(\"http/1.1\")\n .build())\n .action(TlsRouteRuleActionArgs.builder()\n .destinations(TlsRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultMesh:\n type: gcp:networkservices:Mesh\n name: default\n properties:\n name: my-tls-route\n labels:\n foo: bar\n description: my description\n defaultTlsRoute:\n type: gcp:networkservices:TlsRoute\n name: default\n properties:\n name: my-tls-route\n description: my description\n meshes:\n - ${defaultMesh.id}\n rules:\n - matches:\n - sniHosts:\n - example.com\n alpns:\n - http/1.1\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tls Route Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-tls-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n scope: \"my-scope\",\n type: \"OPEN_MESH\",\n ports: [443],\n});\nconst defaultTlsRoute = new gcp.networkservices.TlsRoute(\"default\", {\n name: \"my-tls-route\",\n description: \"my description\",\n gateways: [defaultGateway.id],\n rules: [{\n matches: [{\n sniHosts: [\"example.com\"],\n alpns: [\"http/1.1\"],\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_gateway = gcp.networkservices.Gateway(\"default\",\n name=\"my-tls-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n scope=\"my-scope\",\n type=\"OPEN_MESH\",\n ports=[443])\ndefault_tls_route = gcp.networkservices.TlsRoute(\"default\",\n name=\"my-tls-route\",\n description=\"my description\",\n gateways=[default_gateway.id],\n rules=[{\n \"matches\": [{\n \"sni_hosts\": [\"example.com\"],\n \"alpns\": [\"http/1.1\"],\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-tls-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Scope = \"my-scope\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n });\n\n var defaultTlsRoute = new Gcp.NetworkServices.TlsRoute(\"default\", new()\n {\n Name = \"my-tls-route\",\n Description = \"my description\",\n Gateways = new[]\n {\n defaultGateway.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleMatchArgs\n {\n SniHosts = new[]\n {\n \"example.com\",\n },\n Alpns = new[]\n {\n \"http/1.1\",\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TlsRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGateway, err := networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tScope: pulumi.String(\"my-scope\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTlsRoute(ctx, \"default\", \u0026networkservices.TlsRouteArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tGateways: pulumi.StringArray{\n\t\t\t\tdefaultGateway.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TlsRouteRuleArray{\n\t\t\t\t\u0026networkservices.TlsRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TlsRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleMatchArgs{\n\t\t\t\t\t\t\tSniHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAlpns: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"http/1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TlsRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TlsRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.gcp.networkservices.TlsRoute;\nimport com.pulumi.gcp.networkservices.TlsRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder()\n .name(\"my-tls-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .scope(\"my-scope\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .build());\n\n var defaultTlsRoute = new TlsRoute(\"defaultTlsRoute\", TlsRouteArgs.builder()\n .name(\"my-tls-route\")\n .description(\"my description\")\n .gateways(defaultGateway.id())\n .rules(TlsRouteRuleArgs.builder()\n .matches(TlsRouteRuleMatchArgs.builder()\n .sniHosts(\"example.com\")\n .alpns(\"http/1.1\")\n .build())\n .action(TlsRouteRuleActionArgs.builder()\n .destinations(TlsRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGateway:\n type: gcp:networkservices:Gateway\n name: default\n properties:\n name: my-tls-route\n labels:\n foo: bar\n description: my description\n scope: my-scope\n type: OPEN_MESH\n ports:\n - 443\n defaultTlsRoute:\n type: gcp:networkservices:TlsRoute\n name: default\n properties:\n name: my-tls-route\n description: my description\n gateways:\n - ${defaultGateway.id}\n rules:\n - matches:\n - sniHosts:\n - example.com\n alpns:\n - http/1.1\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTlsRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/tlsRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TlsRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/tlsRoute:TlsRoute default projects/{{project}}/locations/global/tlsRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tlsRoute:TlsRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tlsRoute:TlsRoute default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Network Services Tls Route Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultTlsRoute = new gcp.networkservices.TlsRoute(\"default\", {\n name: \"my-tls-route\",\n description: \"my description\",\n rules: [{\n matches: [{\n sniHosts: [\"example.com\"],\n alpns: [\"http/1.1\"],\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_tls_route = gcp.networkservices.TlsRoute(\"default\",\n name=\"my-tls-route\",\n description=\"my description\",\n rules=[{\n \"matches\": [{\n \"sni_hosts\": [\"example.com\"],\n \"alpns\": [\"http/1.1\"],\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultTlsRoute = new Gcp.NetworkServices.TlsRoute(\"default\", new()\n {\n Name = \"my-tls-route\",\n Description = \"my description\",\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleMatchArgs\n {\n SniHosts = new[]\n {\n \"example.com\",\n },\n Alpns = new[]\n {\n \"http/1.1\",\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TlsRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTlsRoute(ctx, \"default\", \u0026networkservices.TlsRouteArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tRules: networkservices.TlsRouteRuleArray{\n\t\t\t\t\u0026networkservices.TlsRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TlsRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleMatchArgs{\n\t\t\t\t\t\t\tSniHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAlpns: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"http/1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TlsRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TlsRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.TlsRoute;\nimport com.pulumi.gcp.networkservices.TlsRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultTlsRoute = new TlsRoute(\"defaultTlsRoute\", TlsRouteArgs.builder()\n .name(\"my-tls-route\")\n .description(\"my description\")\n .rules(TlsRouteRuleArgs.builder()\n .matches(TlsRouteRuleMatchArgs.builder()\n .sniHosts(\"example.com\")\n .alpns(\"http/1.1\")\n .build())\n .action(TlsRouteRuleActionArgs.builder()\n .destinations(TlsRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultTlsRoute:\n type: gcp:networkservices:TlsRoute\n name: default\n properties:\n name: my-tls-route\n description: my description\n rules:\n - matches:\n - sniHosts:\n - example.com\n alpns:\n - http/1.1\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tls Route Mesh Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultMesh = new gcp.networkservices.Mesh(\"default\", {\n name: \"my-tls-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n});\nconst defaultTlsRoute = new gcp.networkservices.TlsRoute(\"default\", {\n name: \"my-tls-route\",\n description: \"my description\",\n meshes: [defaultMesh.id],\n rules: [{\n matches: [{\n sniHosts: [\"example.com\"],\n alpns: [\"http/1.1\"],\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_mesh = gcp.networkservices.Mesh(\"default\",\n name=\"my-tls-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\")\ndefault_tls_route = gcp.networkservices.TlsRoute(\"default\",\n name=\"my-tls-route\",\n description=\"my description\",\n meshes=[default_mesh.id],\n rules=[{\n \"matches\": [{\n \"sni_hosts\": [\"example.com\"],\n \"alpns\": [\"http/1.1\"],\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultMesh = new Gcp.NetworkServices.Mesh(\"default\", new()\n {\n Name = \"my-tls-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n });\n\n var defaultTlsRoute = new Gcp.NetworkServices.TlsRoute(\"default\", new()\n {\n Name = \"my-tls-route\",\n Description = \"my description\",\n Meshes = new[]\n {\n defaultMesh.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleMatchArgs\n {\n SniHosts = new[]\n {\n \"example.com\",\n },\n Alpns = new[]\n {\n \"http/1.1\",\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TlsRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultMesh, err := networkservices.NewMesh(ctx, \"default\", \u0026networkservices.MeshArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTlsRoute(ctx, \"default\", \u0026networkservices.TlsRouteArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tMeshes: pulumi.StringArray{\n\t\t\t\tdefaultMesh.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TlsRouteRuleArray{\n\t\t\t\t\u0026networkservices.TlsRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TlsRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleMatchArgs{\n\t\t\t\t\t\t\tSniHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAlpns: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"http/1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TlsRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TlsRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Mesh;\nimport com.pulumi.gcp.networkservices.MeshArgs;\nimport com.pulumi.gcp.networkservices.TlsRoute;\nimport com.pulumi.gcp.networkservices.TlsRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultMesh = new Mesh(\"defaultMesh\", MeshArgs.builder()\n .name(\"my-tls-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .build());\n\n var defaultTlsRoute = new TlsRoute(\"defaultTlsRoute\", TlsRouteArgs.builder()\n .name(\"my-tls-route\")\n .description(\"my description\")\n .meshes(defaultMesh.id())\n .rules(TlsRouteRuleArgs.builder()\n .matches(TlsRouteRuleMatchArgs.builder()\n .sniHosts(\"example.com\")\n .alpns(\"http/1.1\")\n .build())\n .action(TlsRouteRuleActionArgs.builder()\n .destinations(TlsRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultMesh:\n type: gcp:networkservices:Mesh\n name: default\n properties:\n name: my-tls-route\n labels:\n foo: bar\n description: my description\n defaultTlsRoute:\n type: gcp:networkservices:TlsRoute\n name: default\n properties:\n name: my-tls-route\n description: my description\n meshes:\n - ${defaultMesh.id}\n rules:\n - matches:\n - sniHosts:\n - example.com\n alpns:\n - http/1.1\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Network Services Tls Route Gateway Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst defaultHttpHealthCheck = new gcp.compute.HttpHealthCheck(\"default\", {\n name: \"backend-service-health-check\",\n requestPath: \"/\",\n checkIntervalSec: 1,\n timeoutSec: 1,\n});\nconst _default = new gcp.compute.BackendService(\"default\", {\n name: \"my-backend-service\",\n healthChecks: defaultHttpHealthCheck.id,\n});\nconst defaultGateway = new gcp.networkservices.Gateway(\"default\", {\n name: \"my-tls-route\",\n labels: {\n foo: \"bar\",\n },\n description: \"my description\",\n scope: \"my-scope\",\n type: \"OPEN_MESH\",\n ports: [443],\n});\nconst defaultTlsRoute = new gcp.networkservices.TlsRoute(\"default\", {\n name: \"my-tls-route\",\n description: \"my description\",\n gateways: [defaultGateway.id],\n rules: [{\n matches: [{\n sniHosts: [\"example.com\"],\n alpns: [\"http/1.1\"],\n }],\n action: {\n destinations: [{\n serviceName: _default.id,\n weight: 1,\n }],\n },\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault_http_health_check = gcp.compute.HttpHealthCheck(\"default\",\n name=\"backend-service-health-check\",\n request_path=\"/\",\n check_interval_sec=1,\n timeout_sec=1)\ndefault = gcp.compute.BackendService(\"default\",\n name=\"my-backend-service\",\n health_checks=default_http_health_check.id)\ndefault_gateway = gcp.networkservices.Gateway(\"default\",\n name=\"my-tls-route\",\n labels={\n \"foo\": \"bar\",\n },\n description=\"my description\",\n scope=\"my-scope\",\n type=\"OPEN_MESH\",\n ports=[443])\ndefault_tls_route = gcp.networkservices.TlsRoute(\"default\",\n name=\"my-tls-route\",\n description=\"my description\",\n gateways=[default_gateway.id],\n rules=[{\n \"matches\": [{\n \"sni_hosts\": [\"example.com\"],\n \"alpns\": [\"http/1.1\"],\n }],\n \"action\": {\n \"destinations\": [{\n \"service_name\": default.id,\n \"weight\": 1,\n }],\n },\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var defaultHttpHealthCheck = new Gcp.Compute.HttpHealthCheck(\"default\", new()\n {\n Name = \"backend-service-health-check\",\n RequestPath = \"/\",\n CheckIntervalSec = 1,\n TimeoutSec = 1,\n });\n\n var @default = new Gcp.Compute.BackendService(\"default\", new()\n {\n Name = \"my-backend-service\",\n HealthChecks = defaultHttpHealthCheck.Id,\n });\n\n var defaultGateway = new Gcp.NetworkServices.Gateway(\"default\", new()\n {\n Name = \"my-tls-route\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Description = \"my description\",\n Scope = \"my-scope\",\n Type = \"OPEN_MESH\",\n Ports = new[]\n {\n 443,\n },\n });\n\n var defaultTlsRoute = new Gcp.NetworkServices.TlsRoute(\"default\", new()\n {\n Name = \"my-tls-route\",\n Description = \"my description\",\n Gateways = new[]\n {\n defaultGateway.Id,\n },\n Rules = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleArgs\n {\n Matches = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleMatchArgs\n {\n SniHosts = new[]\n {\n \"example.com\",\n },\n Alpns = new[]\n {\n \"http/1.1\",\n },\n },\n },\n Action = new Gcp.NetworkServices.Inputs.TlsRouteRuleActionArgs\n {\n Destinations = new[]\n {\n new Gcp.NetworkServices.Inputs.TlsRouteRuleActionDestinationArgs\n {\n ServiceName = @default.Id,\n Weight = 1,\n },\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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\tdefaultHttpHealthCheck, err := compute.NewHttpHealthCheck(ctx, \"default\", \u0026compute.HttpHealthCheckArgs{\n\t\t\tName: pulumi.String(\"backend-service-health-check\"),\n\t\t\tRequestPath: pulumi.String(\"/\"),\n\t\t\tCheckIntervalSec: pulumi.Int(1),\n\t\t\tTimeoutSec: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := compute.NewBackendService(ctx, \"default\", \u0026compute.BackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tHealthChecks: defaultHttpHealthCheck.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultGateway, err := networkservices.NewGateway(ctx, \"default\", \u0026networkservices.GatewayArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tScope: pulumi.String(\"my-scope\"),\n\t\t\tType: pulumi.String(\"OPEN_MESH\"),\n\t\t\tPorts: pulumi.IntArray{\n\t\t\t\tpulumi.Int(443),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = networkservices.NewTlsRoute(ctx, \"default\", \u0026networkservices.TlsRouteArgs{\n\t\t\tName: pulumi.String(\"my-tls-route\"),\n\t\t\tDescription: pulumi.String(\"my description\"),\n\t\t\tGateways: pulumi.StringArray{\n\t\t\t\tdefaultGateway.ID(),\n\t\t\t},\n\t\t\tRules: networkservices.TlsRouteRuleArray{\n\t\t\t\t\u0026networkservices.TlsRouteRuleArgs{\n\t\t\t\t\tMatches: networkservices.TlsRouteRuleMatchArray{\n\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleMatchArgs{\n\t\t\t\t\t\t\tSniHosts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"example.com\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tAlpns: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"http/1.1\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tAction: \u0026networkservices.TlsRouteRuleActionArgs{\n\t\t\t\t\t\tDestinations: networkservices.TlsRouteRuleActionDestinationArray{\n\t\t\t\t\t\t\t\u0026networkservices.TlsRouteRuleActionDestinationArgs{\n\t\t\t\t\t\t\t\tServiceName: _default.ID(),\n\t\t\t\t\t\t\t\tWeight: pulumi.Int(1),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.HttpHealthCheck;\nimport com.pulumi.gcp.compute.HttpHealthCheckArgs;\nimport com.pulumi.gcp.compute.BackendService;\nimport com.pulumi.gcp.compute.BackendServiceArgs;\nimport com.pulumi.gcp.networkservices.Gateway;\nimport com.pulumi.gcp.networkservices.GatewayArgs;\nimport com.pulumi.gcp.networkservices.TlsRoute;\nimport com.pulumi.gcp.networkservices.TlsRouteArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleArgs;\nimport com.pulumi.gcp.networkservices.inputs.TlsRouteRuleActionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var defaultHttpHealthCheck = new HttpHealthCheck(\"defaultHttpHealthCheck\", HttpHealthCheckArgs.builder()\n .name(\"backend-service-health-check\")\n .requestPath(\"/\")\n .checkIntervalSec(1)\n .timeoutSec(1)\n .build());\n\n var default_ = new BackendService(\"default\", BackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .healthChecks(defaultHttpHealthCheck.id())\n .build());\n\n var defaultGateway = new Gateway(\"defaultGateway\", GatewayArgs.builder()\n .name(\"my-tls-route\")\n .labels(Map.of(\"foo\", \"bar\"))\n .description(\"my description\")\n .scope(\"my-scope\")\n .type(\"OPEN_MESH\")\n .ports(443)\n .build());\n\n var defaultTlsRoute = new TlsRoute(\"defaultTlsRoute\", TlsRouteArgs.builder()\n .name(\"my-tls-route\")\n .description(\"my description\")\n .gateways(defaultGateway.id())\n .rules(TlsRouteRuleArgs.builder()\n .matches(TlsRouteRuleMatchArgs.builder()\n .sniHosts(\"example.com\")\n .alpns(\"http/1.1\")\n .build())\n .action(TlsRouteRuleActionArgs.builder()\n .destinations(TlsRouteRuleActionDestinationArgs.builder()\n .serviceName(default_.id())\n .weight(1)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:BackendService\n properties:\n name: my-backend-service\n healthChecks: ${defaultHttpHealthCheck.id}\n defaultHttpHealthCheck:\n type: gcp:compute:HttpHealthCheck\n name: default\n properties:\n name: backend-service-health-check\n requestPath: /\n checkIntervalSec: 1\n timeoutSec: 1\n defaultGateway:\n type: gcp:networkservices:Gateway\n name: default\n properties:\n name: my-tls-route\n labels:\n foo: bar\n description: my description\n scope: my-scope\n type: OPEN_MESH\n ports:\n - 443\n defaultTlsRoute:\n type: gcp:networkservices:TlsRoute\n name: default\n properties:\n name: my-tls-route\n description: my description\n gateways:\n - ${defaultGateway.id}\n rules:\n - matches:\n - sniHosts:\n - example.com\n alpns:\n - http/1.1\n action:\n destinations:\n - serviceName: ${default.id}\n weight: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nTlsRoute can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/tlsRoutes/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, TlsRoute can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:networkservices/tlsRoute:TlsRoute default projects/{{project}}/locations/global/tlsRoutes/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tlsRoute:TlsRoute default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:networkservices/tlsRoute:TlsRoute default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -260728,7 +260728,7 @@ } }, "gcp:oracledatabase/autonomousDatabase:AutonomousDatabase": { - "description": "An AutonomousDatabase resource.\n\n\nTo get more information about AutonomousDatabase, see:\n\n* [API documentation](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.autonomousDatabases)\n* How-to Guides\n * [Create Autonomous databases](https://cloud.google.com/oracle/database/docs/create-databases)\n\n## Example Usage\n\n### Oracledatabase Autonomous Database Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"new\",\n project: \"my-project\",\n});\nconst myADB = new gcp.oracledatabase.AutonomousDatabase(\"myADB\", {\n autonomousDatabaseId: \"my-instance\",\n location: \"us-east4\",\n project: \"my-project\",\n database: \"mydatabase\",\n adminPassword: \"123Abpassword\",\n network: _default.then(_default =\u003e _default.id),\n cidr: \"10.5.0.0/24\",\n properties: {\n computeCount: 2,\n dataStorageSizeTb: 1,\n dbVersion: \"19c\",\n dbWorkload: \"OLTP\",\n licenseType: \"LICENSE_INCLUDED\",\n },\n deletionProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"new\",\n project=\"my-project\")\nmy_adb = gcp.oracledatabase.AutonomousDatabase(\"myADB\",\n autonomous_database_id=\"my-instance\",\n location=\"us-east4\",\n project=\"my-project\",\n database=\"mydatabase\",\n admin_password=\"123Abpassword\",\n network=default.id,\n cidr=\"10.5.0.0/24\",\n properties={\n \"compute_count\": 2,\n \"data_storage_size_tb\": 1,\n \"db_version\": \"19c\",\n \"db_workload\": \"OLTP\",\n \"license_type\": \"LICENSE_INCLUDED\",\n },\n deletion_protection=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"new\",\n Project = \"my-project\",\n });\n\n var myADB = new Gcp.OracleDatabase.AutonomousDatabase(\"myADB\", new()\n {\n AutonomousDatabaseId = \"my-instance\",\n Location = \"us-east4\",\n Project = \"my-project\",\n Database = \"mydatabase\",\n AdminPassword = \"123Abpassword\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Cidr = \"10.5.0.0/24\",\n Properties = new Gcp.OracleDatabase.Inputs.AutonomousDatabasePropertiesArgs\n {\n ComputeCount = 2,\n DataStorageSizeTb = 1,\n DbVersion = \"19c\",\n DbWorkload = \"OLTP\",\n LicenseType = \"LICENSE_INCLUDED\",\n },\n DeletionProtection = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"new\",\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oracledatabase.NewAutonomousDatabase(ctx, \"myADB\", \u0026oracledatabase.AutonomousDatabaseArgs{\n\t\t\tAutonomousDatabaseId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tDatabase: pulumi.String(\"mydatabase\"),\n\t\t\tAdminPassword: pulumi.String(\"123Abpassword\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tCidr: pulumi.String(\"10.5.0.0/24\"),\n\t\t\tProperties: \u0026oracledatabase.AutonomousDatabasePropertiesArgs{\n\t\t\t\tComputeCount: pulumi.Float64(2),\n\t\t\t\tDataStorageSizeTb: pulumi.Int(1),\n\t\t\t\tDbVersion: pulumi.String(\"19c\"),\n\t\t\t\tDbWorkload: pulumi.String(\"OLTP\"),\n\t\t\t\tLicenseType: pulumi.String(\"LICENSE_INCLUDED\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.oracledatabase.AutonomousDatabase;\nimport com.pulumi.gcp.oracledatabase.AutonomousDatabaseArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.AutonomousDatabasePropertiesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"new\")\n .project(\"my-project\")\n .build());\n\n var myADB = new AutonomousDatabase(\"myADB\", AutonomousDatabaseArgs.builder()\n .autonomousDatabaseId(\"my-instance\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .database(\"mydatabase\")\n .adminPassword(\"123Abpassword\")\n .network(default_.id())\n .cidr(\"10.5.0.0/24\")\n .properties(AutonomousDatabasePropertiesArgs.builder()\n .computeCount(\"2\")\n .dataStorageSizeTb(\"1\")\n .dbVersion(\"19c\")\n .dbWorkload(\"OLTP\")\n .licenseType(\"LICENSE_INCLUDED\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myADB:\n type: gcp:oracledatabase:AutonomousDatabase\n properties:\n autonomousDatabaseId: my-instance\n location: us-east4\n project: my-project\n database: mydatabase\n adminPassword: 123Abpassword\n network: ${default.id}\n cidr: 10.5.0.0/24\n properties:\n computeCount: '2'\n dataStorageSizeTb: '1'\n dbVersion: 19c\n dbWorkload: OLTP\n licenseType: LICENSE_INCLUDED\n deletionProtection: 'true'\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: new\n project: my-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Oracledatabase Autonomous Database Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.compute.getNetwork({\n name: \"new\",\n project: \"my-project\",\n});\nconst myADB = new gcp.oracledatabase.AutonomousDatabase(\"myADB\", {\n autonomousDatabaseId: \"my-instance\",\n location: \"us-east4\",\n project: \"my-project\",\n displayName: \"autonomousDatabase displayname\",\n database: \"mydatabase\",\n adminPassword: \"123Abpassword\",\n network: _default.then(_default =\u003e _default.id),\n cidr: \"10.5.0.0/24\",\n labels: {\n \"label-one\": \"value-one\",\n },\n properties: {\n computeCount: 2,\n dataStorageSizeGb: 48,\n dbVersion: \"19c\",\n dbEdition: \"STANDARD_EDITION\",\n dbWorkload: \"OLTP\",\n isAutoScalingEnabled: true,\n licenseType: \"BRING_YOUR_OWN_LICENSE\",\n backupRetentionPeriodDays: 60,\n characterSet: \"AL32UTF8\",\n isStorageAutoScalingEnabled: false,\n maintenanceScheduleType: \"REGULAR\",\n mtlsConnectionRequired: false,\n nCharacterSet: \"AL16UTF16\",\n operationsInsightsState: \"NOT_ENABLED\",\n customerContacts: [{\n email: \"xyz@example.com\",\n }],\n privateEndpointIp: \"10.5.0.11\",\n privateEndpointLabel: \"myendpoint\",\n },\n deletionProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"new\",\n project=\"my-project\")\nmy_adb = gcp.oracledatabase.AutonomousDatabase(\"myADB\",\n autonomous_database_id=\"my-instance\",\n location=\"us-east4\",\n project=\"my-project\",\n display_name=\"autonomousDatabase displayname\",\n database=\"mydatabase\",\n admin_password=\"123Abpassword\",\n network=default.id,\n cidr=\"10.5.0.0/24\",\n labels={\n \"label-one\": \"value-one\",\n },\n properties={\n \"compute_count\": 2,\n \"data_storage_size_gb\": 48,\n \"db_version\": \"19c\",\n \"db_edition\": \"STANDARD_EDITION\",\n \"db_workload\": \"OLTP\",\n \"is_auto_scaling_enabled\": True,\n \"license_type\": \"BRING_YOUR_OWN_LICENSE\",\n \"backup_retention_period_days\": 60,\n \"character_set\": \"AL32UTF8\",\n \"is_storage_auto_scaling_enabled\": False,\n \"maintenance_schedule_type\": \"REGULAR\",\n \"mtls_connection_required\": False,\n \"n_character_set\": \"AL16UTF16\",\n \"operations_insights_state\": \"NOT_ENABLED\",\n \"customer_contacts\": [{\n \"email\": \"xyz@example.com\",\n }],\n \"private_endpoint_ip\": \"10.5.0.11\",\n \"private_endpoint_label\": \"myendpoint\",\n },\n deletion_protection=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"new\",\n Project = \"my-project\",\n });\n\n var myADB = new Gcp.OracleDatabase.AutonomousDatabase(\"myADB\", new()\n {\n AutonomousDatabaseId = \"my-instance\",\n Location = \"us-east4\",\n Project = \"my-project\",\n DisplayName = \"autonomousDatabase displayname\",\n Database = \"mydatabase\",\n AdminPassword = \"123Abpassword\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Cidr = \"10.5.0.0/24\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Properties = new Gcp.OracleDatabase.Inputs.AutonomousDatabasePropertiesArgs\n {\n ComputeCount = 2,\n DataStorageSizeGb = 48,\n DbVersion = \"19c\",\n DbEdition = \"STANDARD_EDITION\",\n DbWorkload = \"OLTP\",\n IsAutoScalingEnabled = true,\n LicenseType = \"BRING_YOUR_OWN_LICENSE\",\n BackupRetentionPeriodDays = 60,\n CharacterSet = \"AL32UTF8\",\n IsStorageAutoScalingEnabled = false,\n MaintenanceScheduleType = \"REGULAR\",\n MtlsConnectionRequired = false,\n NCharacterSet = \"AL16UTF16\",\n OperationsInsightsState = \"NOT_ENABLED\",\n CustomerContacts = new[]\n {\n new Gcp.OracleDatabase.Inputs.AutonomousDatabasePropertiesCustomerContactArgs\n {\n Email = \"xyz@example.com\",\n },\n },\n PrivateEndpointIp = \"10.5.0.11\",\n PrivateEndpointLabel = \"myendpoint\",\n },\n DeletionProtection = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"new\",\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oracledatabase.NewAutonomousDatabase(ctx, \"myADB\", \u0026oracledatabase.AutonomousDatabaseArgs{\n\t\t\tAutonomousDatabaseId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tDisplayName: pulumi.String(\"autonomousDatabase displayname\"),\n\t\t\tDatabase: pulumi.String(\"mydatabase\"),\n\t\t\tAdminPassword: pulumi.String(\"123Abpassword\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tCidr: pulumi.String(\"10.5.0.0/24\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProperties: \u0026oracledatabase.AutonomousDatabasePropertiesArgs{\n\t\t\t\tComputeCount: pulumi.Float64(2),\n\t\t\t\tDataStorageSizeGb: pulumi.Int(48),\n\t\t\t\tDbVersion: pulumi.String(\"19c\"),\n\t\t\t\tDbEdition: pulumi.String(\"STANDARD_EDITION\"),\n\t\t\t\tDbWorkload: pulumi.String(\"OLTP\"),\n\t\t\t\tIsAutoScalingEnabled: pulumi.Bool(true),\n\t\t\t\tLicenseType: pulumi.String(\"BRING_YOUR_OWN_LICENSE\"),\n\t\t\t\tBackupRetentionPeriodDays: pulumi.Int(60),\n\t\t\t\tCharacterSet: pulumi.String(\"AL32UTF8\"),\n\t\t\t\tIsStorageAutoScalingEnabled: pulumi.Bool(false),\n\t\t\t\tMaintenanceScheduleType: pulumi.String(\"REGULAR\"),\n\t\t\t\tMtlsConnectionRequired: pulumi.Bool(false),\n\t\t\t\tNCharacterSet: pulumi.String(\"AL16UTF16\"),\n\t\t\t\tOperationsInsightsState: pulumi.String(\"NOT_ENABLED\"),\n\t\t\t\tCustomerContacts: oracledatabase.AutonomousDatabasePropertiesCustomerContactArray{\n\t\t\t\t\t\u0026oracledatabase.AutonomousDatabasePropertiesCustomerContactArgs{\n\t\t\t\t\t\tEmail: pulumi.String(\"xyz@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPrivateEndpointIp: pulumi.String(\"10.5.0.11\"),\n\t\t\t\tPrivateEndpointLabel: pulumi.String(\"myendpoint\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.oracledatabase.AutonomousDatabase;\nimport com.pulumi.gcp.oracledatabase.AutonomousDatabaseArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.AutonomousDatabasePropertiesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"new\")\n .project(\"my-project\")\n .build());\n\n var myADB = new AutonomousDatabase(\"myADB\", AutonomousDatabaseArgs.builder()\n .autonomousDatabaseId(\"my-instance\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .displayName(\"autonomousDatabase displayname\")\n .database(\"mydatabase\")\n .adminPassword(\"123Abpassword\")\n .network(default_.id())\n .cidr(\"10.5.0.0/24\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .properties(AutonomousDatabasePropertiesArgs.builder()\n .computeCount(\"2\")\n .dataStorageSizeGb(\"48\")\n .dbVersion(\"19c\")\n .dbEdition(\"STANDARD_EDITION\")\n .dbWorkload(\"OLTP\")\n .isAutoScalingEnabled(\"true\")\n .licenseType(\"BRING_YOUR_OWN_LICENSE\")\n .backupRetentionPeriodDays(\"60\")\n .characterSet(\"AL32UTF8\")\n .isStorageAutoScalingEnabled(\"false\")\n .maintenanceScheduleType(\"REGULAR\")\n .mtlsConnectionRequired(\"false\")\n .nCharacterSet(\"AL16UTF16\")\n .operationsInsightsState(\"NOT_ENABLED\")\n .customerContacts(AutonomousDatabasePropertiesCustomerContactArgs.builder()\n .email(\"xyz@example.com\")\n .build())\n .privateEndpointIp(\"10.5.0.11\")\n .privateEndpointLabel(\"myendpoint\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myADB:\n type: gcp:oracledatabase:AutonomousDatabase\n properties:\n autonomousDatabaseId: my-instance\n location: us-east4\n project: my-project\n displayName: autonomousDatabase displayname\n database: mydatabase\n adminPassword: 123Abpassword\n network: ${default.id}\n cidr: 10.5.0.0/24\n labels:\n label-one: value-one\n properties:\n computeCount: '2'\n dataStorageSizeGb: '48'\n dbVersion: 19c\n dbEdition: STANDARD_EDITION\n dbWorkload: OLTP\n isAutoScalingEnabled: 'true'\n licenseType: BRING_YOUR_OWN_LICENSE\n backupRetentionPeriodDays: '60'\n characterSet: AL32UTF8\n isStorageAutoScalingEnabled: 'false'\n maintenanceScheduleType: REGULAR\n mtlsConnectionRequired: 'false'\n nCharacterSet: AL16UTF16\n operationsInsightsState: NOT_ENABLED\n customerContacts:\n - email: xyz@example.com\n privateEndpointIp: 10.5.0.11\n privateEndpointLabel: myendpoint\n deletionProtection: 'true'\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: new\n project: my-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutonomousDatabase can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/autonomousDatabases/{{autonomous_database_id}}`\n\n* `{{project}}/{{location}}/{{autonomous_database_id}}`\n\n* `{{location}}/{{autonomous_database_id}}`\n\nWhen using the `pulumi import` command, AutonomousDatabase can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:oracledatabase/autonomousDatabase:AutonomousDatabase default projects/{{project}}/locations/{{location}}/autonomousDatabases/{{autonomous_database_id}}\n```\n\n```sh\n$ pulumi import gcp:oracledatabase/autonomousDatabase:AutonomousDatabase default {{project}}/{{location}}/{{autonomous_database_id}}\n```\n\n```sh\n$ pulumi import gcp:oracledatabase/autonomousDatabase:AutonomousDatabase default {{location}}/{{autonomous_database_id}}\n```\n\n", + "description": "An AutonomousDatabase resource.\n\n\nTo get more information about AutonomousDatabase, see:\n\n* [API documentation](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.autonomousDatabases)\n* How-to Guides\n * [Create Autonomous databases](https://cloud.google.com/oracle/database/docs/create-databases)\n\n## Example Usage\n\n### Oracledatabase Autonomous Database Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = gcp.compute.getNetwork({\n name: \"new\",\n project: \"my-project\",\n});\nconst myADB = new gcp.oracledatabase.AutonomousDatabase(\"myADB\", {\n autonomousDatabaseId: \"my-instance\",\n location: \"us-east4\",\n project: \"my-project\",\n database: \"mydatabase\",\n adminPassword: \"123Abpassword\",\n network: _default.then(_default =\u003e _default.id),\n cidr: \"10.5.0.0/24\",\n properties: {\n computeCount: 2,\n dataStorageSizeTb: 1,\n dbVersion: \"19c\",\n dbWorkload: \"OLTP\",\n licenseType: \"LICENSE_INCLUDED\",\n },\n deletionProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"new\",\n project=\"my-project\")\nmy_adb = gcp.oracledatabase.AutonomousDatabase(\"myADB\",\n autonomous_database_id=\"my-instance\",\n location=\"us-east4\",\n project=\"my-project\",\n database=\"mydatabase\",\n admin_password=\"123Abpassword\",\n network=default.id,\n cidr=\"10.5.0.0/24\",\n properties={\n \"compute_count\": 2,\n \"data_storage_size_tb\": 1,\n \"db_version\": \"19c\",\n \"db_workload\": \"OLTP\",\n \"license_type\": \"LICENSE_INCLUDED\",\n },\n deletion_protection=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"new\",\n Project = \"my-project\",\n });\n\n var myADB = new Gcp.OracleDatabase.AutonomousDatabase(\"myADB\", new()\n {\n AutonomousDatabaseId = \"my-instance\",\n Location = \"us-east4\",\n Project = \"my-project\",\n Database = \"mydatabase\",\n AdminPassword = \"123Abpassword\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Cidr = \"10.5.0.0/24\",\n Properties = new Gcp.OracleDatabase.Inputs.AutonomousDatabasePropertiesArgs\n {\n ComputeCount = 2,\n DataStorageSizeTb = 1,\n DbVersion = \"19c\",\n DbWorkload = \"OLTP\",\n LicenseType = \"LICENSE_INCLUDED\",\n },\n DeletionProtection = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"new\",\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oracledatabase.NewAutonomousDatabase(ctx, \"myADB\", \u0026oracledatabase.AutonomousDatabaseArgs{\n\t\t\tAutonomousDatabaseId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tDatabase: pulumi.String(\"mydatabase\"),\n\t\t\tAdminPassword: pulumi.String(\"123Abpassword\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tCidr: pulumi.String(\"10.5.0.0/24\"),\n\t\t\tProperties: \u0026oracledatabase.AutonomousDatabasePropertiesArgs{\n\t\t\t\tComputeCount: pulumi.Float64(2),\n\t\t\t\tDataStorageSizeTb: pulumi.Int(1),\n\t\t\t\tDbVersion: pulumi.String(\"19c\"),\n\t\t\t\tDbWorkload: pulumi.String(\"OLTP\"),\n\t\t\t\tLicenseType: pulumi.String(\"LICENSE_INCLUDED\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.oracledatabase.AutonomousDatabase;\nimport com.pulumi.gcp.oracledatabase.AutonomousDatabaseArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.AutonomousDatabasePropertiesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"new\")\n .project(\"my-project\")\n .build());\n\n var myADB = new AutonomousDatabase(\"myADB\", AutonomousDatabaseArgs.builder()\n .autonomousDatabaseId(\"my-instance\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .database(\"mydatabase\")\n .adminPassword(\"123Abpassword\")\n .network(default_.id())\n .cidr(\"10.5.0.0/24\")\n .properties(AutonomousDatabasePropertiesArgs.builder()\n .computeCount(\"2\")\n .dataStorageSizeTb(\"1\")\n .dbVersion(\"19c\")\n .dbWorkload(\"OLTP\")\n .licenseType(\"LICENSE_INCLUDED\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myADB:\n type: gcp:oracledatabase:AutonomousDatabase\n properties:\n autonomousDatabaseId: my-instance\n location: us-east4\n project: my-project\n database: mydatabase\n adminPassword: 123Abpassword\n network: ${default.id}\n cidr: 10.5.0.0/24\n properties:\n computeCount: '2'\n dataStorageSizeTb: '1'\n dbVersion: 19c\n dbWorkload: OLTP\n licenseType: LICENSE_INCLUDED\n deletionProtection: 'true'\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: new\n project: my-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Oracledatabase Autonomous Database Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = gcp.compute.getNetwork({\n name: \"new\",\n project: \"my-project\",\n});\nconst myADB = new gcp.oracledatabase.AutonomousDatabase(\"myADB\", {\n autonomousDatabaseId: \"my-instance\",\n location: \"us-east4\",\n project: \"my-project\",\n displayName: \"autonomousDatabase displayname\",\n database: \"mydatabase\",\n adminPassword: \"123Abpassword\",\n network: _default.then(_default =\u003e _default.id),\n cidr: \"10.5.0.0/24\",\n labels: {\n \"label-one\": \"value-one\",\n },\n properties: {\n computeCount: 2,\n dataStorageSizeGb: 48,\n dbVersion: \"19c\",\n dbEdition: \"STANDARD_EDITION\",\n dbWorkload: \"OLTP\",\n isAutoScalingEnabled: true,\n licenseType: \"BRING_YOUR_OWN_LICENSE\",\n backupRetentionPeriodDays: 60,\n characterSet: \"AL32UTF8\",\n isStorageAutoScalingEnabled: false,\n maintenanceScheduleType: \"REGULAR\",\n mtlsConnectionRequired: false,\n nCharacterSet: \"AL16UTF16\",\n operationsInsightsState: \"NOT_ENABLED\",\n customerContacts: [{\n email: \"xyz@example.com\",\n }],\n privateEndpointIp: \"10.5.0.11\",\n privateEndpointLabel: \"myendpoint\",\n },\n deletionProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.get_network(name=\"new\",\n project=\"my-project\")\nmy_adb = gcp.oracledatabase.AutonomousDatabase(\"myADB\",\n autonomous_database_id=\"my-instance\",\n location=\"us-east4\",\n project=\"my-project\",\n display_name=\"autonomousDatabase displayname\",\n database=\"mydatabase\",\n admin_password=\"123Abpassword\",\n network=default.id,\n cidr=\"10.5.0.0/24\",\n labels={\n \"label-one\": \"value-one\",\n },\n properties={\n \"compute_count\": 2,\n \"data_storage_size_gb\": 48,\n \"db_version\": \"19c\",\n \"db_edition\": \"STANDARD_EDITION\",\n \"db_workload\": \"OLTP\",\n \"is_auto_scaling_enabled\": True,\n \"license_type\": \"BRING_YOUR_OWN_LICENSE\",\n \"backup_retention_period_days\": 60,\n \"character_set\": \"AL32UTF8\",\n \"is_storage_auto_scaling_enabled\": False,\n \"maintenance_schedule_type\": \"REGULAR\",\n \"mtls_connection_required\": False,\n \"n_character_set\": \"AL16UTF16\",\n \"operations_insights_state\": \"NOT_ENABLED\",\n \"customer_contacts\": [{\n \"email\": \"xyz@example.com\",\n }],\n \"private_endpoint_ip\": \"10.5.0.11\",\n \"private_endpoint_label\": \"myendpoint\",\n },\n deletion_protection=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"new\",\n Project = \"my-project\",\n });\n\n var myADB = new Gcp.OracleDatabase.AutonomousDatabase(\"myADB\", new()\n {\n AutonomousDatabaseId = \"my-instance\",\n Location = \"us-east4\",\n Project = \"my-project\",\n DisplayName = \"autonomousDatabase displayname\",\n Database = \"mydatabase\",\n AdminPassword = \"123Abpassword\",\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Cidr = \"10.5.0.0/24\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Properties = new Gcp.OracleDatabase.Inputs.AutonomousDatabasePropertiesArgs\n {\n ComputeCount = 2,\n DataStorageSizeGb = 48,\n DbVersion = \"19c\",\n DbEdition = \"STANDARD_EDITION\",\n DbWorkload = \"OLTP\",\n IsAutoScalingEnabled = true,\n LicenseType = \"BRING_YOUR_OWN_LICENSE\",\n BackupRetentionPeriodDays = 60,\n CharacterSet = \"AL32UTF8\",\n IsStorageAutoScalingEnabled = false,\n MaintenanceScheduleType = \"REGULAR\",\n MtlsConnectionRequired = false,\n NCharacterSet = \"AL16UTF16\",\n OperationsInsightsState = \"NOT_ENABLED\",\n CustomerContacts = new[]\n {\n new Gcp.OracleDatabase.Inputs.AutonomousDatabasePropertiesCustomerContactArgs\n {\n Email = \"xyz@example.com\",\n },\n },\n PrivateEndpointIp = \"10.5.0.11\",\n PrivateEndpointLabel = \"myendpoint\",\n },\n DeletionProtection = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"new\",\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oracledatabase.NewAutonomousDatabase(ctx, \"myADB\", \u0026oracledatabase.AutonomousDatabaseArgs{\n\t\t\tAutonomousDatabaseId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tDisplayName: pulumi.String(\"autonomousDatabase displayname\"),\n\t\t\tDatabase: pulumi.String(\"mydatabase\"),\n\t\t\tAdminPassword: pulumi.String(\"123Abpassword\"),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tCidr: pulumi.String(\"10.5.0.0/24\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProperties: \u0026oracledatabase.AutonomousDatabasePropertiesArgs{\n\t\t\t\tComputeCount: pulumi.Float64(2),\n\t\t\t\tDataStorageSizeGb: pulumi.Int(48),\n\t\t\t\tDbVersion: pulumi.String(\"19c\"),\n\t\t\t\tDbEdition: pulumi.String(\"STANDARD_EDITION\"),\n\t\t\t\tDbWorkload: pulumi.String(\"OLTP\"),\n\t\t\t\tIsAutoScalingEnabled: pulumi.Bool(true),\n\t\t\t\tLicenseType: pulumi.String(\"BRING_YOUR_OWN_LICENSE\"),\n\t\t\t\tBackupRetentionPeriodDays: pulumi.Int(60),\n\t\t\t\tCharacterSet: pulumi.String(\"AL32UTF8\"),\n\t\t\t\tIsStorageAutoScalingEnabled: pulumi.Bool(false),\n\t\t\t\tMaintenanceScheduleType: pulumi.String(\"REGULAR\"),\n\t\t\t\tMtlsConnectionRequired: pulumi.Bool(false),\n\t\t\t\tNCharacterSet: pulumi.String(\"AL16UTF16\"),\n\t\t\t\tOperationsInsightsState: pulumi.String(\"NOT_ENABLED\"),\n\t\t\t\tCustomerContacts: oracledatabase.AutonomousDatabasePropertiesCustomerContactArray{\n\t\t\t\t\t\u0026oracledatabase.AutonomousDatabasePropertiesCustomerContactArgs{\n\t\t\t\t\t\tEmail: pulumi.String(\"xyz@example.com\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPrivateEndpointIp: pulumi.String(\"10.5.0.11\"),\n\t\t\t\tPrivateEndpointLabel: pulumi.String(\"myendpoint\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.oracledatabase.AutonomousDatabase;\nimport com.pulumi.gcp.oracledatabase.AutonomousDatabaseArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.AutonomousDatabasePropertiesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"new\")\n .project(\"my-project\")\n .build());\n\n var myADB = new AutonomousDatabase(\"myADB\", AutonomousDatabaseArgs.builder()\n .autonomousDatabaseId(\"my-instance\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .displayName(\"autonomousDatabase displayname\")\n .database(\"mydatabase\")\n .adminPassword(\"123Abpassword\")\n .network(default_.id())\n .cidr(\"10.5.0.0/24\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .properties(AutonomousDatabasePropertiesArgs.builder()\n .computeCount(\"2\")\n .dataStorageSizeGb(\"48\")\n .dbVersion(\"19c\")\n .dbEdition(\"STANDARD_EDITION\")\n .dbWorkload(\"OLTP\")\n .isAutoScalingEnabled(\"true\")\n .licenseType(\"BRING_YOUR_OWN_LICENSE\")\n .backupRetentionPeriodDays(\"60\")\n .characterSet(\"AL32UTF8\")\n .isStorageAutoScalingEnabled(\"false\")\n .maintenanceScheduleType(\"REGULAR\")\n .mtlsConnectionRequired(\"false\")\n .nCharacterSet(\"AL16UTF16\")\n .operationsInsightsState(\"NOT_ENABLED\")\n .customerContacts(AutonomousDatabasePropertiesCustomerContactArgs.builder()\n .email(\"xyz@example.com\")\n .build())\n .privateEndpointIp(\"10.5.0.11\")\n .privateEndpointLabel(\"myendpoint\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myADB:\n type: gcp:oracledatabase:AutonomousDatabase\n properties:\n autonomousDatabaseId: my-instance\n location: us-east4\n project: my-project\n displayName: autonomousDatabase displayname\n database: mydatabase\n adminPassword: 123Abpassword\n network: ${default.id}\n cidr: 10.5.0.0/24\n labels:\n label-one: value-one\n properties:\n computeCount: '2'\n dataStorageSizeGb: '48'\n dbVersion: 19c\n dbEdition: STANDARD_EDITION\n dbWorkload: OLTP\n isAutoScalingEnabled: 'true'\n licenseType: BRING_YOUR_OWN_LICENSE\n backupRetentionPeriodDays: '60'\n characterSet: AL32UTF8\n isStorageAutoScalingEnabled: 'false'\n maintenanceScheduleType: REGULAR\n mtlsConnectionRequired: 'false'\n nCharacterSet: AL16UTF16\n operationsInsightsState: NOT_ENABLED\n customerContacts:\n - email: xyz@example.com\n privateEndpointIp: 10.5.0.11\n privateEndpointLabel: myendpoint\n deletionProtection: 'true'\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: new\n project: my-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAutonomousDatabase can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/autonomousDatabases/{{autonomous_database_id}}`\n\n* `{{project}}/{{location}}/{{autonomous_database_id}}`\n\n* `{{location}}/{{autonomous_database_id}}`\n\nWhen using the `pulumi import` command, AutonomousDatabase can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:oracledatabase/autonomousDatabase:AutonomousDatabase default projects/{{project}}/locations/{{location}}/autonomousDatabases/{{autonomous_database_id}}\n```\n\n```sh\n$ pulumi import gcp:oracledatabase/autonomousDatabase:AutonomousDatabase default {{project}}/{{location}}/{{autonomous_database_id}}\n```\n\n```sh\n$ pulumi import gcp:oracledatabase/autonomousDatabase:AutonomousDatabase default {{location}}/{{autonomous_database_id}}\n```\n\n", "properties": { "adminPassword": { "type": "string", @@ -261173,7 +261173,7 @@ } }, "gcp:oracledatabase/cloudVmCluster:CloudVmCluster": { - "description": "A CloudVmCluster resource.\n\n\nTo get more information about CloudVmCluster, see:\n\n* [API documentation](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.cloudVmClusters)\n* How-to Guides\n * [Create VM clusters](https://cloud.google.com/oracle/database/docs/create-clusters)\n\n## Example Usage\n\n### Oracledatabase Cloud Vmcluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloudExadataInfrastructures = new gcp.oracledatabase.CloudExadataInfrastructure(\"cloudExadataInfrastructures\", {\n cloudExadataInfrastructureId: \"my-exadata\",\n displayName: \"my-exadata displayname\",\n location: \"us-east4\",\n project: \"my-project\",\n properties: {\n shape: \"Exadata.X9M\",\n computeCount: 2,\n storageCount: 3,\n },\n deletionProtection: true,\n});\nconst default = gcp.compute.getNetwork({\n name: \"new\",\n project: \"my-project\",\n});\nconst myVmcluster = new gcp.oracledatabase.CloudVmCluster(\"my_vmcluster\", {\n cloudVmClusterId: \"my-instance\",\n displayName: \"my-instance displayname\",\n location: \"us-east4\",\n project: \"my-project\",\n exadataInfrastructure: cloudExadataInfrastructures.id,\n network: _default.then(_default =\u003e _default.id),\n cidr: \"10.5.0.0/24\",\n backupSubnetCidr: \"10.6.0.0/24\",\n properties: {\n licenseType: \"LICENSE_INCLUDED\",\n sshPublicKeys: [\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\"],\n cpuCoreCount: 4,\n giVersion: \"19.0.0.0\",\n hostnamePrefix: \"hostname1\",\n },\n deletionProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncloud_exadata_infrastructures = gcp.oracledatabase.CloudExadataInfrastructure(\"cloudExadataInfrastructures\",\n cloud_exadata_infrastructure_id=\"my-exadata\",\n display_name=\"my-exadata displayname\",\n location=\"us-east4\",\n project=\"my-project\",\n properties={\n \"shape\": \"Exadata.X9M\",\n \"compute_count\": 2,\n \"storage_count\": 3,\n },\n deletion_protection=True)\ndefault = gcp.compute.get_network(name=\"new\",\n project=\"my-project\")\nmy_vmcluster = gcp.oracledatabase.CloudVmCluster(\"my_vmcluster\",\n cloud_vm_cluster_id=\"my-instance\",\n display_name=\"my-instance displayname\",\n location=\"us-east4\",\n project=\"my-project\",\n exadata_infrastructure=cloud_exadata_infrastructures.id,\n network=default.id,\n cidr=\"10.5.0.0/24\",\n backup_subnet_cidr=\"10.6.0.0/24\",\n properties={\n \"license_type\": \"LICENSE_INCLUDED\",\n \"ssh_public_keys\": [\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\"],\n \"cpu_core_count\": 4,\n \"gi_version\": \"19.0.0.0\",\n \"hostname_prefix\": \"hostname1\",\n },\n deletion_protection=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloudExadataInfrastructures = new Gcp.OracleDatabase.CloudExadataInfrastructure(\"cloudExadataInfrastructures\", new()\n {\n CloudExadataInfrastructureId = \"my-exadata\",\n DisplayName = \"my-exadata displayname\",\n Location = \"us-east4\",\n Project = \"my-project\",\n Properties = new Gcp.OracleDatabase.Inputs.CloudExadataInfrastructurePropertiesArgs\n {\n Shape = \"Exadata.X9M\",\n ComputeCount = 2,\n StorageCount = 3,\n },\n DeletionProtection = true,\n });\n\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"new\",\n Project = \"my-project\",\n });\n\n var myVmcluster = new Gcp.OracleDatabase.CloudVmCluster(\"my_vmcluster\", new()\n {\n CloudVmClusterId = \"my-instance\",\n DisplayName = \"my-instance displayname\",\n Location = \"us-east4\",\n Project = \"my-project\",\n ExadataInfrastructure = cloudExadataInfrastructures.Id,\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Cidr = \"10.5.0.0/24\",\n BackupSubnetCidr = \"10.6.0.0/24\",\n Properties = new Gcp.OracleDatabase.Inputs.CloudVmClusterPropertiesArgs\n {\n LicenseType = \"LICENSE_INCLUDED\",\n SshPublicKeys = new[]\n {\n \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\",\n },\n CpuCoreCount = 4,\n GiVersion = \"19.0.0.0\",\n HostnamePrefix = \"hostname1\",\n },\n DeletionProtection = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcloudExadataInfrastructures, err := oracledatabase.NewCloudExadataInfrastructure(ctx, \"cloudExadataInfrastructures\", \u0026oracledatabase.CloudExadataInfrastructureArgs{\n\t\t\tCloudExadataInfrastructureId: pulumi.String(\"my-exadata\"),\n\t\t\tDisplayName: pulumi.String(\"my-exadata displayname\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tProperties: \u0026oracledatabase.CloudExadataInfrastructurePropertiesArgs{\n\t\t\t\tShape: pulumi.String(\"Exadata.X9M\"),\n\t\t\t\tComputeCount: pulumi.Int(2),\n\t\t\t\tStorageCount: pulumi.Int(3),\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_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"new\",\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oracledatabase.NewCloudVmCluster(ctx, \"my_vmcluster\", \u0026oracledatabase.CloudVmClusterArgs{\n\t\t\tCloudVmClusterId: pulumi.String(\"my-instance\"),\n\t\t\tDisplayName: pulumi.String(\"my-instance displayname\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tExadataInfrastructure: cloudExadataInfrastructures.ID(),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tCidr: pulumi.String(\"10.5.0.0/24\"),\n\t\t\tBackupSubnetCidr: pulumi.String(\"10.6.0.0/24\"),\n\t\t\tProperties: \u0026oracledatabase.CloudVmClusterPropertiesArgs{\n\t\t\t\tLicenseType: pulumi.String(\"LICENSE_INCLUDED\"),\n\t\t\t\tSshPublicKeys: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\"),\n\t\t\t\t},\n\t\t\t\tCpuCoreCount: pulumi.Int(4),\n\t\t\t\tGiVersion: pulumi.String(\"19.0.0.0\"),\n\t\t\t\tHostnamePrefix: pulumi.String(\"hostname1\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.oracledatabase.CloudExadataInfrastructure;\nimport com.pulumi.gcp.oracledatabase.CloudExadataInfrastructureArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.CloudExadataInfrastructurePropertiesArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.oracledatabase.CloudVmCluster;\nimport com.pulumi.gcp.oracledatabase.CloudVmClusterArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.CloudVmClusterPropertiesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cloudExadataInfrastructures = new CloudExadataInfrastructure(\"cloudExadataInfrastructures\", CloudExadataInfrastructureArgs.builder()\n .cloudExadataInfrastructureId(\"my-exadata\")\n .displayName(\"my-exadata displayname\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .properties(CloudExadataInfrastructurePropertiesArgs.builder()\n .shape(\"Exadata.X9M\")\n .computeCount(\"2\")\n .storageCount(\"3\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"new\")\n .project(\"my-project\")\n .build());\n\n var myVmcluster = new CloudVmCluster(\"myVmcluster\", CloudVmClusterArgs.builder()\n .cloudVmClusterId(\"my-instance\")\n .displayName(\"my-instance displayname\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .exadataInfrastructure(cloudExadataInfrastructures.id())\n .network(default_.id())\n .cidr(\"10.5.0.0/24\")\n .backupSubnetCidr(\"10.6.0.0/24\")\n .properties(CloudVmClusterPropertiesArgs.builder()\n .licenseType(\"LICENSE_INCLUDED\")\n .sshPublicKeys(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\")\n .cpuCoreCount(\"4\")\n .giVersion(\"19.0.0.0\")\n .hostnamePrefix(\"hostname1\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myVmcluster:\n type: gcp:oracledatabase:CloudVmCluster\n name: my_vmcluster\n properties:\n cloudVmClusterId: my-instance\n displayName: my-instance displayname\n location: us-east4\n project: my-project\n exadataInfrastructure: ${cloudExadataInfrastructures.id}\n network: ${default.id}\n cidr: 10.5.0.0/24\n backupSubnetCidr: 10.6.0.0/24\n properties:\n licenseType: LICENSE_INCLUDED\n sshPublicKeys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\n cpuCoreCount: '4'\n giVersion: 19.0.0.0\n hostnamePrefix: hostname1\n deletionProtection: 'true'\n cloudExadataInfrastructures:\n type: gcp:oracledatabase:CloudExadataInfrastructure\n properties:\n cloudExadataInfrastructureId: my-exadata\n displayName: my-exadata displayname\n location: us-east4\n project: my-project\n properties:\n shape: Exadata.X9M\n computeCount: '2'\n storageCount: '3'\n deletionProtection: 'true'\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: new\n project: my-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Oracledatabase Cloud Vmcluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloudExadataInfrastructures = new gcp.oracledatabase.CloudExadataInfrastructure(\"cloudExadataInfrastructures\", {\n cloudExadataInfrastructureId: \"my-exadata\",\n displayName: \"my-exadata displayname\",\n location: \"us-east4\",\n project: \"my-project\",\n properties: {\n shape: \"Exadata.X9M\",\n computeCount: 2,\n storageCount: 3,\n },\n deletionProtection: true,\n});\nconst default = gcp.compute.getNetwork({\n name: \"new\",\n project: \"my-project\",\n});\nconst mydbserver = gcp.oracledatabase.getDbServersOutput({\n location: \"us-east4\",\n project: \"my-project\",\n cloudExadataInfrastructure: cloudExadataInfrastructures.cloudExadataInfrastructureId,\n});\nconst myVmcluster = new gcp.oracledatabase.CloudVmCluster(\"my_vmcluster\", {\n cloudVmClusterId: \"my-instance\",\n displayName: \"my-instance displayname\",\n location: \"us-east4\",\n project: \"my-project\",\n exadataInfrastructure: cloudExadataInfrastructures.id,\n network: _default.then(_default =\u003e _default.id),\n cidr: \"10.5.0.0/24\",\n backupSubnetCidr: \"10.6.0.0/24\",\n labels: {\n \"label-one\": \"value-one\",\n },\n properties: {\n licenseType: \"LICENSE_INCLUDED\",\n sshPublicKeys: [\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\"],\n cpuCoreCount: 4,\n giVersion: \"19.0.0.0\",\n timeZone: {\n id: \"UTC\",\n },\n nodeCount: 2,\n ocpuCount: 4,\n dataStorageSizeTb: 2,\n dbNodeStorageSizeGb: 120,\n dbServerOcids: [\n mydbserver.apply(mydbserver =\u003e mydbserver.dbServers?.[0]?.properties?.[0]?.ocid),\n mydbserver.apply(mydbserver =\u003e mydbserver.dbServers?.[1]?.properties?.[0]?.ocid),\n ],\n diskRedundancy: \"HIGH\",\n sparseDiskgroupEnabled: false,\n localBackupEnabled: false,\n clusterName: \"pq-ppat4\",\n hostnamePrefix: \"hostname1\",\n diagnosticsDataCollectionOptions: {\n diagnosticsEventsEnabled: true,\n healthMonitoringEnabled: true,\n incidentLogsEnabled: true,\n },\n memorySizeGb: 60,\n },\n deletionProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncloud_exadata_infrastructures = gcp.oracledatabase.CloudExadataInfrastructure(\"cloudExadataInfrastructures\",\n cloud_exadata_infrastructure_id=\"my-exadata\",\n display_name=\"my-exadata displayname\",\n location=\"us-east4\",\n project=\"my-project\",\n properties={\n \"shape\": \"Exadata.X9M\",\n \"compute_count\": 2,\n \"storage_count\": 3,\n },\n deletion_protection=True)\ndefault = gcp.compute.get_network(name=\"new\",\n project=\"my-project\")\nmydbserver = gcp.oracledatabase.get_db_servers_output(location=\"us-east4\",\n project=\"my-project\",\n cloud_exadata_infrastructure=cloud_exadata_infrastructures.cloud_exadata_infrastructure_id)\nmy_vmcluster = gcp.oracledatabase.CloudVmCluster(\"my_vmcluster\",\n cloud_vm_cluster_id=\"my-instance\",\n display_name=\"my-instance displayname\",\n location=\"us-east4\",\n project=\"my-project\",\n exadata_infrastructure=cloud_exadata_infrastructures.id,\n network=default.id,\n cidr=\"10.5.0.0/24\",\n backup_subnet_cidr=\"10.6.0.0/24\",\n labels={\n \"label-one\": \"value-one\",\n },\n properties={\n \"license_type\": \"LICENSE_INCLUDED\",\n \"ssh_public_keys\": [\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\"],\n \"cpu_core_count\": 4,\n \"gi_version\": \"19.0.0.0\",\n \"time_zone\": {\n \"id\": \"UTC\",\n },\n \"node_count\": 2,\n \"ocpu_count\": 4,\n \"data_storage_size_tb\": 2,\n \"db_node_storage_size_gb\": 120,\n \"db_server_ocids\": [\n mydbserver.db_servers[0].properties[0].ocid,\n mydbserver.db_servers[1].properties[0].ocid,\n ],\n \"disk_redundancy\": \"HIGH\",\n \"sparse_diskgroup_enabled\": False,\n \"local_backup_enabled\": False,\n \"cluster_name\": \"pq-ppat4\",\n \"hostname_prefix\": \"hostname1\",\n \"diagnostics_data_collection_options\": {\n \"diagnostics_events_enabled\": True,\n \"health_monitoring_enabled\": True,\n \"incident_logs_enabled\": True,\n },\n \"memory_size_gb\": 60,\n },\n deletion_protection=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloudExadataInfrastructures = new Gcp.OracleDatabase.CloudExadataInfrastructure(\"cloudExadataInfrastructures\", new()\n {\n CloudExadataInfrastructureId = \"my-exadata\",\n DisplayName = \"my-exadata displayname\",\n Location = \"us-east4\",\n Project = \"my-project\",\n Properties = new Gcp.OracleDatabase.Inputs.CloudExadataInfrastructurePropertiesArgs\n {\n Shape = \"Exadata.X9M\",\n ComputeCount = 2,\n StorageCount = 3,\n },\n DeletionProtection = true,\n });\n\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"new\",\n Project = \"my-project\",\n });\n\n var mydbserver = Gcp.OracleDatabase.GetDbServers.Invoke(new()\n {\n Location = \"us-east4\",\n Project = \"my-project\",\n CloudExadataInfrastructure = cloudExadataInfrastructures.CloudExadataInfrastructureId,\n });\n\n var myVmcluster = new Gcp.OracleDatabase.CloudVmCluster(\"my_vmcluster\", new()\n {\n CloudVmClusterId = \"my-instance\",\n DisplayName = \"my-instance displayname\",\n Location = \"us-east4\",\n Project = \"my-project\",\n ExadataInfrastructure = cloudExadataInfrastructures.Id,\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Cidr = \"10.5.0.0/24\",\n BackupSubnetCidr = \"10.6.0.0/24\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Properties = new Gcp.OracleDatabase.Inputs.CloudVmClusterPropertiesArgs\n {\n LicenseType = \"LICENSE_INCLUDED\",\n SshPublicKeys = new[]\n {\n \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\",\n },\n CpuCoreCount = 4,\n GiVersion = \"19.0.0.0\",\n TimeZone = new Gcp.OracleDatabase.Inputs.CloudVmClusterPropertiesTimeZoneArgs\n {\n Id = \"UTC\",\n },\n NodeCount = 2,\n OcpuCount = 4,\n DataStorageSizeTb = 2,\n DbNodeStorageSizeGb = 120,\n DbServerOcids = new[]\n {\n mydbserver.Apply(getDbServersResult =\u003e getDbServersResult.DbServers[0]?.Properties[0]?.Ocid),\n mydbserver.Apply(getDbServersResult =\u003e getDbServersResult.DbServers[1]?.Properties[0]?.Ocid),\n },\n DiskRedundancy = \"HIGH\",\n SparseDiskgroupEnabled = false,\n LocalBackupEnabled = false,\n ClusterName = \"pq-ppat4\",\n HostnamePrefix = \"hostname1\",\n DiagnosticsDataCollectionOptions = new Gcp.OracleDatabase.Inputs.CloudVmClusterPropertiesDiagnosticsDataCollectionOptionsArgs\n {\n DiagnosticsEventsEnabled = true,\n HealthMonitoringEnabled = true,\n IncidentLogsEnabled = true,\n },\n MemorySizeGb = 60,\n },\n DeletionProtection = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcloudExadataInfrastructures, err := oracledatabase.NewCloudExadataInfrastructure(ctx, \"cloudExadataInfrastructures\", \u0026oracledatabase.CloudExadataInfrastructureArgs{\n\t\t\tCloudExadataInfrastructureId: pulumi.String(\"my-exadata\"),\n\t\t\tDisplayName: pulumi.String(\"my-exadata displayname\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tProperties: \u0026oracledatabase.CloudExadataInfrastructurePropertiesArgs{\n\t\t\t\tShape: pulumi.String(\"Exadata.X9M\"),\n\t\t\t\tComputeCount: pulumi.Int(2),\n\t\t\t\tStorageCount: pulumi.Int(3),\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_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"new\",\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmydbserver := oracledatabase.GetDbServersOutput(ctx, oracledatabase.GetDbServersOutputArgs{\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tCloudExadataInfrastructure: cloudExadataInfrastructures.CloudExadataInfrastructureId,\n\t\t}, nil)\n\t\t_, err = oracledatabase.NewCloudVmCluster(ctx, \"my_vmcluster\", \u0026oracledatabase.CloudVmClusterArgs{\n\t\t\tCloudVmClusterId: pulumi.String(\"my-instance\"),\n\t\t\tDisplayName: pulumi.String(\"my-instance displayname\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tExadataInfrastructure: cloudExadataInfrastructures.ID(),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tCidr: pulumi.String(\"10.5.0.0/24\"),\n\t\t\tBackupSubnetCidr: pulumi.String(\"10.6.0.0/24\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProperties: \u0026oracledatabase.CloudVmClusterPropertiesArgs{\n\t\t\t\tLicenseType: pulumi.String(\"LICENSE_INCLUDED\"),\n\t\t\t\tSshPublicKeys: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\"),\n\t\t\t\t},\n\t\t\t\tCpuCoreCount: pulumi.Int(4),\n\t\t\t\tGiVersion: pulumi.String(\"19.0.0.0\"),\n\t\t\t\tTimeZone: \u0026oracledatabase.CloudVmClusterPropertiesTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"UTC\"),\n\t\t\t\t},\n\t\t\t\tNodeCount: pulumi.Int(2),\n\t\t\t\tOcpuCount: pulumi.Float64(4),\n\t\t\t\tDataStorageSizeTb: pulumi.Float64(2),\n\t\t\t\tDbNodeStorageSizeGb: pulumi.Int(120),\n\t\t\t\tDbServerOcids: pulumi.StringArray{\n\t\t\t\t\tmydbserver.ApplyT(func(mydbserver oracledatabase.GetDbServersResult) (*string, error) {\n\t\t\t\t\t\treturn \u0026mydbserver.DbServers[0].Properties[0].Ocid, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\tmydbserver.ApplyT(func(mydbserver oracledatabase.GetDbServersResult) (*string, error) {\n\t\t\t\t\t\treturn \u0026mydbserver.DbServers[1].Properties[0].Ocid, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t},\n\t\t\t\tDiskRedundancy: pulumi.String(\"HIGH\"),\n\t\t\t\tSparseDiskgroupEnabled: pulumi.Bool(false),\n\t\t\t\tLocalBackupEnabled: pulumi.Bool(false),\n\t\t\t\tClusterName: pulumi.String(\"pq-ppat4\"),\n\t\t\t\tHostnamePrefix: pulumi.String(\"hostname1\"),\n\t\t\t\tDiagnosticsDataCollectionOptions: \u0026oracledatabase.CloudVmClusterPropertiesDiagnosticsDataCollectionOptionsArgs{\n\t\t\t\t\tDiagnosticsEventsEnabled: pulumi.Bool(true),\n\t\t\t\t\tHealthMonitoringEnabled: pulumi.Bool(true),\n\t\t\t\t\tIncidentLogsEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tMemorySizeGb: pulumi.Int(60),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.oracledatabase.CloudExadataInfrastructure;\nimport com.pulumi.gcp.oracledatabase.CloudExadataInfrastructureArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.CloudExadataInfrastructurePropertiesArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.oracledatabase.OracledatabaseFunctions;\nimport com.pulumi.gcp.oracledatabase.inputs.GetDbServersArgs;\nimport com.pulumi.gcp.oracledatabase.CloudVmCluster;\nimport com.pulumi.gcp.oracledatabase.CloudVmClusterArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.CloudVmClusterPropertiesArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.CloudVmClusterPropertiesTimeZoneArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.CloudVmClusterPropertiesDiagnosticsDataCollectionOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cloudExadataInfrastructures = new CloudExadataInfrastructure(\"cloudExadataInfrastructures\", CloudExadataInfrastructureArgs.builder()\n .cloudExadataInfrastructureId(\"my-exadata\")\n .displayName(\"my-exadata displayname\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .properties(CloudExadataInfrastructurePropertiesArgs.builder()\n .shape(\"Exadata.X9M\")\n .computeCount(\"2\")\n .storageCount(\"3\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"new\")\n .project(\"my-project\")\n .build());\n\n final var mydbserver = OracledatabaseFunctions.getDbServers(GetDbServersArgs.builder()\n .location(\"us-east4\")\n .project(\"my-project\")\n .cloudExadataInfrastructure(cloudExadataInfrastructures.cloudExadataInfrastructureId())\n .build());\n\n var myVmcluster = new CloudVmCluster(\"myVmcluster\", CloudVmClusterArgs.builder()\n .cloudVmClusterId(\"my-instance\")\n .displayName(\"my-instance displayname\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .exadataInfrastructure(cloudExadataInfrastructures.id())\n .network(default_.id())\n .cidr(\"10.5.0.0/24\")\n .backupSubnetCidr(\"10.6.0.0/24\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .properties(CloudVmClusterPropertiesArgs.builder()\n .licenseType(\"LICENSE_INCLUDED\")\n .sshPublicKeys(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\")\n .cpuCoreCount(\"4\")\n .giVersion(\"19.0.0.0\")\n .timeZone(CloudVmClusterPropertiesTimeZoneArgs.builder()\n .id(\"UTC\")\n .build())\n .nodeCount(\"2\")\n .ocpuCount(\"4.0\")\n .dataStorageSizeTb(2)\n .dbNodeStorageSizeGb(120)\n .dbServerOcids( \n mydbserver.applyValue(getDbServersResult -\u003e getDbServersResult).applyValue(mydbserver -\u003e mydbserver.applyValue(getDbServersResult -\u003e getDbServersResult.dbServers()[0].properties()[0].ocid())),\n mydbserver.applyValue(getDbServersResult -\u003e getDbServersResult).applyValue(mydbserver -\u003e mydbserver.applyValue(getDbServersResult -\u003e getDbServersResult.dbServers()[1].properties()[0].ocid())))\n .diskRedundancy(\"HIGH\")\n .sparseDiskgroupEnabled(false)\n .localBackupEnabled(false)\n .clusterName(\"pq-ppat4\")\n .hostnamePrefix(\"hostname1\")\n .diagnosticsDataCollectionOptions(CloudVmClusterPropertiesDiagnosticsDataCollectionOptionsArgs.builder()\n .diagnosticsEventsEnabled(true)\n .healthMonitoringEnabled(true)\n .incidentLogsEnabled(true)\n .build())\n .memorySizeGb(60)\n .build())\n .deletionProtection(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myVmcluster:\n type: gcp:oracledatabase:CloudVmCluster\n name: my_vmcluster\n properties:\n cloudVmClusterId: my-instance\n displayName: my-instance displayname\n location: us-east4\n project: my-project\n exadataInfrastructure: ${cloudExadataInfrastructures.id}\n network: ${default.id}\n cidr: 10.5.0.0/24\n backupSubnetCidr: 10.6.0.0/24\n labels:\n label-one: value-one\n properties:\n licenseType: LICENSE_INCLUDED\n sshPublicKeys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\n cpuCoreCount: '4'\n giVersion: 19.0.0.0\n timeZone:\n id: UTC\n nodeCount: '2'\n ocpuCount: '4.0'\n dataStorageSizeTb: 2\n dbNodeStorageSizeGb: 120\n dbServerOcids:\n - ${mydbserver.dbServers[0].properties[0].ocid}\n - ${mydbserver.dbServers[1].properties[0].ocid}\n diskRedundancy: HIGH\n sparseDiskgroupEnabled: false\n localBackupEnabled: false\n clusterName: pq-ppat4\n hostnamePrefix: hostname1\n diagnosticsDataCollectionOptions:\n diagnosticsEventsEnabled: true\n healthMonitoringEnabled: true\n incidentLogsEnabled: true\n memorySizeGb: 60\n deletionProtection: 'true'\n cloudExadataInfrastructures:\n type: gcp:oracledatabase:CloudExadataInfrastructure\n properties:\n cloudExadataInfrastructureId: my-exadata\n displayName: my-exadata displayname\n location: us-east4\n project: my-project\n properties:\n shape: Exadata.X9M\n computeCount: '2'\n storageCount: '3'\n deletionProtection: 'true'\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: new\n project: my-project\n mydbserver:\n fn::invoke:\n function: gcp:oracledatabase:getDbServers\n arguments:\n location: us-east4\n project: my-project\n cloudExadataInfrastructure: ${cloudExadataInfrastructures.cloudExadataInfrastructureId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCloudVmCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/cloudVmClusters/{{cloud_vm_cluster_id}}`\n\n* `{{project}}/{{location}}/{{cloud_vm_cluster_id}}`\n\n* `{{location}}/{{cloud_vm_cluster_id}}`\n\nWhen using the `pulumi import` command, CloudVmCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:oracledatabase/cloudVmCluster:CloudVmCluster default projects/{{project}}/locations/{{location}}/cloudVmClusters/{{cloud_vm_cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:oracledatabase/cloudVmCluster:CloudVmCluster default {{project}}/{{location}}/{{cloud_vm_cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:oracledatabase/cloudVmCluster:CloudVmCluster default {{location}}/{{cloud_vm_cluster_id}}\n```\n\n", + "description": "A CloudVmCluster resource.\n\n\nTo get more information about CloudVmCluster, see:\n\n* [API documentation](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.cloudVmClusters)\n* How-to Guides\n * [Create VM clusters](https://cloud.google.com/oracle/database/docs/create-clusters)\n\n## Example Usage\n\n### Oracledatabase Cloud Vmcluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloudExadataInfrastructures = new gcp.oracledatabase.CloudExadataInfrastructure(\"cloudExadataInfrastructures\", {\n cloudExadataInfrastructureId: \"my-exadata\",\n displayName: \"my-exadata displayname\",\n location: \"us-east4\",\n project: \"my-project\",\n properties: {\n shape: \"Exadata.X9M\",\n computeCount: 2,\n storageCount: 3,\n },\n deletionProtection: true,\n});\nconst _default = gcp.compute.getNetwork({\n name: \"new\",\n project: \"my-project\",\n});\nconst myVmcluster = new gcp.oracledatabase.CloudVmCluster(\"my_vmcluster\", {\n cloudVmClusterId: \"my-instance\",\n displayName: \"my-instance displayname\",\n location: \"us-east4\",\n project: \"my-project\",\n exadataInfrastructure: cloudExadataInfrastructures.id,\n network: _default.then(_default =\u003e _default.id),\n cidr: \"10.5.0.0/24\",\n backupSubnetCidr: \"10.6.0.0/24\",\n properties: {\n licenseType: \"LICENSE_INCLUDED\",\n sshPublicKeys: [\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\"],\n cpuCoreCount: 4,\n giVersion: \"19.0.0.0\",\n hostnamePrefix: \"hostname1\",\n },\n deletionProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncloud_exadata_infrastructures = gcp.oracledatabase.CloudExadataInfrastructure(\"cloudExadataInfrastructures\",\n cloud_exadata_infrastructure_id=\"my-exadata\",\n display_name=\"my-exadata displayname\",\n location=\"us-east4\",\n project=\"my-project\",\n properties={\n \"shape\": \"Exadata.X9M\",\n \"compute_count\": 2,\n \"storage_count\": 3,\n },\n deletion_protection=True)\ndefault = gcp.compute.get_network(name=\"new\",\n project=\"my-project\")\nmy_vmcluster = gcp.oracledatabase.CloudVmCluster(\"my_vmcluster\",\n cloud_vm_cluster_id=\"my-instance\",\n display_name=\"my-instance displayname\",\n location=\"us-east4\",\n project=\"my-project\",\n exadata_infrastructure=cloud_exadata_infrastructures.id,\n network=default.id,\n cidr=\"10.5.0.0/24\",\n backup_subnet_cidr=\"10.6.0.0/24\",\n properties={\n \"license_type\": \"LICENSE_INCLUDED\",\n \"ssh_public_keys\": [\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\"],\n \"cpu_core_count\": 4,\n \"gi_version\": \"19.0.0.0\",\n \"hostname_prefix\": \"hostname1\",\n },\n deletion_protection=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloudExadataInfrastructures = new Gcp.OracleDatabase.CloudExadataInfrastructure(\"cloudExadataInfrastructures\", new()\n {\n CloudExadataInfrastructureId = \"my-exadata\",\n DisplayName = \"my-exadata displayname\",\n Location = \"us-east4\",\n Project = \"my-project\",\n Properties = new Gcp.OracleDatabase.Inputs.CloudExadataInfrastructurePropertiesArgs\n {\n Shape = \"Exadata.X9M\",\n ComputeCount = 2,\n StorageCount = 3,\n },\n DeletionProtection = true,\n });\n\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"new\",\n Project = \"my-project\",\n });\n\n var myVmcluster = new Gcp.OracleDatabase.CloudVmCluster(\"my_vmcluster\", new()\n {\n CloudVmClusterId = \"my-instance\",\n DisplayName = \"my-instance displayname\",\n Location = \"us-east4\",\n Project = \"my-project\",\n ExadataInfrastructure = cloudExadataInfrastructures.Id,\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Cidr = \"10.5.0.0/24\",\n BackupSubnetCidr = \"10.6.0.0/24\",\n Properties = new Gcp.OracleDatabase.Inputs.CloudVmClusterPropertiesArgs\n {\n LicenseType = \"LICENSE_INCLUDED\",\n SshPublicKeys = new[]\n {\n \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\",\n },\n CpuCoreCount = 4,\n GiVersion = \"19.0.0.0\",\n HostnamePrefix = \"hostname1\",\n },\n DeletionProtection = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcloudExadataInfrastructures, err := oracledatabase.NewCloudExadataInfrastructure(ctx, \"cloudExadataInfrastructures\", \u0026oracledatabase.CloudExadataInfrastructureArgs{\n\t\t\tCloudExadataInfrastructureId: pulumi.String(\"my-exadata\"),\n\t\t\tDisplayName: pulumi.String(\"my-exadata displayname\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tProperties: \u0026oracledatabase.CloudExadataInfrastructurePropertiesArgs{\n\t\t\t\tShape: pulumi.String(\"Exadata.X9M\"),\n\t\t\t\tComputeCount: pulumi.Int(2),\n\t\t\t\tStorageCount: pulumi.Int(3),\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_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"new\",\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = oracledatabase.NewCloudVmCluster(ctx, \"my_vmcluster\", \u0026oracledatabase.CloudVmClusterArgs{\n\t\t\tCloudVmClusterId: pulumi.String(\"my-instance\"),\n\t\t\tDisplayName: pulumi.String(\"my-instance displayname\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tExadataInfrastructure: cloudExadataInfrastructures.ID(),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tCidr: pulumi.String(\"10.5.0.0/24\"),\n\t\t\tBackupSubnetCidr: pulumi.String(\"10.6.0.0/24\"),\n\t\t\tProperties: \u0026oracledatabase.CloudVmClusterPropertiesArgs{\n\t\t\t\tLicenseType: pulumi.String(\"LICENSE_INCLUDED\"),\n\t\t\t\tSshPublicKeys: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\"),\n\t\t\t\t},\n\t\t\t\tCpuCoreCount: pulumi.Int(4),\n\t\t\t\tGiVersion: pulumi.String(\"19.0.0.0\"),\n\t\t\t\tHostnamePrefix: pulumi.String(\"hostname1\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.oracledatabase.CloudExadataInfrastructure;\nimport com.pulumi.gcp.oracledatabase.CloudExadataInfrastructureArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.CloudExadataInfrastructurePropertiesArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.oracledatabase.CloudVmCluster;\nimport com.pulumi.gcp.oracledatabase.CloudVmClusterArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.CloudVmClusterPropertiesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cloudExadataInfrastructures = new CloudExadataInfrastructure(\"cloudExadataInfrastructures\", CloudExadataInfrastructureArgs.builder()\n .cloudExadataInfrastructureId(\"my-exadata\")\n .displayName(\"my-exadata displayname\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .properties(CloudExadataInfrastructurePropertiesArgs.builder()\n .shape(\"Exadata.X9M\")\n .computeCount(\"2\")\n .storageCount(\"3\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"new\")\n .project(\"my-project\")\n .build());\n\n var myVmcluster = new CloudVmCluster(\"myVmcluster\", CloudVmClusterArgs.builder()\n .cloudVmClusterId(\"my-instance\")\n .displayName(\"my-instance displayname\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .exadataInfrastructure(cloudExadataInfrastructures.id())\n .network(default_.id())\n .cidr(\"10.5.0.0/24\")\n .backupSubnetCidr(\"10.6.0.0/24\")\n .properties(CloudVmClusterPropertiesArgs.builder()\n .licenseType(\"LICENSE_INCLUDED\")\n .sshPublicKeys(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\")\n .cpuCoreCount(\"4\")\n .giVersion(\"19.0.0.0\")\n .hostnamePrefix(\"hostname1\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myVmcluster:\n type: gcp:oracledatabase:CloudVmCluster\n name: my_vmcluster\n properties:\n cloudVmClusterId: my-instance\n displayName: my-instance displayname\n location: us-east4\n project: my-project\n exadataInfrastructure: ${cloudExadataInfrastructures.id}\n network: ${default.id}\n cidr: 10.5.0.0/24\n backupSubnetCidr: 10.6.0.0/24\n properties:\n licenseType: LICENSE_INCLUDED\n sshPublicKeys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\n cpuCoreCount: '4'\n giVersion: 19.0.0.0\n hostnamePrefix: hostname1\n deletionProtection: 'true'\n cloudExadataInfrastructures:\n type: gcp:oracledatabase:CloudExadataInfrastructure\n properties:\n cloudExadataInfrastructureId: my-exadata\n displayName: my-exadata displayname\n location: us-east4\n project: my-project\n properties:\n shape: Exadata.X9M\n computeCount: '2'\n storageCount: '3'\n deletionProtection: 'true'\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: new\n project: my-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Oracledatabase Cloud Vmcluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cloudExadataInfrastructures = new gcp.oracledatabase.CloudExadataInfrastructure(\"cloudExadataInfrastructures\", {\n cloudExadataInfrastructureId: \"my-exadata\",\n displayName: \"my-exadata displayname\",\n location: \"us-east4\",\n project: \"my-project\",\n properties: {\n shape: \"Exadata.X9M\",\n computeCount: 2,\n storageCount: 3,\n },\n deletionProtection: true,\n});\nconst _default = gcp.compute.getNetwork({\n name: \"new\",\n project: \"my-project\",\n});\nconst mydbserver = gcp.oracledatabase.getDbServersOutput({\n location: \"us-east4\",\n project: \"my-project\",\n cloudExadataInfrastructure: cloudExadataInfrastructures.cloudExadataInfrastructureId,\n});\nconst myVmcluster = new gcp.oracledatabase.CloudVmCluster(\"my_vmcluster\", {\n cloudVmClusterId: \"my-instance\",\n displayName: \"my-instance displayname\",\n location: \"us-east4\",\n project: \"my-project\",\n exadataInfrastructure: cloudExadataInfrastructures.id,\n network: _default.then(_default =\u003e _default.id),\n cidr: \"10.5.0.0/24\",\n backupSubnetCidr: \"10.6.0.0/24\",\n labels: {\n \"label-one\": \"value-one\",\n },\n properties: {\n licenseType: \"LICENSE_INCLUDED\",\n sshPublicKeys: [\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\"],\n cpuCoreCount: 4,\n giVersion: \"19.0.0.0\",\n timeZone: {\n id: \"UTC\",\n },\n nodeCount: 2,\n ocpuCount: 4,\n dataStorageSizeTb: 2,\n dbNodeStorageSizeGb: 120,\n dbServerOcids: [\n mydbserver.apply(mydbserver =\u003e mydbserver.dbServers?.[0]?.properties?.[0]?.ocid),\n mydbserver.apply(mydbserver =\u003e mydbserver.dbServers?.[1]?.properties?.[0]?.ocid),\n ],\n diskRedundancy: \"HIGH\",\n sparseDiskgroupEnabled: false,\n localBackupEnabled: false,\n clusterName: \"pq-ppat4\",\n hostnamePrefix: \"hostname1\",\n diagnosticsDataCollectionOptions: {\n diagnosticsEventsEnabled: true,\n healthMonitoringEnabled: true,\n incidentLogsEnabled: true,\n },\n memorySizeGb: 60,\n },\n deletionProtection: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncloud_exadata_infrastructures = gcp.oracledatabase.CloudExadataInfrastructure(\"cloudExadataInfrastructures\",\n cloud_exadata_infrastructure_id=\"my-exadata\",\n display_name=\"my-exadata displayname\",\n location=\"us-east4\",\n project=\"my-project\",\n properties={\n \"shape\": \"Exadata.X9M\",\n \"compute_count\": 2,\n \"storage_count\": 3,\n },\n deletion_protection=True)\ndefault = gcp.compute.get_network(name=\"new\",\n project=\"my-project\")\nmydbserver = gcp.oracledatabase.get_db_servers_output(location=\"us-east4\",\n project=\"my-project\",\n cloud_exadata_infrastructure=cloud_exadata_infrastructures.cloud_exadata_infrastructure_id)\nmy_vmcluster = gcp.oracledatabase.CloudVmCluster(\"my_vmcluster\",\n cloud_vm_cluster_id=\"my-instance\",\n display_name=\"my-instance displayname\",\n location=\"us-east4\",\n project=\"my-project\",\n exadata_infrastructure=cloud_exadata_infrastructures.id,\n network=default.id,\n cidr=\"10.5.0.0/24\",\n backup_subnet_cidr=\"10.6.0.0/24\",\n labels={\n \"label-one\": \"value-one\",\n },\n properties={\n \"license_type\": \"LICENSE_INCLUDED\",\n \"ssh_public_keys\": [\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\"],\n \"cpu_core_count\": 4,\n \"gi_version\": \"19.0.0.0\",\n \"time_zone\": {\n \"id\": \"UTC\",\n },\n \"node_count\": 2,\n \"ocpu_count\": 4,\n \"data_storage_size_tb\": 2,\n \"db_node_storage_size_gb\": 120,\n \"db_server_ocids\": [\n mydbserver.db_servers[0].properties[0].ocid,\n mydbserver.db_servers[1].properties[0].ocid,\n ],\n \"disk_redundancy\": \"HIGH\",\n \"sparse_diskgroup_enabled\": False,\n \"local_backup_enabled\": False,\n \"cluster_name\": \"pq-ppat4\",\n \"hostname_prefix\": \"hostname1\",\n \"diagnostics_data_collection_options\": {\n \"diagnostics_events_enabled\": True,\n \"health_monitoring_enabled\": True,\n \"incident_logs_enabled\": True,\n },\n \"memory_size_gb\": 60,\n },\n deletion_protection=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cloudExadataInfrastructures = new Gcp.OracleDatabase.CloudExadataInfrastructure(\"cloudExadataInfrastructures\", new()\n {\n CloudExadataInfrastructureId = \"my-exadata\",\n DisplayName = \"my-exadata displayname\",\n Location = \"us-east4\",\n Project = \"my-project\",\n Properties = new Gcp.OracleDatabase.Inputs.CloudExadataInfrastructurePropertiesArgs\n {\n Shape = \"Exadata.X9M\",\n ComputeCount = 2,\n StorageCount = 3,\n },\n DeletionProtection = true,\n });\n\n var @default = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"new\",\n Project = \"my-project\",\n });\n\n var mydbserver = Gcp.OracleDatabase.GetDbServers.Invoke(new()\n {\n Location = \"us-east4\",\n Project = \"my-project\",\n CloudExadataInfrastructure = cloudExadataInfrastructures.CloudExadataInfrastructureId,\n });\n\n var myVmcluster = new Gcp.OracleDatabase.CloudVmCluster(\"my_vmcluster\", new()\n {\n CloudVmClusterId = \"my-instance\",\n DisplayName = \"my-instance displayname\",\n Location = \"us-east4\",\n Project = \"my-project\",\n ExadataInfrastructure = cloudExadataInfrastructures.Id,\n Network = @default.Apply(@default =\u003e @default.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n Cidr = \"10.5.0.0/24\",\n BackupSubnetCidr = \"10.6.0.0/24\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n Properties = new Gcp.OracleDatabase.Inputs.CloudVmClusterPropertiesArgs\n {\n LicenseType = \"LICENSE_INCLUDED\",\n SshPublicKeys = new[]\n {\n \"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\",\n },\n CpuCoreCount = 4,\n GiVersion = \"19.0.0.0\",\n TimeZone = new Gcp.OracleDatabase.Inputs.CloudVmClusterPropertiesTimeZoneArgs\n {\n Id = \"UTC\",\n },\n NodeCount = 2,\n OcpuCount = 4,\n DataStorageSizeTb = 2,\n DbNodeStorageSizeGb = 120,\n DbServerOcids = new[]\n {\n mydbserver.Apply(getDbServersResult =\u003e getDbServersResult.DbServers[0]?.Properties[0]?.Ocid),\n mydbserver.Apply(getDbServersResult =\u003e getDbServersResult.DbServers[1]?.Properties[0]?.Ocid),\n },\n DiskRedundancy = \"HIGH\",\n SparseDiskgroupEnabled = false,\n LocalBackupEnabled = false,\n ClusterName = \"pq-ppat4\",\n HostnamePrefix = \"hostname1\",\n DiagnosticsDataCollectionOptions = new Gcp.OracleDatabase.Inputs.CloudVmClusterPropertiesDiagnosticsDataCollectionOptionsArgs\n {\n DiagnosticsEventsEnabled = true,\n HealthMonitoringEnabled = true,\n IncidentLogsEnabled = true,\n },\n MemorySizeGb = 60,\n },\n DeletionProtection = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcloudExadataInfrastructures, err := oracledatabase.NewCloudExadataInfrastructure(ctx, \"cloudExadataInfrastructures\", \u0026oracledatabase.CloudExadataInfrastructureArgs{\n\t\t\tCloudExadataInfrastructureId: pulumi.String(\"my-exadata\"),\n\t\t\tDisplayName: pulumi.String(\"my-exadata displayname\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tProperties: \u0026oracledatabase.CloudExadataInfrastructurePropertiesArgs{\n\t\t\t\tShape: pulumi.String(\"Exadata.X9M\"),\n\t\t\t\tComputeCount: pulumi.Int(2),\n\t\t\t\tStorageCount: pulumi.Int(3),\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_default, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"new\",\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmydbserver := oracledatabase.GetDbServersOutput(ctx, oracledatabase.GetDbServersOutputArgs{\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tCloudExadataInfrastructure: cloudExadataInfrastructures.CloudExadataInfrastructureId,\n\t\t}, nil)\n\t\t_, err = oracledatabase.NewCloudVmCluster(ctx, \"my_vmcluster\", \u0026oracledatabase.CloudVmClusterArgs{\n\t\t\tCloudVmClusterId: pulumi.String(\"my-instance\"),\n\t\t\tDisplayName: pulumi.String(\"my-instance displayname\"),\n\t\t\tLocation: pulumi.String(\"us-east4\"),\n\t\t\tProject: pulumi.String(\"my-project\"),\n\t\t\tExadataInfrastructure: cloudExadataInfrastructures.ID(),\n\t\t\tNetwork: pulumi.String(_default.Id),\n\t\t\tCidr: pulumi.String(\"10.5.0.0/24\"),\n\t\t\tBackupSubnetCidr: pulumi.String(\"10.6.0.0/24\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tProperties: \u0026oracledatabase.CloudVmClusterPropertiesArgs{\n\t\t\t\tLicenseType: pulumi.String(\"LICENSE_INCLUDED\"),\n\t\t\t\tSshPublicKeys: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\"),\n\t\t\t\t},\n\t\t\t\tCpuCoreCount: pulumi.Int(4),\n\t\t\t\tGiVersion: pulumi.String(\"19.0.0.0\"),\n\t\t\t\tTimeZone: \u0026oracledatabase.CloudVmClusterPropertiesTimeZoneArgs{\n\t\t\t\t\tId: pulumi.String(\"UTC\"),\n\t\t\t\t},\n\t\t\t\tNodeCount: pulumi.Int(2),\n\t\t\t\tOcpuCount: pulumi.Float64(4),\n\t\t\t\tDataStorageSizeTb: pulumi.Float64(2),\n\t\t\t\tDbNodeStorageSizeGb: pulumi.Int(120),\n\t\t\t\tDbServerOcids: pulumi.StringArray{\n\t\t\t\t\tmydbserver.ApplyT(func(mydbserver oracledatabase.GetDbServersResult) (*string, error) {\n\t\t\t\t\t\treturn \u0026mydbserver.DbServers[0].Properties[0].Ocid, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\tmydbserver.ApplyT(func(mydbserver oracledatabase.GetDbServersResult) (*string, error) {\n\t\t\t\t\t\treturn \u0026mydbserver.DbServers[1].Properties[0].Ocid, nil\n\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t},\n\t\t\t\tDiskRedundancy: pulumi.String(\"HIGH\"),\n\t\t\t\tSparseDiskgroupEnabled: pulumi.Bool(false),\n\t\t\t\tLocalBackupEnabled: pulumi.Bool(false),\n\t\t\t\tClusterName: pulumi.String(\"pq-ppat4\"),\n\t\t\t\tHostnamePrefix: pulumi.String(\"hostname1\"),\n\t\t\t\tDiagnosticsDataCollectionOptions: \u0026oracledatabase.CloudVmClusterPropertiesDiagnosticsDataCollectionOptionsArgs{\n\t\t\t\t\tDiagnosticsEventsEnabled: pulumi.Bool(true),\n\t\t\t\t\tHealthMonitoringEnabled: pulumi.Bool(true),\n\t\t\t\t\tIncidentLogsEnabled: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t\tMemorySizeGb: pulumi.Int(60),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.oracledatabase.CloudExadataInfrastructure;\nimport com.pulumi.gcp.oracledatabase.CloudExadataInfrastructureArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.CloudExadataInfrastructurePropertiesArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.oracledatabase.OracledatabaseFunctions;\nimport com.pulumi.gcp.oracledatabase.inputs.GetDbServersArgs;\nimport com.pulumi.gcp.oracledatabase.CloudVmCluster;\nimport com.pulumi.gcp.oracledatabase.CloudVmClusterArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.CloudVmClusterPropertiesArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.CloudVmClusterPropertiesTimeZoneArgs;\nimport com.pulumi.gcp.oracledatabase.inputs.CloudVmClusterPropertiesDiagnosticsDataCollectionOptionsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cloudExadataInfrastructures = new CloudExadataInfrastructure(\"cloudExadataInfrastructures\", CloudExadataInfrastructureArgs.builder()\n .cloudExadataInfrastructureId(\"my-exadata\")\n .displayName(\"my-exadata displayname\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .properties(CloudExadataInfrastructurePropertiesArgs.builder()\n .shape(\"Exadata.X9M\")\n .computeCount(\"2\")\n .storageCount(\"3\")\n .build())\n .deletionProtection(\"true\")\n .build());\n\n final var default = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"new\")\n .project(\"my-project\")\n .build());\n\n final var mydbserver = OracledatabaseFunctions.getDbServers(GetDbServersArgs.builder()\n .location(\"us-east4\")\n .project(\"my-project\")\n .cloudExadataInfrastructure(cloudExadataInfrastructures.cloudExadataInfrastructureId())\n .build());\n\n var myVmcluster = new CloudVmCluster(\"myVmcluster\", CloudVmClusterArgs.builder()\n .cloudVmClusterId(\"my-instance\")\n .displayName(\"my-instance displayname\")\n .location(\"us-east4\")\n .project(\"my-project\")\n .exadataInfrastructure(cloudExadataInfrastructures.id())\n .network(default_.id())\n .cidr(\"10.5.0.0/24\")\n .backupSubnetCidr(\"10.6.0.0/24\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .properties(CloudVmClusterPropertiesArgs.builder()\n .licenseType(\"LICENSE_INCLUDED\")\n .sshPublicKeys(\"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\")\n .cpuCoreCount(\"4\")\n .giVersion(\"19.0.0.0\")\n .timeZone(CloudVmClusterPropertiesTimeZoneArgs.builder()\n .id(\"UTC\")\n .build())\n .nodeCount(\"2\")\n .ocpuCount(\"4.0\")\n .dataStorageSizeTb(2)\n .dbNodeStorageSizeGb(120)\n .dbServerOcids( \n mydbserver.applyValue(getDbServersResult -\u003e getDbServersResult).applyValue(mydbserver -\u003e mydbserver.applyValue(getDbServersResult -\u003e getDbServersResult.dbServers()[0].properties()[0].ocid())),\n mydbserver.applyValue(getDbServersResult -\u003e getDbServersResult).applyValue(mydbserver -\u003e mydbserver.applyValue(getDbServersResult -\u003e getDbServersResult.dbServers()[1].properties()[0].ocid())))\n .diskRedundancy(\"HIGH\")\n .sparseDiskgroupEnabled(false)\n .localBackupEnabled(false)\n .clusterName(\"pq-ppat4\")\n .hostnamePrefix(\"hostname1\")\n .diagnosticsDataCollectionOptions(CloudVmClusterPropertiesDiagnosticsDataCollectionOptionsArgs.builder()\n .diagnosticsEventsEnabled(true)\n .healthMonitoringEnabled(true)\n .incidentLogsEnabled(true)\n .build())\n .memorySizeGb(60)\n .build())\n .deletionProtection(\"true\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n myVmcluster:\n type: gcp:oracledatabase:CloudVmCluster\n name: my_vmcluster\n properties:\n cloudVmClusterId: my-instance\n displayName: my-instance displayname\n location: us-east4\n project: my-project\n exadataInfrastructure: ${cloudExadataInfrastructures.id}\n network: ${default.id}\n cidr: 10.5.0.0/24\n backupSubnetCidr: 10.6.0.0/24\n labels:\n label-one: value-one\n properties:\n licenseType: LICENSE_INCLUDED\n sshPublicKeys:\n - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCz1X2744t+6vRLmE5u6nHi6/QWh8bQDgHmd+OIxRQIGA/IWUtCs2FnaCNZcqvZkaeyjk5v0lTA/n+9jvO42Ipib53athrfVG8gRt8fzPL66C6ZqHq+6zZophhrCdfJh/0G4x9xJh5gdMprlaCR1P8yAaVvhBQSKGc4SiIkyMNBcHJ5YTtMQMTfxaB4G1sHZ6SDAY9a6Cq/zNjDwfPapWLsiP4mRhE5SSjJX6l6EYbkm0JeLQg+AbJiNEPvrvDp1wtTxzlPJtIivthmLMThFxK7+DkrYFuLvN5AHUdo9KTDLvHtDCvV70r8v0gafsrKkM/OE9Jtzoo0e1N/5K/ZdyFRbAkFT4QSF3nwpbmBWLf2Evg//YyEuxnz4CwPqFST2mucnrCCGCVWp1vnHZ0y30nM35njLOmWdRDFy5l27pKUTwLp02y3UYiiZyP7d3/u5pKiN4vC27VuvzprSdJxWoAvluOiDeRh+/oeQDowxoT/Oop8DzB9uJmjktXw8jyMW2+Rpg+ENQqeNgF1OGlEzypaWiRskEFlkpLb4v/s3ZDYkL1oW0Nv/J8LTjTOTEaYt2Udjoe9x2xWiGnQixhdChWuG+MaoWffzUgx1tsVj/DBXijR5DjkPkrA1GA98zd3q8GKEaAdcDenJjHhNYSd4+rE9pIsnYn7fo5X/tFfcQH1XQ== nobody@google.com\n cpuCoreCount: '4'\n giVersion: 19.0.0.0\n timeZone:\n id: UTC\n nodeCount: '2'\n ocpuCount: '4.0'\n dataStorageSizeTb: 2\n dbNodeStorageSizeGb: 120\n dbServerOcids:\n - ${mydbserver.dbServers[0].properties[0].ocid}\n - ${mydbserver.dbServers[1].properties[0].ocid}\n diskRedundancy: HIGH\n sparseDiskgroupEnabled: false\n localBackupEnabled: false\n clusterName: pq-ppat4\n hostnamePrefix: hostname1\n diagnosticsDataCollectionOptions:\n diagnosticsEventsEnabled: true\n healthMonitoringEnabled: true\n incidentLogsEnabled: true\n memorySizeGb: 60\n deletionProtection: 'true'\n cloudExadataInfrastructures:\n type: gcp:oracledatabase:CloudExadataInfrastructure\n properties:\n cloudExadataInfrastructureId: my-exadata\n displayName: my-exadata displayname\n location: us-east4\n project: my-project\n properties:\n shape: Exadata.X9M\n computeCount: '2'\n storageCount: '3'\n deletionProtection: 'true'\nvariables:\n default:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: new\n project: my-project\n mydbserver:\n fn::invoke:\n function: gcp:oracledatabase:getDbServers\n arguments:\n location: us-east4\n project: my-project\n cloudExadataInfrastructure: ${cloudExadataInfrastructures.cloudExadataInfrastructureId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCloudVmCluster can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/cloudVmClusters/{{cloud_vm_cluster_id}}`\n\n* `{{project}}/{{location}}/{{cloud_vm_cluster_id}}`\n\n* `{{location}}/{{cloud_vm_cluster_id}}`\n\nWhen using the `pulumi import` command, CloudVmCluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:oracledatabase/cloudVmCluster:CloudVmCluster default projects/{{project}}/locations/{{location}}/cloudVmClusters/{{cloud_vm_cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:oracledatabase/cloudVmCluster:CloudVmCluster default {{project}}/{{location}}/{{cloud_vm_cluster_id}}\n```\n\n```sh\n$ pulumi import gcp:oracledatabase/cloudVmCluster:CloudVmCluster default {{location}}/{{cloud_vm_cluster_id}}\n```\n\n", "properties": { "backupSubnetCidr": { "type": "string", @@ -263290,7 +263290,7 @@ } }, "gcp:parallelstore/instance:Instance": { - "description": "A Parallelstore Instance.\n\n\n\n## Example Usage\n\n### Parallelstore Instance Basic Beta\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: true,\n mtu: 8896,\n});\n// Create an IP address\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: network.id,\n});\n// Create a private connection\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst instance = new gcp.parallelstore.Instance(\"instance\", {\n instanceId: \"instance\",\n location: \"us-central1-a\",\n description: \"test instance\",\n capacityGib: \"12000\",\n network: network.name,\n fileStripeLevel: \"FILE_STRIPE_LEVEL_MIN\",\n directoryStripeLevel: \"DIRECTORY_STRIPE_LEVEL_MIN\",\n deploymentType: \"SCRATCH\",\n labels: {\n test: \"value\",\n },\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=True,\n mtu=8896)\n# Create an IP address\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=network.id)\n# Create a private connection\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ninstance = gcp.parallelstore.Instance(\"instance\",\n instance_id=\"instance\",\n location=\"us-central1-a\",\n description=\"test instance\",\n capacity_gib=\"12000\",\n network=network.name,\n file_stripe_level=\"FILE_STRIPE_LEVEL_MIN\",\n directory_stripe_level=\"DIRECTORY_STRIPE_LEVEL_MIN\",\n deployment_type=\"SCRATCH\",\n labels={\n \"test\": \"value\",\n },\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = true,\n Mtu = 8896,\n });\n\n // Create an IP address\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = network.Id,\n });\n\n // Create a private connection\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var instance = new Gcp.ParallelStore.Instance(\"instance\", new()\n {\n InstanceId = \"instance\",\n Location = \"us-central1-a\",\n Description = \"test instance\",\n CapacityGib = \"12000\",\n Network = network.Name,\n FileStripeLevel = \"FILE_STRIPE_LEVEL_MIN\",\n DirectoryStripeLevel = \"DIRECTORY_STRIPE_LEVEL_MIN\",\n DeploymentType = \"SCRATCH\",\n Labels = \n {\n { \"test\", \"value\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/parallelstore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t\tMtu: pulumi.Int(8896),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create an IP address\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a private connection\n\t\t_, err = servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = parallelstore.NewInstance(ctx, \"instance\", \u0026parallelstore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"test instance\"),\n\t\t\tCapacityGib: pulumi.String(\"12000\"),\n\t\t\tNetwork: network.Name,\n\t\t\tFileStripeLevel: pulumi.String(\"FILE_STRIPE_LEVEL_MIN\"),\n\t\t\tDirectoryStripeLevel: pulumi.String(\"DIRECTORY_STRIPE_LEVEL_MIN\"),\n\t\t\tDeploymentType: pulumi.String(\"SCRATCH\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.parallelstore.Instance;\nimport com.pulumi.gcp.parallelstore.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(true)\n .mtu(8896)\n .build());\n\n // Create an IP address\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(network.id())\n .build());\n\n // Create a private connection\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .instanceId(\"instance\")\n .location(\"us-central1-a\")\n .description(\"test instance\")\n .capacityGib(12000)\n .network(network.name())\n .fileStripeLevel(\"FILE_STRIPE_LEVEL_MIN\")\n .directoryStripeLevel(\"DIRECTORY_STRIPE_LEVEL_MIN\")\n .deploymentType(\"SCRATCH\")\n .labels(Map.of(\"test\", \"value\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:parallelstore:Instance\n properties:\n instanceId: instance\n location: us-central1-a\n description: test instance\n capacityGib: 12000\n network: ${network.name}\n fileStripeLevel: FILE_STRIPE_LEVEL_MIN\n directoryStripeLevel: DIRECTORY_STRIPE_LEVEL_MIN\n deploymentType: SCRATCH\n labels:\n test: value\n options:\n dependsOn:\n - ${default}\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: true\n mtu: 8896\n # Create an IP address\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${network.id}\n # Create a private connection\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Parallelstore Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: true,\n mtu: 8896,\n});\n// Create an IP address\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: network.id,\n});\n// Create a private connection\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst instance = new gcp.parallelstore.Instance(\"instance\", {\n instanceId: \"instance\",\n location: \"us-central1-a\",\n description: \"test instance\",\n capacityGib: \"12000\",\n network: network.name,\n fileStripeLevel: \"FILE_STRIPE_LEVEL_MIN\",\n directoryStripeLevel: \"DIRECTORY_STRIPE_LEVEL_MIN\",\n deploymentType: \"SCRATCH\",\n labels: {\n test: \"value\",\n },\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=True,\n mtu=8896)\n# Create an IP address\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=network.id)\n# Create a private connection\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ninstance = gcp.parallelstore.Instance(\"instance\",\n instance_id=\"instance\",\n location=\"us-central1-a\",\n description=\"test instance\",\n capacity_gib=\"12000\",\n network=network.name,\n file_stripe_level=\"FILE_STRIPE_LEVEL_MIN\",\n directory_stripe_level=\"DIRECTORY_STRIPE_LEVEL_MIN\",\n deployment_type=\"SCRATCH\",\n labels={\n \"test\": \"value\",\n },\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = true,\n Mtu = 8896,\n });\n\n // Create an IP address\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = network.Id,\n });\n\n // Create a private connection\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var instance = new Gcp.ParallelStore.Instance(\"instance\", new()\n {\n InstanceId = \"instance\",\n Location = \"us-central1-a\",\n Description = \"test instance\",\n CapacityGib = \"12000\",\n Network = network.Name,\n FileStripeLevel = \"FILE_STRIPE_LEVEL_MIN\",\n DirectoryStripeLevel = \"DIRECTORY_STRIPE_LEVEL_MIN\",\n DeploymentType = \"SCRATCH\",\n Labels = \n {\n { \"test\", \"value\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/parallelstore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t\tMtu: pulumi.Int(8896),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create an IP address\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a private connection\n\t\t_, err = servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = parallelstore.NewInstance(ctx, \"instance\", \u0026parallelstore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"test instance\"),\n\t\t\tCapacityGib: pulumi.String(\"12000\"),\n\t\t\tNetwork: network.Name,\n\t\t\tFileStripeLevel: pulumi.String(\"FILE_STRIPE_LEVEL_MIN\"),\n\t\t\tDirectoryStripeLevel: pulumi.String(\"DIRECTORY_STRIPE_LEVEL_MIN\"),\n\t\t\tDeploymentType: pulumi.String(\"SCRATCH\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.parallelstore.Instance;\nimport com.pulumi.gcp.parallelstore.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(true)\n .mtu(8896)\n .build());\n\n // Create an IP address\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(network.id())\n .build());\n\n // Create a private connection\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .instanceId(\"instance\")\n .location(\"us-central1-a\")\n .description(\"test instance\")\n .capacityGib(12000)\n .network(network.name())\n .fileStripeLevel(\"FILE_STRIPE_LEVEL_MIN\")\n .directoryStripeLevel(\"DIRECTORY_STRIPE_LEVEL_MIN\")\n .deploymentType(\"SCRATCH\")\n .labels(Map.of(\"test\", \"value\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:parallelstore:Instance\n properties:\n instanceId: instance\n location: us-central1-a\n description: test instance\n capacityGib: 12000\n network: ${network.name}\n fileStripeLevel: FILE_STRIPE_LEVEL_MIN\n directoryStripeLevel: DIRECTORY_STRIPE_LEVEL_MIN\n deploymentType: SCRATCH\n labels:\n test: value\n options:\n dependsOn:\n - ${default}\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: true\n mtu: 8896\n # Create an IP address\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${network.id}\n # Create a private connection\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{instance_id}}`\n\n* `{{location}}/{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:parallelstore/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:parallelstore/instance:Instance default {{project}}/{{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:parallelstore/instance:Instance default {{location}}/{{instance_id}}\n```\n\n", + "description": "A Parallelstore Instance.\n\n\n\n## Example Usage\n\n### Parallelstore Instance Basic Beta\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: true,\n mtu: 8896,\n});\n// Create an IP address\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: network.id,\n});\n// Create a private connection\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst instance = new gcp.parallelstore.Instance(\"instance\", {\n instanceId: \"instance\",\n location: \"us-central1-a\",\n description: \"test instance\",\n capacityGib: \"12000\",\n network: network.name,\n fileStripeLevel: \"FILE_STRIPE_LEVEL_MIN\",\n directoryStripeLevel: \"DIRECTORY_STRIPE_LEVEL_MIN\",\n deploymentType: \"SCRATCH\",\n labels: {\n test: \"value\",\n },\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=True,\n mtu=8896)\n# Create an IP address\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=network.id)\n# Create a private connection\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ninstance = gcp.parallelstore.Instance(\"instance\",\n instance_id=\"instance\",\n location=\"us-central1-a\",\n description=\"test instance\",\n capacity_gib=\"12000\",\n network=network.name,\n file_stripe_level=\"FILE_STRIPE_LEVEL_MIN\",\n directory_stripe_level=\"DIRECTORY_STRIPE_LEVEL_MIN\",\n deployment_type=\"SCRATCH\",\n labels={\n \"test\": \"value\",\n },\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = true,\n Mtu = 8896,\n });\n\n // Create an IP address\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = network.Id,\n });\n\n // Create a private connection\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var instance = new Gcp.ParallelStore.Instance(\"instance\", new()\n {\n InstanceId = \"instance\",\n Location = \"us-central1-a\",\n Description = \"test instance\",\n CapacityGib = \"12000\",\n Network = network.Name,\n FileStripeLevel = \"FILE_STRIPE_LEVEL_MIN\",\n DirectoryStripeLevel = \"DIRECTORY_STRIPE_LEVEL_MIN\",\n DeploymentType = \"SCRATCH\",\n Labels = \n {\n { \"test\", \"value\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/parallelstore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t\tMtu: pulumi.Int(8896),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create an IP address\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a private connection\n\t\t_default, err := servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = parallelstore.NewInstance(ctx, \"instance\", \u0026parallelstore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"test instance\"),\n\t\t\tCapacityGib: pulumi.String(\"12000\"),\n\t\t\tNetwork: network.Name,\n\t\t\tFileStripeLevel: pulumi.String(\"FILE_STRIPE_LEVEL_MIN\"),\n\t\t\tDirectoryStripeLevel: pulumi.String(\"DIRECTORY_STRIPE_LEVEL_MIN\"),\n\t\t\tDeploymentType: pulumi.String(\"SCRATCH\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.parallelstore.Instance;\nimport com.pulumi.gcp.parallelstore.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(true)\n .mtu(8896)\n .build());\n\n // Create an IP address\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(network.id())\n .build());\n\n // Create a private connection\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .instanceId(\"instance\")\n .location(\"us-central1-a\")\n .description(\"test instance\")\n .capacityGib(12000)\n .network(network.name())\n .fileStripeLevel(\"FILE_STRIPE_LEVEL_MIN\")\n .directoryStripeLevel(\"DIRECTORY_STRIPE_LEVEL_MIN\")\n .deploymentType(\"SCRATCH\")\n .labels(Map.of(\"test\", \"value\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:parallelstore:Instance\n properties:\n instanceId: instance\n location: us-central1-a\n description: test instance\n capacityGib: 12000\n network: ${network.name}\n fileStripeLevel: FILE_STRIPE_LEVEL_MIN\n directoryStripeLevel: DIRECTORY_STRIPE_LEVEL_MIN\n deploymentType: SCRATCH\n labels:\n test: value\n options:\n dependsOn:\n - ${default}\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: true\n mtu: 8896\n # Create an IP address\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${network.id}\n # Create a private connection\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Parallelstore Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network = new gcp.compute.Network(\"network\", {\n name: \"network\",\n autoCreateSubnetworks: true,\n mtu: 8896,\n});\n// Create an IP address\nconst privateIpAlloc = new gcp.compute.GlobalAddress(\"private_ip_alloc\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 24,\n network: network.id,\n});\n// Create a private connection\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\nconst instance = new gcp.parallelstore.Instance(\"instance\", {\n instanceId: \"instance\",\n location: \"us-central1-a\",\n description: \"test instance\",\n capacityGib: \"12000\",\n network: network.name,\n fileStripeLevel: \"FILE_STRIPE_LEVEL_MIN\",\n directoryStripeLevel: \"DIRECTORY_STRIPE_LEVEL_MIN\",\n deploymentType: \"SCRATCH\",\n labels: {\n test: \"value\",\n },\n}, {\n dependsOn: [_default],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork = gcp.compute.Network(\"network\",\n name=\"network\",\n auto_create_subnetworks=True,\n mtu=8896)\n# Create an IP address\nprivate_ip_alloc = gcp.compute.GlobalAddress(\"private_ip_alloc\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=24,\n network=network.id)\n# Create a private connection\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\ninstance = gcp.parallelstore.Instance(\"instance\",\n instance_id=\"instance\",\n location=\"us-central1-a\",\n description=\"test instance\",\n capacity_gib=\"12000\",\n network=network.name,\n file_stripe_level=\"FILE_STRIPE_LEVEL_MIN\",\n directory_stripe_level=\"DIRECTORY_STRIPE_LEVEL_MIN\",\n deployment_type=\"SCRATCH\",\n labels={\n \"test\": \"value\",\n },\n opts = pulumi.ResourceOptions(depends_on=[default]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"network\",\n AutoCreateSubnetworks = true,\n Mtu = 8896,\n });\n\n // Create an IP address\n var privateIpAlloc = new Gcp.Compute.GlobalAddress(\"private_ip_alloc\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 24,\n Network = network.Id,\n });\n\n // Create a private connection\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n var instance = new Gcp.ParallelStore.Instance(\"instance\", new()\n {\n InstanceId = \"instance\",\n Location = \"us-central1-a\",\n Description = \"test instance\",\n CapacityGib = \"12000\",\n Network = network.Name,\n FileStripeLevel = \"FILE_STRIPE_LEVEL_MIN\",\n DirectoryStripeLevel = \"DIRECTORY_STRIPE_LEVEL_MIN\",\n DeploymentType = \"SCRATCH\",\n Labels = \n {\n { \"test\", \"value\" },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/parallelstore\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/servicenetworking\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(true),\n\t\t\tMtu: pulumi.Int(8896),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create an IP address\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(24),\n\t\t\tNetwork: network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a private connection\n\t\t_default, err := servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tprivateIpAlloc.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = parallelstore.NewInstance(ctx, \"instance\", \u0026parallelstore.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1-a\"),\n\t\t\tDescription: pulumi.String(\"test instance\"),\n\t\t\tCapacityGib: pulumi.String(\"12000\"),\n\t\t\tNetwork: network.Name,\n\t\t\tFileStripeLevel: pulumi.String(\"FILE_STRIPE_LEVEL_MIN\"),\n\t\t\tDirectoryStripeLevel: pulumi.String(\"DIRECTORY_STRIPE_LEVEL_MIN\"),\n\t\t\tDeploymentType: pulumi.String(\"SCRATCH\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"test\": pulumi.String(\"value\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\t_default,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.parallelstore.Instance;\nimport com.pulumi.gcp.parallelstore.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"network\")\n .autoCreateSubnetworks(true)\n .mtu(8896)\n .build());\n\n // Create an IP address\n var privateIpAlloc = new GlobalAddress(\"privateIpAlloc\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(24)\n .network(network.id())\n .build());\n\n // Create a private connection\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n var instance = new Instance(\"instance\", InstanceArgs.builder()\n .instanceId(\"instance\")\n .location(\"us-central1-a\")\n .description(\"test instance\")\n .capacityGib(12000)\n .network(network.name())\n .fileStripeLevel(\"FILE_STRIPE_LEVEL_MIN\")\n .directoryStripeLevel(\"DIRECTORY_STRIPE_LEVEL_MIN\")\n .deploymentType(\"SCRATCH\")\n .labels(Map.of(\"test\", \"value\"))\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n instance:\n type: gcp:parallelstore:Instance\n properties:\n instanceId: instance\n location: us-central1-a\n description: test instance\n capacityGib: 12000\n network: ${network.name}\n fileStripeLevel: FILE_STRIPE_LEVEL_MIN\n directoryStripeLevel: DIRECTORY_STRIPE_LEVEL_MIN\n deploymentType: SCRATCH\n labels:\n test: value\n options:\n dependsOn:\n - ${default}\n network:\n type: gcp:compute:Network\n properties:\n name: network\n autoCreateSubnetworks: true\n mtu: 8896\n # Create an IP address\n privateIpAlloc:\n type: gcp:compute:GlobalAddress\n name: private_ip_alloc\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 24\n network: ${network.id}\n # Create a private connection\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${network.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{instance_id}}`\n\n* `{{location}}/{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:parallelstore/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:parallelstore/instance:Instance default {{project}}/{{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:parallelstore/instance:Instance default {{location}}/{{instance_id}}\n```\n\n", "properties": { "accessPoints": { "type": "array", @@ -263729,7 +263729,7 @@ } }, "gcp:parametermanager/parameterVersion:ParameterVersion": { - "description": "## Example Usage\n\n### Parameter 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 parameter_basic = new gcp.parametermanager.Parameter(\"parameter-basic\", {parameterId: \"parameter\"});\nconst parameter_version_basic = new gcp.parametermanager.ParameterVersion(\"parameter-version-basic\", {\n parameter: parameter_basic.id,\n parameterVersionId: \"parameter_version\",\n parameterData: \"app-parameter-version-data\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nparameter_basic = gcp.parametermanager.Parameter(\"parameter-basic\", parameter_id=\"parameter\")\nparameter_version_basic = gcp.parametermanager.ParameterVersion(\"parameter-version-basic\",\n parameter=parameter_basic.id,\n parameter_version_id=\"parameter_version\",\n parameter_data=\"app-parameter-version-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 parameter_basic = new Gcp.ParameterManager.Parameter(\"parameter-basic\", new()\n {\n ParameterId = \"parameter\",\n });\n\n var parameter_version_basic = new Gcp.ParameterManager.ParameterVersion(\"parameter-version-basic\", new()\n {\n Parameter = parameter_basic.Id,\n ParameterVersionId = \"parameter_version\",\n ParameterData = \"app-parameter-version-data\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/parametermanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := parametermanager.NewParameter(ctx, \"parameter-basic\", \u0026parametermanager.ParameterArgs{\n\t\t\tParameterId: pulumi.String(\"parameter\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = parametermanager.NewParameterVersion(ctx, \"parameter-version-basic\", \u0026parametermanager.ParameterVersionArgs{\n\t\t\tParameter: parameter_basic.ID(),\n\t\t\tParameterVersionId: pulumi.String(\"parameter_version\"),\n\t\t\tParameterData: pulumi.String(\"app-parameter-version-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.parametermanager.Parameter;\nimport com.pulumi.gcp.parametermanager.ParameterArgs;\nimport com.pulumi.gcp.parametermanager.ParameterVersion;\nimport com.pulumi.gcp.parametermanager.ParameterVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var parameter_basic = new Parameter(\"parameter-basic\", ParameterArgs.builder()\n .parameterId(\"parameter\")\n .build());\n\n var parameter_version_basic = new ParameterVersion(\"parameter-version-basic\", ParameterVersionArgs.builder()\n .parameter(parameter_basic.id())\n .parameterVersionId(\"parameter_version\")\n .parameterData(\"app-parameter-version-data\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n parameter-basic:\n type: gcp:parametermanager:Parameter\n properties:\n parameterId: parameter\n parameter-version-basic:\n type: gcp:parametermanager:ParameterVersion\n properties:\n parameter: ${[\"parameter-basic\"].id}\n parameterVersionId: parameter_version\n parameterData: app-parameter-version-data\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Parameter Version With Json Format\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst parameter_basic = new gcp.parametermanager.Parameter(\"parameter-basic\", {\n parameterId: \"parameter\",\n format: \"JSON\",\n});\nconst parameter_version_with_json_format = new gcp.parametermanager.ParameterVersion(\"parameter-version-with-json-format\", {\n parameter: parameter_basic.id,\n parameterVersionId: \"parameter_version\",\n parameterData: JSON.stringify({\n key1: \"val1\",\n key2: \"val2\",\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nparameter_basic = gcp.parametermanager.Parameter(\"parameter-basic\",\n parameter_id=\"parameter\",\n format=\"JSON\")\nparameter_version_with_json_format = gcp.parametermanager.ParameterVersion(\"parameter-version-with-json-format\",\n parameter=parameter_basic.id,\n parameter_version_id=\"parameter_version\",\n parameter_data=json.dumps({\n \"key1\": \"val1\",\n \"key2\": \"val2\",\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 parameter_basic = new Gcp.ParameterManager.Parameter(\"parameter-basic\", new()\n {\n ParameterId = \"parameter\",\n Format = \"JSON\",\n });\n\n var parameter_version_with_json_format = new Gcp.ParameterManager.ParameterVersion(\"parameter-version-with-json-format\", new()\n {\n Parameter = parameter_basic.Id,\n ParameterVersionId = \"parameter_version\",\n ParameterData = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"key1\"] = \"val1\",\n [\"key2\"] = \"val2\",\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/parametermanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := parametermanager.NewParameter(ctx, \"parameter-basic\", \u0026parametermanager.ParameterArgs{\n\t\t\tParameterId: pulumi.String(\"parameter\"),\n\t\t\tFormat: pulumi.String(\"JSON\"),\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\"key1\": \"val1\",\n\t\t\t\"key2\": \"val2\",\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 = parametermanager.NewParameterVersion(ctx, \"parameter-version-with-json-format\", \u0026parametermanager.ParameterVersionArgs{\n\t\t\tParameter: parameter_basic.ID(),\n\t\t\tParameterVersionId: pulumi.String(\"parameter_version\"),\n\t\t\tParameterData: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.parametermanager.Parameter;\nimport com.pulumi.gcp.parametermanager.ParameterArgs;\nimport com.pulumi.gcp.parametermanager.ParameterVersion;\nimport com.pulumi.gcp.parametermanager.ParameterVersionArgs;\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 parameter_basic = new Parameter(\"parameter-basic\", ParameterArgs.builder()\n .parameterId(\"parameter\")\n .format(\"JSON\")\n .build());\n\n var parameter_version_with_json_format = new ParameterVersion(\"parameter-version-with-json-format\", ParameterVersionArgs.builder()\n .parameter(parameter_basic.id())\n .parameterVersionId(\"parameter_version\")\n .parameterData(serializeJson(\n jsonObject(\n jsonProperty(\"key1\", \"val1\"),\n jsonProperty(\"key2\", \"val2\")\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n parameter-basic:\n type: gcp:parametermanager:Parameter\n properties:\n parameterId: parameter\n format: JSON\n parameter-version-with-json-format:\n type: gcp:parametermanager:ParameterVersion\n properties:\n parameter: ${[\"parameter-basic\"].id}\n parameterVersionId: parameter_version\n parameterData:\n fn::toJSON:\n key1: val1\n key2: val2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nParameterVersion can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/parameters/{{parameter_id}}/versions/{{parameter_version_id}}`\n\nWhen using the `pulumi import` command, ParameterVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:parametermanager/parameterVersion:ParameterVersion default projects/{{project}}/locations/global/parameters/{{parameter_id}}/versions/{{parameter_version_id}}\n```\n\n", + "description": "## Example Usage\n\n### Parameter 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 parameter_basic = new gcp.parametermanager.Parameter(\"parameter-basic\", {parameterId: \"parameter\"});\nconst parameter_version_basic = new gcp.parametermanager.ParameterVersion(\"parameter-version-basic\", {\n parameter: parameter_basic.id,\n parameterVersionId: \"parameter_version\",\n parameterData: \"app-parameter-version-data\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nparameter_basic = gcp.parametermanager.Parameter(\"parameter-basic\", parameter_id=\"parameter\")\nparameter_version_basic = gcp.parametermanager.ParameterVersion(\"parameter-version-basic\",\n parameter=parameter_basic.id,\n parameter_version_id=\"parameter_version\",\n parameter_data=\"app-parameter-version-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 parameter_basic = new Gcp.ParameterManager.Parameter(\"parameter-basic\", new()\n {\n ParameterId = \"parameter\",\n });\n\n var parameter_version_basic = new Gcp.ParameterManager.ParameterVersion(\"parameter-version-basic\", new()\n {\n Parameter = parameter_basic.Id,\n ParameterVersionId = \"parameter_version\",\n ParameterData = \"app-parameter-version-data\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/parametermanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tparameter_basic, err := parametermanager.NewParameter(ctx, \"parameter-basic\", \u0026parametermanager.ParameterArgs{\n\t\t\tParameterId: pulumi.String(\"parameter\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = parametermanager.NewParameterVersion(ctx, \"parameter-version-basic\", \u0026parametermanager.ParameterVersionArgs{\n\t\t\tParameter: parameter_basic.ID(),\n\t\t\tParameterVersionId: pulumi.String(\"parameter_version\"),\n\t\t\tParameterData: pulumi.String(\"app-parameter-version-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.parametermanager.Parameter;\nimport com.pulumi.gcp.parametermanager.ParameterArgs;\nimport com.pulumi.gcp.parametermanager.ParameterVersion;\nimport com.pulumi.gcp.parametermanager.ParameterVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var parameter_basic = new Parameter(\"parameter-basic\", ParameterArgs.builder()\n .parameterId(\"parameter\")\n .build());\n\n var parameter_version_basic = new ParameterVersion(\"parameter-version-basic\", ParameterVersionArgs.builder()\n .parameter(parameter_basic.id())\n .parameterVersionId(\"parameter_version\")\n .parameterData(\"app-parameter-version-data\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n parameter-basic:\n type: gcp:parametermanager:Parameter\n properties:\n parameterId: parameter\n parameter-version-basic:\n type: gcp:parametermanager:ParameterVersion\n properties:\n parameter: ${[\"parameter-basic\"].id}\n parameterVersionId: parameter_version\n parameterData: app-parameter-version-data\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Parameter Version With Json Format\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst parameter_basic = new gcp.parametermanager.Parameter(\"parameter-basic\", {\n parameterId: \"parameter\",\n format: \"JSON\",\n});\nconst parameter_version_with_json_format = new gcp.parametermanager.ParameterVersion(\"parameter-version-with-json-format\", {\n parameter: parameter_basic.id,\n parameterVersionId: \"parameter_version\",\n parameterData: JSON.stringify({\n key1: \"val1\",\n key2: \"val2\",\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nparameter_basic = gcp.parametermanager.Parameter(\"parameter-basic\",\n parameter_id=\"parameter\",\n format=\"JSON\")\nparameter_version_with_json_format = gcp.parametermanager.ParameterVersion(\"parameter-version-with-json-format\",\n parameter=parameter_basic.id,\n parameter_version_id=\"parameter_version\",\n parameter_data=json.dumps({\n \"key1\": \"val1\",\n \"key2\": \"val2\",\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 parameter_basic = new Gcp.ParameterManager.Parameter(\"parameter-basic\", new()\n {\n ParameterId = \"parameter\",\n Format = \"JSON\",\n });\n\n var parameter_version_with_json_format = new Gcp.ParameterManager.ParameterVersion(\"parameter-version-with-json-format\", new()\n {\n Parameter = parameter_basic.Id,\n ParameterVersionId = \"parameter_version\",\n ParameterData = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"key1\"] = \"val1\",\n [\"key2\"] = \"val2\",\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/parametermanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tparameter_basic, err := parametermanager.NewParameter(ctx, \"parameter-basic\", \u0026parametermanager.ParameterArgs{\n\t\t\tParameterId: pulumi.String(\"parameter\"),\n\t\t\tFormat: pulumi.String(\"JSON\"),\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\"key1\": \"val1\",\n\t\t\t\"key2\": \"val2\",\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 = parametermanager.NewParameterVersion(ctx, \"parameter-version-with-json-format\", \u0026parametermanager.ParameterVersionArgs{\n\t\t\tParameter: parameter_basic.ID(),\n\t\t\tParameterVersionId: pulumi.String(\"parameter_version\"),\n\t\t\tParameterData: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.parametermanager.Parameter;\nimport com.pulumi.gcp.parametermanager.ParameterArgs;\nimport com.pulumi.gcp.parametermanager.ParameterVersion;\nimport com.pulumi.gcp.parametermanager.ParameterVersionArgs;\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 parameter_basic = new Parameter(\"parameter-basic\", ParameterArgs.builder()\n .parameterId(\"parameter\")\n .format(\"JSON\")\n .build());\n\n var parameter_version_with_json_format = new ParameterVersion(\"parameter-version-with-json-format\", ParameterVersionArgs.builder()\n .parameter(parameter_basic.id())\n .parameterVersionId(\"parameter_version\")\n .parameterData(serializeJson(\n jsonObject(\n jsonProperty(\"key1\", \"val1\"),\n jsonProperty(\"key2\", \"val2\")\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n parameter-basic:\n type: gcp:parametermanager:Parameter\n properties:\n parameterId: parameter\n format: JSON\n parameter-version-with-json-format:\n type: gcp:parametermanager:ParameterVersion\n properties:\n parameter: ${[\"parameter-basic\"].id}\n parameterVersionId: parameter_version\n parameterData:\n fn::toJSON:\n key1: val1\n key2: val2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nParameterVersion can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/parameters/{{parameter_id}}/versions/{{parameter_version_id}}`\n\nWhen using the `pulumi import` command, ParameterVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:parametermanager/parameterVersion:ParameterVersion default projects/{{project}}/locations/global/parameters/{{parameter_id}}/versions/{{parameter_version_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -264011,7 +264011,7 @@ } }, "gcp:parametermanager/regionalParameterVersion:RegionalParameterVersion": { - "description": "## Example Usage\n\n### Regional Parameter 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 regional_parameter_basic = new gcp.parametermanager.RegionalParameter(\"regional-parameter-basic\", {\n parameterId: \"regional_parameter\",\n location: \"us-central1\",\n});\nconst regional_parameter_version_basic = new gcp.parametermanager.RegionalParameterVersion(\"regional-parameter-version-basic\", {\n parameter: regional_parameter_basic.id,\n parameterVersionId: \"regional_parameter_version\",\n parameterData: \"regional-parameter-version-data\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregional_parameter_basic = gcp.parametermanager.RegionalParameter(\"regional-parameter-basic\",\n parameter_id=\"regional_parameter\",\n location=\"us-central1\")\nregional_parameter_version_basic = gcp.parametermanager.RegionalParameterVersion(\"regional-parameter-version-basic\",\n parameter=regional_parameter_basic.id,\n parameter_version_id=\"regional_parameter_version\",\n parameter_data=\"regional-parameter-version-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 regional_parameter_basic = new Gcp.ParameterManager.RegionalParameter(\"regional-parameter-basic\", new()\n {\n ParameterId = \"regional_parameter\",\n Location = \"us-central1\",\n });\n\n var regional_parameter_version_basic = new Gcp.ParameterManager.RegionalParameterVersion(\"regional-parameter-version-basic\", new()\n {\n Parameter = regional_parameter_basic.Id,\n ParameterVersionId = \"regional_parameter_version\",\n ParameterData = \"regional-parameter-version-data\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/parametermanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := parametermanager.NewRegionalParameter(ctx, \"regional-parameter-basic\", \u0026parametermanager.RegionalParameterArgs{\n\t\t\tParameterId: pulumi.String(\"regional_parameter\"),\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 = parametermanager.NewRegionalParameterVersion(ctx, \"regional-parameter-version-basic\", \u0026parametermanager.RegionalParameterVersionArgs{\n\t\t\tParameter: regional_parameter_basic.ID(),\n\t\t\tParameterVersionId: pulumi.String(\"regional_parameter_version\"),\n\t\t\tParameterData: pulumi.String(\"regional-parameter-version-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.parametermanager.RegionalParameter;\nimport com.pulumi.gcp.parametermanager.RegionalParameterArgs;\nimport com.pulumi.gcp.parametermanager.RegionalParameterVersion;\nimport com.pulumi.gcp.parametermanager.RegionalParameterVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_parameter_basic = new RegionalParameter(\"regional-parameter-basic\", RegionalParameterArgs.builder()\n .parameterId(\"regional_parameter\")\n .location(\"us-central1\")\n .build());\n\n var regional_parameter_version_basic = new RegionalParameterVersion(\"regional-parameter-version-basic\", RegionalParameterVersionArgs.builder()\n .parameter(regional_parameter_basic.id())\n .parameterVersionId(\"regional_parameter_version\")\n .parameterData(\"regional-parameter-version-data\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regional-parameter-basic:\n type: gcp:parametermanager:RegionalParameter\n properties:\n parameterId: regional_parameter\n location: us-central1\n regional-parameter-version-basic:\n type: gcp:parametermanager:RegionalParameterVersion\n properties:\n parameter: ${[\"regional-parameter-basic\"].id}\n parameterVersionId: regional_parameter_version\n parameterData: regional-parameter-version-data\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Parameter Version With Json Format\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst regional_parameter_basic = new gcp.parametermanager.RegionalParameter(\"regional-parameter-basic\", {\n parameterId: \"regional_parameter\",\n format: \"JSON\",\n location: \"us-central1\",\n});\nconst regional_parameter_version_with_json_format = new gcp.parametermanager.RegionalParameterVersion(\"regional-parameter-version-with-json-format\", {\n parameter: regional_parameter_basic.id,\n parameterVersionId: \"regional_parameter_version\",\n parameterData: JSON.stringify({\n key1: \"val1\",\n key2: \"val2\",\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nregional_parameter_basic = gcp.parametermanager.RegionalParameter(\"regional-parameter-basic\",\n parameter_id=\"regional_parameter\",\n format=\"JSON\",\n location=\"us-central1\")\nregional_parameter_version_with_json_format = gcp.parametermanager.RegionalParameterVersion(\"regional-parameter-version-with-json-format\",\n parameter=regional_parameter_basic.id,\n parameter_version_id=\"regional_parameter_version\",\n parameter_data=json.dumps({\n \"key1\": \"val1\",\n \"key2\": \"val2\",\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 regional_parameter_basic = new Gcp.ParameterManager.RegionalParameter(\"regional-parameter-basic\", new()\n {\n ParameterId = \"regional_parameter\",\n Format = \"JSON\",\n Location = \"us-central1\",\n });\n\n var regional_parameter_version_with_json_format = new Gcp.ParameterManager.RegionalParameterVersion(\"regional-parameter-version-with-json-format\", new()\n {\n Parameter = regional_parameter_basic.Id,\n ParameterVersionId = \"regional_parameter_version\",\n ParameterData = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"key1\"] = \"val1\",\n [\"key2\"] = \"val2\",\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/parametermanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := parametermanager.NewRegionalParameter(ctx, \"regional-parameter-basic\", \u0026parametermanager.RegionalParameterArgs{\n\t\t\tParameterId: pulumi.String(\"regional_parameter\"),\n\t\t\tFormat: pulumi.String(\"JSON\"),\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\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"key1\": \"val1\",\n\t\t\t\"key2\": \"val2\",\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 = parametermanager.NewRegionalParameterVersion(ctx, \"regional-parameter-version-with-json-format\", \u0026parametermanager.RegionalParameterVersionArgs{\n\t\t\tParameter: regional_parameter_basic.ID(),\n\t\t\tParameterVersionId: pulumi.String(\"regional_parameter_version\"),\n\t\t\tParameterData: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.parametermanager.RegionalParameter;\nimport com.pulumi.gcp.parametermanager.RegionalParameterArgs;\nimport com.pulumi.gcp.parametermanager.RegionalParameterVersion;\nimport com.pulumi.gcp.parametermanager.RegionalParameterVersionArgs;\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 regional_parameter_basic = new RegionalParameter(\"regional-parameter-basic\", RegionalParameterArgs.builder()\n .parameterId(\"regional_parameter\")\n .format(\"JSON\")\n .location(\"us-central1\")\n .build());\n\n var regional_parameter_version_with_json_format = new RegionalParameterVersion(\"regional-parameter-version-with-json-format\", RegionalParameterVersionArgs.builder()\n .parameter(regional_parameter_basic.id())\n .parameterVersionId(\"regional_parameter_version\")\n .parameterData(serializeJson(\n jsonObject(\n jsonProperty(\"key1\", \"val1\"),\n jsonProperty(\"key2\", \"val2\")\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regional-parameter-basic:\n type: gcp:parametermanager:RegionalParameter\n properties:\n parameterId: regional_parameter\n format: JSON\n location: us-central1\n regional-parameter-version-with-json-format:\n type: gcp:parametermanager:RegionalParameterVersion\n properties:\n parameter: ${[\"regional-parameter-basic\"].id}\n parameterVersionId: regional_parameter_version\n parameterData:\n fn::toJSON:\n key1: val1\n key2: val2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nRegionalParameterVersion can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/parameters/{{parameter_id}}/versions/{{parameter_version_id}}`\n\nWhen using the `pulumi import` command, RegionalParameterVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:parametermanager/regionalParameterVersion:RegionalParameterVersion default projects/{{project}}/locations/{{location}}/parameters/{{parameter_id}}/versions/{{parameter_version_id}}\n```\n\n", + "description": "## Example Usage\n\n### Regional Parameter 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 regional_parameter_basic = new gcp.parametermanager.RegionalParameter(\"regional-parameter-basic\", {\n parameterId: \"regional_parameter\",\n location: \"us-central1\",\n});\nconst regional_parameter_version_basic = new gcp.parametermanager.RegionalParameterVersion(\"regional-parameter-version-basic\", {\n parameter: regional_parameter_basic.id,\n parameterVersionId: \"regional_parameter_version\",\n parameterData: \"regional-parameter-version-data\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregional_parameter_basic = gcp.parametermanager.RegionalParameter(\"regional-parameter-basic\",\n parameter_id=\"regional_parameter\",\n location=\"us-central1\")\nregional_parameter_version_basic = gcp.parametermanager.RegionalParameterVersion(\"regional-parameter-version-basic\",\n parameter=regional_parameter_basic.id,\n parameter_version_id=\"regional_parameter_version\",\n parameter_data=\"regional-parameter-version-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 regional_parameter_basic = new Gcp.ParameterManager.RegionalParameter(\"regional-parameter-basic\", new()\n {\n ParameterId = \"regional_parameter\",\n Location = \"us-central1\",\n });\n\n var regional_parameter_version_basic = new Gcp.ParameterManager.RegionalParameterVersion(\"regional-parameter-version-basic\", new()\n {\n Parameter = regional_parameter_basic.Id,\n ParameterVersionId = \"regional_parameter_version\",\n ParameterData = \"regional-parameter-version-data\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/parametermanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tregional_parameter_basic, err := parametermanager.NewRegionalParameter(ctx, \"regional-parameter-basic\", \u0026parametermanager.RegionalParameterArgs{\n\t\t\tParameterId: pulumi.String(\"regional_parameter\"),\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 = parametermanager.NewRegionalParameterVersion(ctx, \"regional-parameter-version-basic\", \u0026parametermanager.RegionalParameterVersionArgs{\n\t\t\tParameter: regional_parameter_basic.ID(),\n\t\t\tParameterVersionId: pulumi.String(\"regional_parameter_version\"),\n\t\t\tParameterData: pulumi.String(\"regional-parameter-version-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.parametermanager.RegionalParameter;\nimport com.pulumi.gcp.parametermanager.RegionalParameterArgs;\nimport com.pulumi.gcp.parametermanager.RegionalParameterVersion;\nimport com.pulumi.gcp.parametermanager.RegionalParameterVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_parameter_basic = new RegionalParameter(\"regional-parameter-basic\", RegionalParameterArgs.builder()\n .parameterId(\"regional_parameter\")\n .location(\"us-central1\")\n .build());\n\n var regional_parameter_version_basic = new RegionalParameterVersion(\"regional-parameter-version-basic\", RegionalParameterVersionArgs.builder()\n .parameter(regional_parameter_basic.id())\n .parameterVersionId(\"regional_parameter_version\")\n .parameterData(\"regional-parameter-version-data\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regional-parameter-basic:\n type: gcp:parametermanager:RegionalParameter\n properties:\n parameterId: regional_parameter\n location: us-central1\n regional-parameter-version-basic:\n type: gcp:parametermanager:RegionalParameterVersion\n properties:\n parameter: ${[\"regional-parameter-basic\"].id}\n parameterVersionId: regional_parameter_version\n parameterData: regional-parameter-version-data\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Parameter Version With Json Format\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst regional_parameter_basic = new gcp.parametermanager.RegionalParameter(\"regional-parameter-basic\", {\n parameterId: \"regional_parameter\",\n format: \"JSON\",\n location: \"us-central1\",\n});\nconst regional_parameter_version_with_json_format = new gcp.parametermanager.RegionalParameterVersion(\"regional-parameter-version-with-json-format\", {\n parameter: regional_parameter_basic.id,\n parameterVersionId: \"regional_parameter_version\",\n parameterData: JSON.stringify({\n key1: \"val1\",\n key2: \"val2\",\n }),\n});\n```\n```python\nimport pulumi\nimport json\nimport pulumi_gcp as gcp\n\nregional_parameter_basic = gcp.parametermanager.RegionalParameter(\"regional-parameter-basic\",\n parameter_id=\"regional_parameter\",\n format=\"JSON\",\n location=\"us-central1\")\nregional_parameter_version_with_json_format = gcp.parametermanager.RegionalParameterVersion(\"regional-parameter-version-with-json-format\",\n parameter=regional_parameter_basic.id,\n parameter_version_id=\"regional_parameter_version\",\n parameter_data=json.dumps({\n \"key1\": \"val1\",\n \"key2\": \"val2\",\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 regional_parameter_basic = new Gcp.ParameterManager.RegionalParameter(\"regional-parameter-basic\", new()\n {\n ParameterId = \"regional_parameter\",\n Format = \"JSON\",\n Location = \"us-central1\",\n });\n\n var regional_parameter_version_with_json_format = new Gcp.ParameterManager.RegionalParameterVersion(\"regional-parameter-version-with-json-format\", new()\n {\n Parameter = regional_parameter_basic.Id,\n ParameterVersionId = \"regional_parameter_version\",\n ParameterData = JsonSerializer.Serialize(new Dictionary\u003cstring, object?\u003e\n {\n [\"key1\"] = \"val1\",\n [\"key2\"] = \"val2\",\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/parametermanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tregional_parameter_basic, err := parametermanager.NewRegionalParameter(ctx, \"regional-parameter-basic\", \u0026parametermanager.RegionalParameterArgs{\n\t\t\tParameterId: pulumi.String(\"regional_parameter\"),\n\t\t\tFormat: pulumi.String(\"JSON\"),\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\ttmpJSON0, err := json.Marshal(map[string]interface{}{\n\t\t\t\"key1\": \"val1\",\n\t\t\t\"key2\": \"val2\",\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 = parametermanager.NewRegionalParameterVersion(ctx, \"regional-parameter-version-with-json-format\", \u0026parametermanager.RegionalParameterVersionArgs{\n\t\t\tParameter: regional_parameter_basic.ID(),\n\t\t\tParameterVersionId: pulumi.String(\"regional_parameter_version\"),\n\t\t\tParameterData: pulumi.String(json0),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.parametermanager.RegionalParameter;\nimport com.pulumi.gcp.parametermanager.RegionalParameterArgs;\nimport com.pulumi.gcp.parametermanager.RegionalParameterVersion;\nimport com.pulumi.gcp.parametermanager.RegionalParameterVersionArgs;\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 regional_parameter_basic = new RegionalParameter(\"regional-parameter-basic\", RegionalParameterArgs.builder()\n .parameterId(\"regional_parameter\")\n .format(\"JSON\")\n .location(\"us-central1\")\n .build());\n\n var regional_parameter_version_with_json_format = new RegionalParameterVersion(\"regional-parameter-version-with-json-format\", RegionalParameterVersionArgs.builder()\n .parameter(regional_parameter_basic.id())\n .parameterVersionId(\"regional_parameter_version\")\n .parameterData(serializeJson(\n jsonObject(\n jsonProperty(\"key1\", \"val1\"),\n jsonProperty(\"key2\", \"val2\")\n )))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n regional-parameter-basic:\n type: gcp:parametermanager:RegionalParameter\n properties:\n parameterId: regional_parameter\n format: JSON\n location: us-central1\n regional-parameter-version-with-json-format:\n type: gcp:parametermanager:RegionalParameterVersion\n properties:\n parameter: ${[\"regional-parameter-basic\"].id}\n parameterVersionId: regional_parameter_version\n parameterData:\n fn::toJSON:\n key1: val1\n key2: val2\n```\n\u003c!--End PulumiCodeChooser --\u003e\n## Import\n\nRegionalParameterVersion can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/parameters/{{parameter_id}}/versions/{{parameter_version_id}}`\n\nWhen using the `pulumi import` command, RegionalParameterVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:parametermanager/regionalParameterVersion:RegionalParameterVersion default projects/{{project}}/locations/{{location}}/parameters/{{parameter_id}}/versions/{{parameter_version_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -267275,7 +267275,7 @@ } }, "gcp:redis/cluster:Cluster": { - "description": "## Example Usage\n\n### Redis Cluster Ha\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: \"mynetwork\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"mysubnet\",\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: \"mypolicy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst cluster_ha = new gcp.redis.Cluster(\"cluster-ha\", {\n name: \"ha-cluster\",\n shardCount: 3,\n pscConfigs: [{\n network: producerNet.id,\n }],\n region: \"us-central1\",\n replicaCount: 1,\n nodeType: \"REDIS_SHARED_CORE_NANO\",\n transitEncryptionMode: \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n authorizationMode: \"AUTH_MODE_DISABLED\",\n redisConfigs: {\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n deletionProtectionEnabled: true,\n zoneDistributionConfig: {\n mode: \"MULTI_ZONE\",\n },\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"MONDAY\",\n startTime: {\n hours: 1,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n }],\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=\"mynetwork\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"mysubnet\",\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=\"mypolicy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\ncluster_ha = gcp.redis.Cluster(\"cluster-ha\",\n name=\"ha-cluster\",\n shard_count=3,\n psc_configs=[{\n \"network\": producer_net.id,\n }],\n region=\"us-central1\",\n replica_count=1,\n node_type=\"REDIS_SHARED_CORE_NANO\",\n transit_encryption_mode=\"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n authorization_mode=\"AUTH_MODE_DISABLED\",\n redis_configs={\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n deletion_protection_enabled=True,\n zone_distribution_config={\n \"mode\": \"MULTI_ZONE\",\n },\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"MONDAY\",\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\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 = \"mynetwork\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"mysubnet\",\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 = \"mypolicy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore-redis\",\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 cluster_ha = new Gcp.Redis.Cluster(\"cluster-ha\", new()\n {\n Name = \"ha-cluster\",\n ShardCount = 3,\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = producerNet.Id,\n },\n },\n Region = \"us-central1\",\n ReplicaCount = 1,\n NodeType = \"REDIS_SHARED_CORE_NANO\",\n TransitEncryptionMode = \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n AuthorizationMode = \"AUTH_MODE_DISABLED\",\n RedisConfigs = \n {\n { \"maxmemory-policy\", \"volatile-ttl\" },\n },\n DeletionProtectionEnabled = true,\n ZoneDistributionConfig = new Gcp.Redis.Inputs.ClusterZoneDistributionConfigArgs\n {\n Mode = \"MULTI_ZONE\",\n },\n MaintenancePolicy = new Gcp.Redis.Inputs.ClusterMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"MONDAY\",\n StartTime = new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\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/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"mynetwork\"),\n\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(\"mysubnet\"),\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(\"mypolicy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\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\t_, err = redis.NewCluster(ctx, \"cluster-ha\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"ha-cluster\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tReplicaCount: pulumi.Int(1),\n\t\t\tNodeType: pulumi.String(\"REDIS_SHARED_CORE_NANO\"),\n\t\t\tTransitEncryptionMode: pulumi.String(\"TRANSIT_ENCRYPTION_MODE_DISABLED\"),\n\t\t\tAuthorizationMode: pulumi.String(\"AUTH_MODE_DISABLED\"),\n\t\t\tRedisConfigs: pulumi.StringMap{\n\t\t\t\t\"maxmemory-policy\": pulumi.String(\"volatile-ttl\"),\n\t\t\t},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(true),\n\t\t\tZoneDistributionConfig: \u0026redis.ClusterZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"MULTI_ZONE\"),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026redis.ClusterMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"MONDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(1),\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},\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.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPscConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterZoneDistributionConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"mynetwork\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"mysubnet\")\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(\"mypolicy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore-redis\")\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 var cluster_ha = new Cluster(\"cluster-ha\", ClusterArgs.builder()\n .name(\"ha-cluster\")\n .shardCount(3)\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(producerNet.id())\n .build())\n .region(\"us-central1\")\n .replicaCount(1)\n .nodeType(\"REDIS_SHARED_CORE_NANO\")\n .transitEncryptionMode(\"TRANSIT_ENCRYPTION_MODE_DISABLED\")\n .authorizationMode(\"AUTH_MODE_DISABLED\")\n .redisConfigs(Map.of(\"maxmemory-policy\", \"volatile-ttl\"))\n .deletionProtectionEnabled(true)\n .zoneDistributionConfig(ClusterZoneDistributionConfigArgs.builder()\n .mode(\"MULTI_ZONE\")\n .build())\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"MONDAY\")\n .startTime(ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-ha:\n type: gcp:redis:Cluster\n properties:\n name: ha-cluster\n shardCount: 3\n pscConfigs:\n - network: ${producerNet.id}\n region: us-central1\n replicaCount: 1\n nodeType: REDIS_SHARED_CORE_NANO\n transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED\n authorizationMode: AUTH_MODE_DISABLED\n redisConfigs:\n maxmemory-policy: volatile-ttl\n deletionProtectionEnabled: true\n zoneDistributionConfig:\n mode: MULTI_ZONE\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: MONDAY\n startTime:\n hours: 1\n minutes: 0\n seconds: 0\n nanos: 0\n options:\n dependsOn:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: mypolicy\n location: us-central1\n serviceClass: gcp-memorystore-redis\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: mysubnet\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: mynetwork\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Cluster Ha Single Zone\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: \"mynetwork\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"mysubnet\",\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: \"mypolicy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst cluster_ha_single_zone = new gcp.redis.Cluster(\"cluster-ha-single-zone\", {\n name: \"ha-cluster-single-zone\",\n shardCount: 3,\n pscConfigs: [{\n network: producerNet.id,\n }],\n region: \"us-central1\",\n zoneDistributionConfig: {\n mode: \"SINGLE_ZONE\",\n zone: \"us-central1-f\",\n },\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"MONDAY\",\n startTime: {\n hours: 1,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n deletionProtectionEnabled: true,\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=\"mynetwork\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"mysubnet\",\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=\"mypolicy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\ncluster_ha_single_zone = gcp.redis.Cluster(\"cluster-ha-single-zone\",\n name=\"ha-cluster-single-zone\",\n shard_count=3,\n psc_configs=[{\n \"network\": producer_net.id,\n }],\n region=\"us-central1\",\n zone_distribution_config={\n \"mode\": \"SINGLE_ZONE\",\n \"zone\": \"us-central1-f\",\n },\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"MONDAY\",\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\n },\n deletion_protection_enabled=True,\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 = \"mynetwork\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"mysubnet\",\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 = \"mypolicy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore-redis\",\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 cluster_ha_single_zone = new Gcp.Redis.Cluster(\"cluster-ha-single-zone\", new()\n {\n Name = \"ha-cluster-single-zone\",\n ShardCount = 3,\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = producerNet.Id,\n },\n },\n Region = \"us-central1\",\n ZoneDistributionConfig = new Gcp.Redis.Inputs.ClusterZoneDistributionConfigArgs\n {\n Mode = \"SINGLE_ZONE\",\n Zone = \"us-central1-f\",\n },\n MaintenancePolicy = new Gcp.Redis.Inputs.ClusterMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"MONDAY\",\n StartTime = new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n DeletionProtectionEnabled = true,\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/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"mynetwork\"),\n\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(\"mysubnet\"),\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(\"mypolicy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\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\t_, err = redis.NewCluster(ctx, \"cluster-ha-single-zone\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"ha-cluster-single-zone\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZoneDistributionConfig: \u0026redis.ClusterZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"SINGLE_ZONE\"),\n\t\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026redis.ClusterMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"MONDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(1),\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},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(true),\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.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPscConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterZoneDistributionConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"mynetwork\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"mysubnet\")\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(\"mypolicy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore-redis\")\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 var cluster_ha_single_zone = new Cluster(\"cluster-ha-single-zone\", ClusterArgs.builder()\n .name(\"ha-cluster-single-zone\")\n .shardCount(3)\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(producerNet.id())\n .build())\n .region(\"us-central1\")\n .zoneDistributionConfig(ClusterZoneDistributionConfigArgs.builder()\n .mode(\"SINGLE_ZONE\")\n .zone(\"us-central1-f\")\n .build())\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"MONDAY\")\n .startTime(ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .deletionProtectionEnabled(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-ha-single-zone:\n type: gcp:redis:Cluster\n properties:\n name: ha-cluster-single-zone\n shardCount: 3\n pscConfigs:\n - network: ${producerNet.id}\n region: us-central1\n zoneDistributionConfig:\n mode: SINGLE_ZONE\n zone: us-central1-f\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: MONDAY\n startTime:\n hours: 1\n minutes: 0\n seconds: 0\n nanos: 0\n deletionProtectionEnabled: true\n options:\n dependsOn:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: mypolicy\n location: us-central1\n serviceClass: gcp-memorystore-redis\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: mysubnet\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: mynetwork\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Cluster Secondary\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: \"mynetwork\",\n autoCreateSubnetworks: false,\n});\nconst primaryClusterProducerSubnet = new gcp.compute.Subnetwork(\"primary_cluster_producer_subnet\", {\n name: \"mysubnet-primary-cluster\",\n ipCidrRange: \"10.0.1.0/29\",\n region: \"us-east1\",\n network: producerNet.id,\n});\nconst primaryClusterRegionScp = new gcp.networkconnectivity.ServiceConnectionPolicy(\"primary_cluster_region_scp\", {\n name: \"mypolicy-primary-cluster\",\n location: \"us-east1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"Primary cluster service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [primaryClusterProducerSubnet.id],\n },\n});\n// Primary cluster\nconst primaryCluster = new gcp.redis.Cluster(\"primary_cluster\", {\n name: \"my-primary-cluster\",\n region: \"us-east1\",\n pscConfigs: [{\n network: producerNet.id,\n }],\n authorizationMode: \"AUTH_MODE_DISABLED\",\n transitEncryptionMode: \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n shardCount: 3,\n redisConfigs: {\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n nodeType: \"REDIS_HIGHMEM_MEDIUM\",\n persistenceConfig: {\n mode: \"RDB\",\n rdbConfig: {\n rdbSnapshotPeriod: \"ONE_HOUR\",\n rdbSnapshotStartTime: \"2024-10-02T15:01:23Z\",\n },\n },\n zoneDistributionConfig: {\n mode: \"MULTI_ZONE\",\n },\n replicaCount: 1,\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"MONDAY\",\n startTime: {\n hours: 1,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n deletionProtectionEnabled: true,\n}, {\n dependsOn: [primaryClusterRegionScp],\n});\nconst secondaryClusterProducerSubnet = new gcp.compute.Subnetwork(\"secondary_cluster_producer_subnet\", {\n name: \"mysubnet-secondary-cluster\",\n ipCidrRange: \"10.0.2.0/29\",\n region: \"europe-west1\",\n network: producerNet.id,\n});\nconst secondaryClusterRegionScp = new gcp.networkconnectivity.ServiceConnectionPolicy(\"secondary_cluster_region_scp\", {\n name: \"mypolicy-secondary-cluster\",\n location: \"europe-west1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"Secondary cluster service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [secondaryClusterProducerSubnet.id],\n },\n});\n// Secondary cluster\nconst secondaryCluster = new gcp.redis.Cluster(\"secondary_cluster\", {\n name: \"my-secondary-cluster\",\n region: \"europe-west1\",\n pscConfigs: [{\n network: producerNet.id,\n }],\n authorizationMode: \"AUTH_MODE_DISABLED\",\n transitEncryptionMode: \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n shardCount: 3,\n redisConfigs: {\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n nodeType: \"REDIS_HIGHMEM_MEDIUM\",\n persistenceConfig: {\n mode: \"RDB\",\n rdbConfig: {\n rdbSnapshotPeriod: \"ONE_HOUR\",\n rdbSnapshotStartTime: \"2024-10-02T15:01:23Z\",\n },\n },\n zoneDistributionConfig: {\n mode: \"MULTI_ZONE\",\n },\n replicaCount: 2,\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"WEDNESDAY\",\n startTime: {\n hours: 1,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n deletionProtectionEnabled: true,\n crossClusterReplicationConfig: {\n clusterRole: \"SECONDARY\",\n primaryCluster: {\n cluster: primaryCluster.id,\n },\n },\n}, {\n dependsOn: [secondaryClusterRegionScp],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_net = gcp.compute.Network(\"producer_net\",\n name=\"mynetwork\",\n auto_create_subnetworks=False)\nprimary_cluster_producer_subnet = gcp.compute.Subnetwork(\"primary_cluster_producer_subnet\",\n name=\"mysubnet-primary-cluster\",\n ip_cidr_range=\"10.0.1.0/29\",\n region=\"us-east1\",\n network=producer_net.id)\nprimary_cluster_region_scp = gcp.networkconnectivity.ServiceConnectionPolicy(\"primary_cluster_region_scp\",\n name=\"mypolicy-primary-cluster\",\n location=\"us-east1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"Primary cluster service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [primary_cluster_producer_subnet.id],\n })\n# Primary cluster\nprimary_cluster = gcp.redis.Cluster(\"primary_cluster\",\n name=\"my-primary-cluster\",\n region=\"us-east1\",\n psc_configs=[{\n \"network\": producer_net.id,\n }],\n authorization_mode=\"AUTH_MODE_DISABLED\",\n transit_encryption_mode=\"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n shard_count=3,\n redis_configs={\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n node_type=\"REDIS_HIGHMEM_MEDIUM\",\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 zone_distribution_config={\n \"mode\": \"MULTI_ZONE\",\n },\n replica_count=1,\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"MONDAY\",\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\n },\n deletion_protection_enabled=True,\n opts = pulumi.ResourceOptions(depends_on=[primary_cluster_region_scp]))\nsecondary_cluster_producer_subnet = gcp.compute.Subnetwork(\"secondary_cluster_producer_subnet\",\n name=\"mysubnet-secondary-cluster\",\n ip_cidr_range=\"10.0.2.0/29\",\n region=\"europe-west1\",\n network=producer_net.id)\nsecondary_cluster_region_scp = gcp.networkconnectivity.ServiceConnectionPolicy(\"secondary_cluster_region_scp\",\n name=\"mypolicy-secondary-cluster\",\n location=\"europe-west1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"Secondary cluster service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [secondary_cluster_producer_subnet.id],\n })\n# Secondary cluster\nsecondary_cluster = gcp.redis.Cluster(\"secondary_cluster\",\n name=\"my-secondary-cluster\",\n region=\"europe-west1\",\n psc_configs=[{\n \"network\": producer_net.id,\n }],\n authorization_mode=\"AUTH_MODE_DISABLED\",\n transit_encryption_mode=\"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n shard_count=3,\n redis_configs={\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n node_type=\"REDIS_HIGHMEM_MEDIUM\",\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 zone_distribution_config={\n \"mode\": \"MULTI_ZONE\",\n },\n replica_count=2,\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"WEDNESDAY\",\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\n },\n deletion_protection_enabled=True,\n cross_cluster_replication_config={\n \"cluster_role\": \"SECONDARY\",\n \"primary_cluster\": {\n \"cluster\": primary_cluster.id,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[secondary_cluster_region_scp]))\n```\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 = \"mynetwork\",\n AutoCreateSubnetworks = false,\n });\n\n var primaryClusterProducerSubnet = new Gcp.Compute.Subnetwork(\"primary_cluster_producer_subnet\", new()\n {\n Name = \"mysubnet-primary-cluster\",\n IpCidrRange = \"10.0.1.0/29\",\n Region = \"us-east1\",\n Network = producerNet.Id,\n });\n\n var primaryClusterRegionScp = new Gcp.NetworkConnectivity.ServiceConnectionPolicy(\"primary_cluster_region_scp\", new()\n {\n Name = \"mypolicy-primary-cluster\",\n Location = \"us-east1\",\n ServiceClass = \"gcp-memorystore-redis\",\n Description = \"Primary cluster service connection policy\",\n Network = producerNet.Id,\n PscConfig = new Gcp.NetworkConnectivity.Inputs.ServiceConnectionPolicyPscConfigArgs\n {\n Subnetworks = new[]\n {\n primaryClusterProducerSubnet.Id,\n },\n },\n });\n\n // Primary cluster\n var primaryCluster = new Gcp.Redis.Cluster(\"primary_cluster\", new()\n {\n Name = \"my-primary-cluster\",\n Region = \"us-east1\",\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = producerNet.Id,\n },\n },\n AuthorizationMode = \"AUTH_MODE_DISABLED\",\n TransitEncryptionMode = \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n ShardCount = 3,\n RedisConfigs = \n {\n { \"maxmemory-policy\", \"volatile-ttl\" },\n },\n NodeType = \"REDIS_HIGHMEM_MEDIUM\",\n PersistenceConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigArgs\n {\n Mode = \"RDB\",\n RdbConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigRdbConfigArgs\n {\n RdbSnapshotPeriod = \"ONE_HOUR\",\n RdbSnapshotStartTime = \"2024-10-02T15:01:23Z\",\n },\n },\n ZoneDistributionConfig = new Gcp.Redis.Inputs.ClusterZoneDistributionConfigArgs\n {\n Mode = \"MULTI_ZONE\",\n },\n ReplicaCount = 1,\n MaintenancePolicy = new Gcp.Redis.Inputs.ClusterMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"MONDAY\",\n StartTime = new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n DeletionProtectionEnabled = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primaryClusterRegionScp,\n },\n });\n\n var secondaryClusterProducerSubnet = new Gcp.Compute.Subnetwork(\"secondary_cluster_producer_subnet\", new()\n {\n Name = \"mysubnet-secondary-cluster\",\n IpCidrRange = \"10.0.2.0/29\",\n Region = \"europe-west1\",\n Network = producerNet.Id,\n });\n\n var secondaryClusterRegionScp = new Gcp.NetworkConnectivity.ServiceConnectionPolicy(\"secondary_cluster_region_scp\", new()\n {\n Name = \"mypolicy-secondary-cluster\",\n Location = \"europe-west1\",\n ServiceClass = \"gcp-memorystore-redis\",\n Description = \"Secondary cluster service connection policy\",\n Network = producerNet.Id,\n PscConfig = new Gcp.NetworkConnectivity.Inputs.ServiceConnectionPolicyPscConfigArgs\n {\n Subnetworks = new[]\n {\n secondaryClusterProducerSubnet.Id,\n },\n },\n });\n\n // Secondary cluster\n var secondaryCluster = new Gcp.Redis.Cluster(\"secondary_cluster\", new()\n {\n Name = \"my-secondary-cluster\",\n Region = \"europe-west1\",\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = producerNet.Id,\n },\n },\n AuthorizationMode = \"AUTH_MODE_DISABLED\",\n TransitEncryptionMode = \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n ShardCount = 3,\n RedisConfigs = \n {\n { \"maxmemory-policy\", \"volatile-ttl\" },\n },\n NodeType = \"REDIS_HIGHMEM_MEDIUM\",\n PersistenceConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigArgs\n {\n Mode = \"RDB\",\n RdbConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigRdbConfigArgs\n {\n RdbSnapshotPeriod = \"ONE_HOUR\",\n RdbSnapshotStartTime = \"2024-10-02T15:01:23Z\",\n },\n },\n ZoneDistributionConfig = new Gcp.Redis.Inputs.ClusterZoneDistributionConfigArgs\n {\n Mode = \"MULTI_ZONE\",\n },\n ReplicaCount = 2,\n MaintenancePolicy = new Gcp.Redis.Inputs.ClusterMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"WEDNESDAY\",\n StartTime = new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n DeletionProtectionEnabled = true,\n CrossClusterReplicationConfig = new Gcp.Redis.Inputs.ClusterCrossClusterReplicationConfigArgs\n {\n ClusterRole = \"SECONDARY\",\n PrimaryCluster = new Gcp.Redis.Inputs.ClusterCrossClusterReplicationConfigPrimaryClusterArgs\n {\n Cluster = primaryCluster.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secondaryClusterRegionScp,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"mynetwork\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryClusterProducerSubnet, err := compute.NewSubnetwork(ctx, \"primary_cluster_producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"mysubnet-primary-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/29\"),\n\t\t\tRegion: pulumi.String(\"us-east1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryClusterRegionScp, err := networkconnectivity.NewServiceConnectionPolicy(ctx, \"primary_cluster_region_scp\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"mypolicy-primary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\n\t\t\tDescription: pulumi.String(\"Primary cluster 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\tprimaryClusterProducerSubnet.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// Primary cluster\n\t\tprimaryCluster, err := redis.NewCluster(ctx, \"primary_cluster\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-primary-cluster\"),\n\t\t\tRegion: pulumi.String(\"us-east1\"),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthorizationMode: pulumi.String(\"AUTH_MODE_DISABLED\"),\n\t\t\tTransitEncryptionMode: pulumi.String(\"TRANSIT_ENCRYPTION_MODE_DISABLED\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tRedisConfigs: pulumi.StringMap{\n\t\t\t\t\"maxmemory-policy\": pulumi.String(\"volatile-ttl\"),\n\t\t\t},\n\t\t\tNodeType: pulumi.String(\"REDIS_HIGHMEM_MEDIUM\"),\n\t\t\tPersistenceConfig: \u0026redis.ClusterPersistenceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"RDB\"),\n\t\t\t\tRdbConfig: \u0026redis.ClusterPersistenceConfigRdbConfigArgs{\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\tZoneDistributionConfig: \u0026redis.ClusterZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"MULTI_ZONE\"),\n\t\t\t},\n\t\t\tReplicaCount: pulumi.Int(1),\n\t\t\tMaintenancePolicy: \u0026redis.ClusterMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"MONDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(1),\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},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimaryClusterRegionScp,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryClusterProducerSubnet, err := compute.NewSubnetwork(ctx, \"secondary_cluster_producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"mysubnet-secondary-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.2.0/29\"),\n\t\t\tRegion: pulumi.String(\"europe-west1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryClusterRegionScp, err := networkconnectivity.NewServiceConnectionPolicy(ctx, \"secondary_cluster_region_scp\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"mypolicy-secondary-cluster\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\n\t\t\tDescription: pulumi.String(\"Secondary cluster 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\tsecondaryClusterProducerSubnet.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// Secondary cluster\n\t\t_, err = redis.NewCluster(ctx, \"secondary_cluster\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-secondary-cluster\"),\n\t\t\tRegion: pulumi.String(\"europe-west1\"),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthorizationMode: pulumi.String(\"AUTH_MODE_DISABLED\"),\n\t\t\tTransitEncryptionMode: pulumi.String(\"TRANSIT_ENCRYPTION_MODE_DISABLED\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tRedisConfigs: pulumi.StringMap{\n\t\t\t\t\"maxmemory-policy\": pulumi.String(\"volatile-ttl\"),\n\t\t\t},\n\t\t\tNodeType: pulumi.String(\"REDIS_HIGHMEM_MEDIUM\"),\n\t\t\tPersistenceConfig: \u0026redis.ClusterPersistenceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"RDB\"),\n\t\t\t\tRdbConfig: \u0026redis.ClusterPersistenceConfigRdbConfigArgs{\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\tZoneDistributionConfig: \u0026redis.ClusterZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"MULTI_ZONE\"),\n\t\t\t},\n\t\t\tReplicaCount: pulumi.Int(2),\n\t\t\tMaintenancePolicy: \u0026redis.ClusterMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"WEDNESDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(1),\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},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(true),\n\t\t\tCrossClusterReplicationConfig: \u0026redis.ClusterCrossClusterReplicationConfigArgs{\n\t\t\t\tClusterRole: pulumi.String(\"SECONDARY\"),\n\t\t\t\tPrimaryCluster: \u0026redis.ClusterCrossClusterReplicationConfigPrimaryClusterArgs{\n\t\t\t\t\tCluster: primaryCluster.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecondaryClusterRegionScp,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPscConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPersistenceConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPersistenceConfigRdbConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterZoneDistributionConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterCrossClusterReplicationConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterCrossClusterReplicationConfigPrimaryClusterArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"mynetwork\")\n .autoCreateSubnetworks(false)\n .build());\n\n var primaryClusterProducerSubnet = new Subnetwork(\"primaryClusterProducerSubnet\", SubnetworkArgs.builder()\n .name(\"mysubnet-primary-cluster\")\n .ipCidrRange(\"10.0.1.0/29\")\n .region(\"us-east1\")\n .network(producerNet.id())\n .build());\n\n var primaryClusterRegionScp = new ServiceConnectionPolicy(\"primaryClusterRegionScp\", ServiceConnectionPolicyArgs.builder()\n .name(\"mypolicy-primary-cluster\")\n .location(\"us-east1\")\n .serviceClass(\"gcp-memorystore-redis\")\n .description(\"Primary cluster service connection policy\")\n .network(producerNet.id())\n .pscConfig(ServiceConnectionPolicyPscConfigArgs.builder()\n .subnetworks(primaryClusterProducerSubnet.id())\n .build())\n .build());\n\n // Primary cluster\n var primaryCluster = new Cluster(\"primaryCluster\", ClusterArgs.builder()\n .name(\"my-primary-cluster\")\n .region(\"us-east1\")\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(producerNet.id())\n .build())\n .authorizationMode(\"AUTH_MODE_DISABLED\")\n .transitEncryptionMode(\"TRANSIT_ENCRYPTION_MODE_DISABLED\")\n .shardCount(3)\n .redisConfigs(Map.of(\"maxmemory-policy\", \"volatile-ttl\"))\n .nodeType(\"REDIS_HIGHMEM_MEDIUM\")\n .persistenceConfig(ClusterPersistenceConfigArgs.builder()\n .mode(\"RDB\")\n .rdbConfig(ClusterPersistenceConfigRdbConfigArgs.builder()\n .rdbSnapshotPeriod(\"ONE_HOUR\")\n .rdbSnapshotStartTime(\"2024-10-02T15:01:23Z\")\n .build())\n .build())\n .zoneDistributionConfig(ClusterZoneDistributionConfigArgs.builder()\n .mode(\"MULTI_ZONE\")\n .build())\n .replicaCount(1)\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"MONDAY\")\n .startTime(ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .deletionProtectionEnabled(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(primaryClusterRegionScp)\n .build());\n\n var secondaryClusterProducerSubnet = new Subnetwork(\"secondaryClusterProducerSubnet\", SubnetworkArgs.builder()\n .name(\"mysubnet-secondary-cluster\")\n .ipCidrRange(\"10.0.2.0/29\")\n .region(\"europe-west1\")\n .network(producerNet.id())\n .build());\n\n var secondaryClusterRegionScp = new ServiceConnectionPolicy(\"secondaryClusterRegionScp\", ServiceConnectionPolicyArgs.builder()\n .name(\"mypolicy-secondary-cluster\")\n .location(\"europe-west1\")\n .serviceClass(\"gcp-memorystore-redis\")\n .description(\"Secondary cluster service connection policy\")\n .network(producerNet.id())\n .pscConfig(ServiceConnectionPolicyPscConfigArgs.builder()\n .subnetworks(secondaryClusterProducerSubnet.id())\n .build())\n .build());\n\n // Secondary cluster\n var secondaryCluster = new Cluster(\"secondaryCluster\", ClusterArgs.builder()\n .name(\"my-secondary-cluster\")\n .region(\"europe-west1\")\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(producerNet.id())\n .build())\n .authorizationMode(\"AUTH_MODE_DISABLED\")\n .transitEncryptionMode(\"TRANSIT_ENCRYPTION_MODE_DISABLED\")\n .shardCount(3)\n .redisConfigs(Map.of(\"maxmemory-policy\", \"volatile-ttl\"))\n .nodeType(\"REDIS_HIGHMEM_MEDIUM\")\n .persistenceConfig(ClusterPersistenceConfigArgs.builder()\n .mode(\"RDB\")\n .rdbConfig(ClusterPersistenceConfigRdbConfigArgs.builder()\n .rdbSnapshotPeriod(\"ONE_HOUR\")\n .rdbSnapshotStartTime(\"2024-10-02T15:01:23Z\")\n .build())\n .build())\n .zoneDistributionConfig(ClusterZoneDistributionConfigArgs.builder()\n .mode(\"MULTI_ZONE\")\n .build())\n .replicaCount(2)\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"WEDNESDAY\")\n .startTime(ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .deletionProtectionEnabled(true)\n .crossClusterReplicationConfig(ClusterCrossClusterReplicationConfigArgs.builder()\n .clusterRole(\"SECONDARY\")\n .primaryCluster(ClusterCrossClusterReplicationConfigPrimaryClusterArgs.builder()\n .cluster(primaryCluster.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secondaryClusterRegionScp)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Primary cluster\n primaryCluster:\n type: gcp:redis:Cluster\n name: primary_cluster\n properties:\n name: my-primary-cluster\n region: us-east1\n pscConfigs:\n - network: ${producerNet.id}\n authorizationMode: AUTH_MODE_DISABLED\n transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED\n shardCount: 3\n redisConfigs:\n maxmemory-policy: volatile-ttl\n nodeType: REDIS_HIGHMEM_MEDIUM\n persistenceConfig:\n mode: RDB\n rdbConfig:\n rdbSnapshotPeriod: ONE_HOUR\n rdbSnapshotStartTime: 2024-10-02T15:01:23Z\n zoneDistributionConfig:\n mode: MULTI_ZONE\n replicaCount: 1\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: MONDAY\n startTime:\n hours: 1\n minutes: 0\n seconds: 0\n nanos: 0\n deletionProtectionEnabled: true\n options:\n dependsOn:\n - ${primaryClusterRegionScp}\n # Secondary cluster\n secondaryCluster:\n type: gcp:redis:Cluster\n name: secondary_cluster\n properties:\n name: my-secondary-cluster\n region: europe-west1\n pscConfigs:\n - network: ${producerNet.id}\n authorizationMode: AUTH_MODE_DISABLED\n transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED\n shardCount: 3\n redisConfigs:\n maxmemory-policy: volatile-ttl\n nodeType: REDIS_HIGHMEM_MEDIUM\n persistenceConfig:\n mode: RDB\n rdbConfig:\n rdbSnapshotPeriod: ONE_HOUR\n rdbSnapshotStartTime: 2024-10-02T15:01:23Z\n zoneDistributionConfig:\n mode: MULTI_ZONE\n replicaCount: 2\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: WEDNESDAY\n startTime:\n hours: 1\n minutes: 0\n seconds: 0\n nanos: 0\n deletionProtectionEnabled: true # Cross cluster replication config\n crossClusterReplicationConfig:\n clusterRole: SECONDARY\n primaryCluster:\n cluster: ${primaryCluster.id}\n options:\n dependsOn:\n - ${secondaryClusterRegionScp}\n primaryClusterRegionScp:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n name: primary_cluster_region_scp\n properties:\n name: mypolicy-primary-cluster\n location: us-east1\n serviceClass: gcp-memorystore-redis\n description: Primary cluster service connection policy\n network: ${producerNet.id}\n pscConfig:\n subnetworks:\n - ${primaryClusterProducerSubnet.id}\n primaryClusterProducerSubnet:\n type: gcp:compute:Subnetwork\n name: primary_cluster_producer_subnet\n properties:\n name: mysubnet-primary-cluster\n ipCidrRange: 10.0.1.0/29\n region: us-east1\n network: ${producerNet.id}\n secondaryClusterRegionScp:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n name: secondary_cluster_region_scp\n properties:\n name: mypolicy-secondary-cluster\n location: europe-west1\n serviceClass: gcp-memorystore-redis\n description: Secondary cluster service connection policy\n network: ${producerNet.id}\n pscConfig:\n subnetworks:\n - ${secondaryClusterProducerSubnet.id}\n secondaryClusterProducerSubnet:\n type: gcp:compute:Subnetwork\n name: secondary_cluster_producer_subnet\n properties:\n name: mysubnet-secondary-cluster\n ipCidrRange: 10.0.2.0/29\n region: europe-west1\n network: ${producerNet.id}\n producerNet:\n type: gcp:compute:Network\n name: producer_net\n properties:\n name: mynetwork\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Cluster Rdb\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: \"mynetwork\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"mysubnet\",\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: \"mypolicy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst cluster_rdb = new gcp.redis.Cluster(\"cluster-rdb\", {\n name: \"rdb-cluster\",\n shardCount: 3,\n pscConfigs: [{\n network: producerNet.id,\n }],\n region: \"us-central1\",\n replicaCount: 0,\n nodeType: \"REDIS_SHARED_CORE_NANO\",\n transitEncryptionMode: \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n authorizationMode: \"AUTH_MODE_DISABLED\",\n redisConfigs: {\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n deletionProtectionEnabled: true,\n zoneDistributionConfig: {\n mode: \"MULTI_ZONE\",\n },\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"MONDAY\",\n startTime: {\n hours: 1,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n persistenceConfig: {\n mode: \"RDB\",\n rdbConfig: {\n rdbSnapshotPeriod: \"ONE_HOUR\",\n rdbSnapshotStartTime: \"2024-10-02T15:01:23Z\",\n },\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=\"mynetwork\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"mysubnet\",\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=\"mypolicy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\ncluster_rdb = gcp.redis.Cluster(\"cluster-rdb\",\n name=\"rdb-cluster\",\n shard_count=3,\n psc_configs=[{\n \"network\": producer_net.id,\n }],\n region=\"us-central1\",\n replica_count=0,\n node_type=\"REDIS_SHARED_CORE_NANO\",\n transit_encryption_mode=\"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n authorization_mode=\"AUTH_MODE_DISABLED\",\n redis_configs={\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n deletion_protection_enabled=True,\n zone_distribution_config={\n \"mode\": \"MULTI_ZONE\",\n },\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"MONDAY\",\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\n },\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 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 = \"mynetwork\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"mysubnet\",\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 = \"mypolicy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore-redis\",\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 cluster_rdb = new Gcp.Redis.Cluster(\"cluster-rdb\", new()\n {\n Name = \"rdb-cluster\",\n ShardCount = 3,\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = producerNet.Id,\n },\n },\n Region = \"us-central1\",\n ReplicaCount = 0,\n NodeType = \"REDIS_SHARED_CORE_NANO\",\n TransitEncryptionMode = \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n AuthorizationMode = \"AUTH_MODE_DISABLED\",\n RedisConfigs = \n {\n { \"maxmemory-policy\", \"volatile-ttl\" },\n },\n DeletionProtectionEnabled = true,\n ZoneDistributionConfig = new Gcp.Redis.Inputs.ClusterZoneDistributionConfigArgs\n {\n Mode = \"MULTI_ZONE\",\n },\n MaintenancePolicy = new Gcp.Redis.Inputs.ClusterMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"MONDAY\",\n StartTime = new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n PersistenceConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigArgs\n {\n Mode = \"RDB\",\n RdbConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigRdbConfigArgs\n {\n RdbSnapshotPeriod = \"ONE_HOUR\",\n RdbSnapshotStartTime = \"2024-10-02T15:01:23Z\",\n },\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/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"mynetwork\"),\n\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(\"mysubnet\"),\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(\"mypolicy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\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\t_, err = redis.NewCluster(ctx, \"cluster-rdb\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"rdb-cluster\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tReplicaCount: pulumi.Int(0),\n\t\t\tNodeType: pulumi.String(\"REDIS_SHARED_CORE_NANO\"),\n\t\t\tTransitEncryptionMode: pulumi.String(\"TRANSIT_ENCRYPTION_MODE_DISABLED\"),\n\t\t\tAuthorizationMode: pulumi.String(\"AUTH_MODE_DISABLED\"),\n\t\t\tRedisConfigs: pulumi.StringMap{\n\t\t\t\t\"maxmemory-policy\": pulumi.String(\"volatile-ttl\"),\n\t\t\t},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(true),\n\t\t\tZoneDistributionConfig: \u0026redis.ClusterZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"MULTI_ZONE\"),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026redis.ClusterMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"MONDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(1),\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},\n\t\t\tPersistenceConfig: \u0026redis.ClusterPersistenceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"RDB\"),\n\t\t\t\tRdbConfig: \u0026redis.ClusterPersistenceConfigRdbConfigArgs{\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}, 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.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPscConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterZoneDistributionConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPersistenceConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPersistenceConfigRdbConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"mynetwork\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"mysubnet\")\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(\"mypolicy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore-redis\")\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 var cluster_rdb = new Cluster(\"cluster-rdb\", ClusterArgs.builder()\n .name(\"rdb-cluster\")\n .shardCount(3)\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(producerNet.id())\n .build())\n .region(\"us-central1\")\n .replicaCount(0)\n .nodeType(\"REDIS_SHARED_CORE_NANO\")\n .transitEncryptionMode(\"TRANSIT_ENCRYPTION_MODE_DISABLED\")\n .authorizationMode(\"AUTH_MODE_DISABLED\")\n .redisConfigs(Map.of(\"maxmemory-policy\", \"volatile-ttl\"))\n .deletionProtectionEnabled(true)\n .zoneDistributionConfig(ClusterZoneDistributionConfigArgs.builder()\n .mode(\"MULTI_ZONE\")\n .build())\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"MONDAY\")\n .startTime(ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .persistenceConfig(ClusterPersistenceConfigArgs.builder()\n .mode(\"RDB\")\n .rdbConfig(ClusterPersistenceConfigRdbConfigArgs.builder()\n .rdbSnapshotPeriod(\"ONE_HOUR\")\n .rdbSnapshotStartTime(\"2024-10-02T15:01:23Z\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-rdb:\n type: gcp:redis:Cluster\n properties:\n name: rdb-cluster\n shardCount: 3\n pscConfigs:\n - network: ${producerNet.id}\n region: us-central1\n replicaCount: 0\n nodeType: REDIS_SHARED_CORE_NANO\n transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED\n authorizationMode: AUTH_MODE_DISABLED\n redisConfigs:\n maxmemory-policy: volatile-ttl\n deletionProtectionEnabled: true\n zoneDistributionConfig:\n mode: MULTI_ZONE\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: MONDAY\n startTime:\n hours: 1\n minutes: 0\n seconds: 0\n nanos: 0\n persistenceConfig:\n mode: RDB\n rdbConfig:\n rdbSnapshotPeriod: ONE_HOUR\n rdbSnapshotStartTime: 2024-10-02T15:01:23Z\n options:\n dependsOn:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: mypolicy\n location: us-central1\n serviceClass: gcp-memorystore-redis\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: mysubnet\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: mynetwork\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Cluster 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: \"mynetwork\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"mysubnet\",\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: \"mypolicy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst cluster_aof = new gcp.redis.Cluster(\"cluster-aof\", {\n name: \"aof-cluster\",\n shardCount: 3,\n pscConfigs: [{\n network: producerNet.id,\n }],\n region: \"us-central1\",\n replicaCount: 0,\n nodeType: \"REDIS_SHARED_CORE_NANO\",\n transitEncryptionMode: \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n authorizationMode: \"AUTH_MODE_DISABLED\",\n redisConfigs: {\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n deletionProtectionEnabled: true,\n zoneDistributionConfig: {\n mode: \"MULTI_ZONE\",\n },\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"MONDAY\",\n startTime: {\n hours: 1,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n persistenceConfig: {\n mode: \"AOF\",\n aofConfig: {\n appendFsync: \"EVERYSEC\",\n },\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=\"mynetwork\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"mysubnet\",\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=\"mypolicy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\ncluster_aof = gcp.redis.Cluster(\"cluster-aof\",\n name=\"aof-cluster\",\n shard_count=3,\n psc_configs=[{\n \"network\": producer_net.id,\n }],\n region=\"us-central1\",\n replica_count=0,\n node_type=\"REDIS_SHARED_CORE_NANO\",\n transit_encryption_mode=\"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n authorization_mode=\"AUTH_MODE_DISABLED\",\n redis_configs={\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n deletion_protection_enabled=True,\n zone_distribution_config={\n \"mode\": \"MULTI_ZONE\",\n },\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"MONDAY\",\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\n },\n persistence_config={\n \"mode\": \"AOF\",\n \"aof_config\": {\n \"append_fsync\": \"EVERYSEC\",\n },\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 = \"mynetwork\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"mysubnet\",\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 = \"mypolicy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore-redis\",\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 cluster_aof = new Gcp.Redis.Cluster(\"cluster-aof\", new()\n {\n Name = \"aof-cluster\",\n ShardCount = 3,\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = producerNet.Id,\n },\n },\n Region = \"us-central1\",\n ReplicaCount = 0,\n NodeType = \"REDIS_SHARED_CORE_NANO\",\n TransitEncryptionMode = \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n AuthorizationMode = \"AUTH_MODE_DISABLED\",\n RedisConfigs = \n {\n { \"maxmemory-policy\", \"volatile-ttl\" },\n },\n DeletionProtectionEnabled = true,\n ZoneDistributionConfig = new Gcp.Redis.Inputs.ClusterZoneDistributionConfigArgs\n {\n Mode = \"MULTI_ZONE\",\n },\n MaintenancePolicy = new Gcp.Redis.Inputs.ClusterMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"MONDAY\",\n StartTime = new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n PersistenceConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigArgs\n {\n Mode = \"AOF\",\n AofConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigAofConfigArgs\n {\n AppendFsync = \"EVERYSEC\",\n },\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/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"mynetwork\"),\n\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(\"mysubnet\"),\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(\"mypolicy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\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\t_, err = redis.NewCluster(ctx, \"cluster-aof\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"aof-cluster\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tReplicaCount: pulumi.Int(0),\n\t\t\tNodeType: pulumi.String(\"REDIS_SHARED_CORE_NANO\"),\n\t\t\tTransitEncryptionMode: pulumi.String(\"TRANSIT_ENCRYPTION_MODE_DISABLED\"),\n\t\t\tAuthorizationMode: pulumi.String(\"AUTH_MODE_DISABLED\"),\n\t\t\tRedisConfigs: pulumi.StringMap{\n\t\t\t\t\"maxmemory-policy\": pulumi.String(\"volatile-ttl\"),\n\t\t\t},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(true),\n\t\t\tZoneDistributionConfig: \u0026redis.ClusterZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"MULTI_ZONE\"),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026redis.ClusterMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"MONDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(1),\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},\n\t\t\tPersistenceConfig: \u0026redis.ClusterPersistenceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"AOF\"),\n\t\t\t\tAofConfig: \u0026redis.ClusterPersistenceConfigAofConfigArgs{\n\t\t\t\t\tAppendFsync: pulumi.String(\"EVERYSEC\"),\n\t\t\t\t},\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.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPscConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterZoneDistributionConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPersistenceConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPersistenceConfigAofConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"mynetwork\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"mysubnet\")\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(\"mypolicy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore-redis\")\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 var cluster_aof = new Cluster(\"cluster-aof\", ClusterArgs.builder()\n .name(\"aof-cluster\")\n .shardCount(3)\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(producerNet.id())\n .build())\n .region(\"us-central1\")\n .replicaCount(0)\n .nodeType(\"REDIS_SHARED_CORE_NANO\")\n .transitEncryptionMode(\"TRANSIT_ENCRYPTION_MODE_DISABLED\")\n .authorizationMode(\"AUTH_MODE_DISABLED\")\n .redisConfigs(Map.of(\"maxmemory-policy\", \"volatile-ttl\"))\n .deletionProtectionEnabled(true)\n .zoneDistributionConfig(ClusterZoneDistributionConfigArgs.builder()\n .mode(\"MULTI_ZONE\")\n .build())\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"MONDAY\")\n .startTime(ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .persistenceConfig(ClusterPersistenceConfigArgs.builder()\n .mode(\"AOF\")\n .aofConfig(ClusterPersistenceConfigAofConfigArgs.builder()\n .appendFsync(\"EVERYSEC\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-aof:\n type: gcp:redis:Cluster\n properties:\n name: aof-cluster\n shardCount: 3\n pscConfigs:\n - network: ${producerNet.id}\n region: us-central1\n replicaCount: 0\n nodeType: REDIS_SHARED_CORE_NANO\n transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED\n authorizationMode: AUTH_MODE_DISABLED\n redisConfigs:\n maxmemory-policy: volatile-ttl\n deletionProtectionEnabled: true\n zoneDistributionConfig:\n mode: MULTI_ZONE\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: MONDAY\n startTime:\n hours: 1\n minutes: 0\n seconds: 0\n nanos: 0\n persistenceConfig:\n mode: AOF\n aofConfig:\n appendFsync: EVERYSEC\n options:\n dependsOn:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: mypolicy\n location: us-central1\n serviceClass: gcp-memorystore-redis\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: mysubnet\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: mynetwork\n autoCreateSubnetworks: false\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/{{region}}/clusters/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{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:redis/cluster:Cluster default projects/{{project}}/locations/{{region}}/clusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/cluster:Cluster default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/cluster:Cluster default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/cluster:Cluster default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Redis Cluster Ha\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: \"mynetwork\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"mysubnet\",\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: \"mypolicy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst cluster_ha = new gcp.redis.Cluster(\"cluster-ha\", {\n name: \"ha-cluster\",\n shardCount: 3,\n pscConfigs: [{\n network: producerNet.id,\n }],\n region: \"us-central1\",\n replicaCount: 1,\n nodeType: \"REDIS_SHARED_CORE_NANO\",\n transitEncryptionMode: \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n authorizationMode: \"AUTH_MODE_DISABLED\",\n redisConfigs: {\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n deletionProtectionEnabled: true,\n zoneDistributionConfig: {\n mode: \"MULTI_ZONE\",\n },\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"MONDAY\",\n startTime: {\n hours: 1,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n }],\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=\"mynetwork\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"mysubnet\",\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=\"mypolicy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\ncluster_ha = gcp.redis.Cluster(\"cluster-ha\",\n name=\"ha-cluster\",\n shard_count=3,\n psc_configs=[{\n \"network\": producer_net.id,\n }],\n region=\"us-central1\",\n replica_count=1,\n node_type=\"REDIS_SHARED_CORE_NANO\",\n transit_encryption_mode=\"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n authorization_mode=\"AUTH_MODE_DISABLED\",\n redis_configs={\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n deletion_protection_enabled=True,\n zone_distribution_config={\n \"mode\": \"MULTI_ZONE\",\n },\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"MONDAY\",\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\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 = \"mynetwork\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"mysubnet\",\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 = \"mypolicy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore-redis\",\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 cluster_ha = new Gcp.Redis.Cluster(\"cluster-ha\", new()\n {\n Name = \"ha-cluster\",\n ShardCount = 3,\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = producerNet.Id,\n },\n },\n Region = \"us-central1\",\n ReplicaCount = 1,\n NodeType = \"REDIS_SHARED_CORE_NANO\",\n TransitEncryptionMode = \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n AuthorizationMode = \"AUTH_MODE_DISABLED\",\n RedisConfigs = \n {\n { \"maxmemory-policy\", \"volatile-ttl\" },\n },\n DeletionProtectionEnabled = true,\n ZoneDistributionConfig = new Gcp.Redis.Inputs.ClusterZoneDistributionConfigArgs\n {\n Mode = \"MULTI_ZONE\",\n },\n MaintenancePolicy = new Gcp.Redis.Inputs.ClusterMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"MONDAY\",\n StartTime = new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\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/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"mynetwork\"),\n\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(\"mysubnet\"),\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_default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, \"default\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"mypolicy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\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\t_, err = redis.NewCluster(ctx, \"cluster-ha\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"ha-cluster\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tReplicaCount: pulumi.Int(1),\n\t\t\tNodeType: pulumi.String(\"REDIS_SHARED_CORE_NANO\"),\n\t\t\tTransitEncryptionMode: pulumi.String(\"TRANSIT_ENCRYPTION_MODE_DISABLED\"),\n\t\t\tAuthorizationMode: pulumi.String(\"AUTH_MODE_DISABLED\"),\n\t\t\tRedisConfigs: pulumi.StringMap{\n\t\t\t\t\"maxmemory-policy\": pulumi.String(\"volatile-ttl\"),\n\t\t\t},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(true),\n\t\t\tZoneDistributionConfig: \u0026redis.ClusterZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"MULTI_ZONE\"),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026redis.ClusterMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"MONDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(1),\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},\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.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPscConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterZoneDistributionConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"mynetwork\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"mysubnet\")\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(\"mypolicy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore-redis\")\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 var cluster_ha = new Cluster(\"cluster-ha\", ClusterArgs.builder()\n .name(\"ha-cluster\")\n .shardCount(3)\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(producerNet.id())\n .build())\n .region(\"us-central1\")\n .replicaCount(1)\n .nodeType(\"REDIS_SHARED_CORE_NANO\")\n .transitEncryptionMode(\"TRANSIT_ENCRYPTION_MODE_DISABLED\")\n .authorizationMode(\"AUTH_MODE_DISABLED\")\n .redisConfigs(Map.of(\"maxmemory-policy\", \"volatile-ttl\"))\n .deletionProtectionEnabled(true)\n .zoneDistributionConfig(ClusterZoneDistributionConfigArgs.builder()\n .mode(\"MULTI_ZONE\")\n .build())\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"MONDAY\")\n .startTime(ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-ha:\n type: gcp:redis:Cluster\n properties:\n name: ha-cluster\n shardCount: 3\n pscConfigs:\n - network: ${producerNet.id}\n region: us-central1\n replicaCount: 1\n nodeType: REDIS_SHARED_CORE_NANO\n transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED\n authorizationMode: AUTH_MODE_DISABLED\n redisConfigs:\n maxmemory-policy: volatile-ttl\n deletionProtectionEnabled: true\n zoneDistributionConfig:\n mode: MULTI_ZONE\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: MONDAY\n startTime:\n hours: 1\n minutes: 0\n seconds: 0\n nanos: 0\n options:\n dependsOn:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: mypolicy\n location: us-central1\n serviceClass: gcp-memorystore-redis\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: mysubnet\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: mynetwork\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Cluster Ha Single Zone\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: \"mynetwork\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"mysubnet\",\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: \"mypolicy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst cluster_ha_single_zone = new gcp.redis.Cluster(\"cluster-ha-single-zone\", {\n name: \"ha-cluster-single-zone\",\n shardCount: 3,\n pscConfigs: [{\n network: producerNet.id,\n }],\n region: \"us-central1\",\n zoneDistributionConfig: {\n mode: \"SINGLE_ZONE\",\n zone: \"us-central1-f\",\n },\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"MONDAY\",\n startTime: {\n hours: 1,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n deletionProtectionEnabled: true,\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=\"mynetwork\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"mysubnet\",\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=\"mypolicy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\ncluster_ha_single_zone = gcp.redis.Cluster(\"cluster-ha-single-zone\",\n name=\"ha-cluster-single-zone\",\n shard_count=3,\n psc_configs=[{\n \"network\": producer_net.id,\n }],\n region=\"us-central1\",\n zone_distribution_config={\n \"mode\": \"SINGLE_ZONE\",\n \"zone\": \"us-central1-f\",\n },\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"MONDAY\",\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\n },\n deletion_protection_enabled=True,\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 = \"mynetwork\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"mysubnet\",\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 = \"mypolicy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore-redis\",\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 cluster_ha_single_zone = new Gcp.Redis.Cluster(\"cluster-ha-single-zone\", new()\n {\n Name = \"ha-cluster-single-zone\",\n ShardCount = 3,\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = producerNet.Id,\n },\n },\n Region = \"us-central1\",\n ZoneDistributionConfig = new Gcp.Redis.Inputs.ClusterZoneDistributionConfigArgs\n {\n Mode = \"SINGLE_ZONE\",\n Zone = \"us-central1-f\",\n },\n MaintenancePolicy = new Gcp.Redis.Inputs.ClusterMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"MONDAY\",\n StartTime = new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n DeletionProtectionEnabled = true,\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/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"mynetwork\"),\n\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(\"mysubnet\"),\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_default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, \"default\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"mypolicy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\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\t_, err = redis.NewCluster(ctx, \"cluster-ha-single-zone\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"ha-cluster-single-zone\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tZoneDistributionConfig: \u0026redis.ClusterZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"SINGLE_ZONE\"),\n\t\t\t\tZone: pulumi.String(\"us-central1-f\"),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026redis.ClusterMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"MONDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(1),\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},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(true),\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.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPscConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterZoneDistributionConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"mynetwork\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"mysubnet\")\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(\"mypolicy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore-redis\")\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 var cluster_ha_single_zone = new Cluster(\"cluster-ha-single-zone\", ClusterArgs.builder()\n .name(\"ha-cluster-single-zone\")\n .shardCount(3)\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(producerNet.id())\n .build())\n .region(\"us-central1\")\n .zoneDistributionConfig(ClusterZoneDistributionConfigArgs.builder()\n .mode(\"SINGLE_ZONE\")\n .zone(\"us-central1-f\")\n .build())\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"MONDAY\")\n .startTime(ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .deletionProtectionEnabled(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-ha-single-zone:\n type: gcp:redis:Cluster\n properties:\n name: ha-cluster-single-zone\n shardCount: 3\n pscConfigs:\n - network: ${producerNet.id}\n region: us-central1\n zoneDistributionConfig:\n mode: SINGLE_ZONE\n zone: us-central1-f\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: MONDAY\n startTime:\n hours: 1\n minutes: 0\n seconds: 0\n nanos: 0\n deletionProtectionEnabled: true\n options:\n dependsOn:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: mypolicy\n location: us-central1\n serviceClass: gcp-memorystore-redis\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: mysubnet\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: mynetwork\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Cluster Secondary\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: \"mynetwork\",\n autoCreateSubnetworks: false,\n});\nconst primaryClusterProducerSubnet = new gcp.compute.Subnetwork(\"primary_cluster_producer_subnet\", {\n name: \"mysubnet-primary-cluster\",\n ipCidrRange: \"10.0.1.0/29\",\n region: \"us-east1\",\n network: producerNet.id,\n});\nconst primaryClusterRegionScp = new gcp.networkconnectivity.ServiceConnectionPolicy(\"primary_cluster_region_scp\", {\n name: \"mypolicy-primary-cluster\",\n location: \"us-east1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"Primary cluster service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [primaryClusterProducerSubnet.id],\n },\n});\n// Primary cluster\nconst primaryCluster = new gcp.redis.Cluster(\"primary_cluster\", {\n name: \"my-primary-cluster\",\n region: \"us-east1\",\n pscConfigs: [{\n network: producerNet.id,\n }],\n authorizationMode: \"AUTH_MODE_DISABLED\",\n transitEncryptionMode: \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n shardCount: 3,\n redisConfigs: {\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n nodeType: \"REDIS_HIGHMEM_MEDIUM\",\n persistenceConfig: {\n mode: \"RDB\",\n rdbConfig: {\n rdbSnapshotPeriod: \"ONE_HOUR\",\n rdbSnapshotStartTime: \"2024-10-02T15:01:23Z\",\n },\n },\n zoneDistributionConfig: {\n mode: \"MULTI_ZONE\",\n },\n replicaCount: 1,\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"MONDAY\",\n startTime: {\n hours: 1,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n deletionProtectionEnabled: true,\n}, {\n dependsOn: [primaryClusterRegionScp],\n});\nconst secondaryClusterProducerSubnet = new gcp.compute.Subnetwork(\"secondary_cluster_producer_subnet\", {\n name: \"mysubnet-secondary-cluster\",\n ipCidrRange: \"10.0.2.0/29\",\n region: \"europe-west1\",\n network: producerNet.id,\n});\nconst secondaryClusterRegionScp = new gcp.networkconnectivity.ServiceConnectionPolicy(\"secondary_cluster_region_scp\", {\n name: \"mypolicy-secondary-cluster\",\n location: \"europe-west1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"Secondary cluster service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [secondaryClusterProducerSubnet.id],\n },\n});\n// Secondary cluster\nconst secondaryCluster = new gcp.redis.Cluster(\"secondary_cluster\", {\n name: \"my-secondary-cluster\",\n region: \"europe-west1\",\n pscConfigs: [{\n network: producerNet.id,\n }],\n authorizationMode: \"AUTH_MODE_DISABLED\",\n transitEncryptionMode: \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n shardCount: 3,\n redisConfigs: {\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n nodeType: \"REDIS_HIGHMEM_MEDIUM\",\n persistenceConfig: {\n mode: \"RDB\",\n rdbConfig: {\n rdbSnapshotPeriod: \"ONE_HOUR\",\n rdbSnapshotStartTime: \"2024-10-02T15:01:23Z\",\n },\n },\n zoneDistributionConfig: {\n mode: \"MULTI_ZONE\",\n },\n replicaCount: 2,\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"WEDNESDAY\",\n startTime: {\n hours: 1,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n deletionProtectionEnabled: true,\n crossClusterReplicationConfig: {\n clusterRole: \"SECONDARY\",\n primaryCluster: {\n cluster: primaryCluster.id,\n },\n },\n}, {\n dependsOn: [secondaryClusterRegionScp],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproducer_net = gcp.compute.Network(\"producer_net\",\n name=\"mynetwork\",\n auto_create_subnetworks=False)\nprimary_cluster_producer_subnet = gcp.compute.Subnetwork(\"primary_cluster_producer_subnet\",\n name=\"mysubnet-primary-cluster\",\n ip_cidr_range=\"10.0.1.0/29\",\n region=\"us-east1\",\n network=producer_net.id)\nprimary_cluster_region_scp = gcp.networkconnectivity.ServiceConnectionPolicy(\"primary_cluster_region_scp\",\n name=\"mypolicy-primary-cluster\",\n location=\"us-east1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"Primary cluster service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [primary_cluster_producer_subnet.id],\n })\n# Primary cluster\nprimary_cluster = gcp.redis.Cluster(\"primary_cluster\",\n name=\"my-primary-cluster\",\n region=\"us-east1\",\n psc_configs=[{\n \"network\": producer_net.id,\n }],\n authorization_mode=\"AUTH_MODE_DISABLED\",\n transit_encryption_mode=\"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n shard_count=3,\n redis_configs={\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n node_type=\"REDIS_HIGHMEM_MEDIUM\",\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 zone_distribution_config={\n \"mode\": \"MULTI_ZONE\",\n },\n replica_count=1,\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"MONDAY\",\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\n },\n deletion_protection_enabled=True,\n opts = pulumi.ResourceOptions(depends_on=[primary_cluster_region_scp]))\nsecondary_cluster_producer_subnet = gcp.compute.Subnetwork(\"secondary_cluster_producer_subnet\",\n name=\"mysubnet-secondary-cluster\",\n ip_cidr_range=\"10.0.2.0/29\",\n region=\"europe-west1\",\n network=producer_net.id)\nsecondary_cluster_region_scp = gcp.networkconnectivity.ServiceConnectionPolicy(\"secondary_cluster_region_scp\",\n name=\"mypolicy-secondary-cluster\",\n location=\"europe-west1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"Secondary cluster service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [secondary_cluster_producer_subnet.id],\n })\n# Secondary cluster\nsecondary_cluster = gcp.redis.Cluster(\"secondary_cluster\",\n name=\"my-secondary-cluster\",\n region=\"europe-west1\",\n psc_configs=[{\n \"network\": producer_net.id,\n }],\n authorization_mode=\"AUTH_MODE_DISABLED\",\n transit_encryption_mode=\"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n shard_count=3,\n redis_configs={\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n node_type=\"REDIS_HIGHMEM_MEDIUM\",\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 zone_distribution_config={\n \"mode\": \"MULTI_ZONE\",\n },\n replica_count=2,\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"WEDNESDAY\",\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\n },\n deletion_protection_enabled=True,\n cross_cluster_replication_config={\n \"cluster_role\": \"SECONDARY\",\n \"primary_cluster\": {\n \"cluster\": primary_cluster.id,\n },\n },\n opts = pulumi.ResourceOptions(depends_on=[secondary_cluster_region_scp]))\n```\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 = \"mynetwork\",\n AutoCreateSubnetworks = false,\n });\n\n var primaryClusterProducerSubnet = new Gcp.Compute.Subnetwork(\"primary_cluster_producer_subnet\", new()\n {\n Name = \"mysubnet-primary-cluster\",\n IpCidrRange = \"10.0.1.0/29\",\n Region = \"us-east1\",\n Network = producerNet.Id,\n });\n\n var primaryClusterRegionScp = new Gcp.NetworkConnectivity.ServiceConnectionPolicy(\"primary_cluster_region_scp\", new()\n {\n Name = \"mypolicy-primary-cluster\",\n Location = \"us-east1\",\n ServiceClass = \"gcp-memorystore-redis\",\n Description = \"Primary cluster service connection policy\",\n Network = producerNet.Id,\n PscConfig = new Gcp.NetworkConnectivity.Inputs.ServiceConnectionPolicyPscConfigArgs\n {\n Subnetworks = new[]\n {\n primaryClusterProducerSubnet.Id,\n },\n },\n });\n\n // Primary cluster\n var primaryCluster = new Gcp.Redis.Cluster(\"primary_cluster\", new()\n {\n Name = \"my-primary-cluster\",\n Region = \"us-east1\",\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = producerNet.Id,\n },\n },\n AuthorizationMode = \"AUTH_MODE_DISABLED\",\n TransitEncryptionMode = \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n ShardCount = 3,\n RedisConfigs = \n {\n { \"maxmemory-policy\", \"volatile-ttl\" },\n },\n NodeType = \"REDIS_HIGHMEM_MEDIUM\",\n PersistenceConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigArgs\n {\n Mode = \"RDB\",\n RdbConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigRdbConfigArgs\n {\n RdbSnapshotPeriod = \"ONE_HOUR\",\n RdbSnapshotStartTime = \"2024-10-02T15:01:23Z\",\n },\n },\n ZoneDistributionConfig = new Gcp.Redis.Inputs.ClusterZoneDistributionConfigArgs\n {\n Mode = \"MULTI_ZONE\",\n },\n ReplicaCount = 1,\n MaintenancePolicy = new Gcp.Redis.Inputs.ClusterMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"MONDAY\",\n StartTime = new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n DeletionProtectionEnabled = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n primaryClusterRegionScp,\n },\n });\n\n var secondaryClusterProducerSubnet = new Gcp.Compute.Subnetwork(\"secondary_cluster_producer_subnet\", new()\n {\n Name = \"mysubnet-secondary-cluster\",\n IpCidrRange = \"10.0.2.0/29\",\n Region = \"europe-west1\",\n Network = producerNet.Id,\n });\n\n var secondaryClusterRegionScp = new Gcp.NetworkConnectivity.ServiceConnectionPolicy(\"secondary_cluster_region_scp\", new()\n {\n Name = \"mypolicy-secondary-cluster\",\n Location = \"europe-west1\",\n ServiceClass = \"gcp-memorystore-redis\",\n Description = \"Secondary cluster service connection policy\",\n Network = producerNet.Id,\n PscConfig = new Gcp.NetworkConnectivity.Inputs.ServiceConnectionPolicyPscConfigArgs\n {\n Subnetworks = new[]\n {\n secondaryClusterProducerSubnet.Id,\n },\n },\n });\n\n // Secondary cluster\n var secondaryCluster = new Gcp.Redis.Cluster(\"secondary_cluster\", new()\n {\n Name = \"my-secondary-cluster\",\n Region = \"europe-west1\",\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = producerNet.Id,\n },\n },\n AuthorizationMode = \"AUTH_MODE_DISABLED\",\n TransitEncryptionMode = \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n ShardCount = 3,\n RedisConfigs = \n {\n { \"maxmemory-policy\", \"volatile-ttl\" },\n },\n NodeType = \"REDIS_HIGHMEM_MEDIUM\",\n PersistenceConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigArgs\n {\n Mode = \"RDB\",\n RdbConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigRdbConfigArgs\n {\n RdbSnapshotPeriod = \"ONE_HOUR\",\n RdbSnapshotStartTime = \"2024-10-02T15:01:23Z\",\n },\n },\n ZoneDistributionConfig = new Gcp.Redis.Inputs.ClusterZoneDistributionConfigArgs\n {\n Mode = \"MULTI_ZONE\",\n },\n ReplicaCount = 2,\n MaintenancePolicy = new Gcp.Redis.Inputs.ClusterMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"WEDNESDAY\",\n StartTime = new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n DeletionProtectionEnabled = true,\n CrossClusterReplicationConfig = new Gcp.Redis.Inputs.ClusterCrossClusterReplicationConfigArgs\n {\n ClusterRole = \"SECONDARY\",\n PrimaryCluster = new Gcp.Redis.Inputs.ClusterCrossClusterReplicationConfigPrimaryClusterArgs\n {\n Cluster = primaryCluster.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n secondaryClusterRegionScp,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"mynetwork\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryClusterProducerSubnet, err := compute.NewSubnetwork(ctx, \"primary_cluster_producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"mysubnet-primary-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/29\"),\n\t\t\tRegion: pulumi.String(\"us-east1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprimaryClusterRegionScp, err := networkconnectivity.NewServiceConnectionPolicy(ctx, \"primary_cluster_region_scp\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"mypolicy-primary-cluster\"),\n\t\t\tLocation: pulumi.String(\"us-east1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\n\t\t\tDescription: pulumi.String(\"Primary cluster 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\tprimaryClusterProducerSubnet.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// Primary cluster\n\t\tprimaryCluster, err := redis.NewCluster(ctx, \"primary_cluster\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-primary-cluster\"),\n\t\t\tRegion: pulumi.String(\"us-east1\"),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthorizationMode: pulumi.String(\"AUTH_MODE_DISABLED\"),\n\t\t\tTransitEncryptionMode: pulumi.String(\"TRANSIT_ENCRYPTION_MODE_DISABLED\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tRedisConfigs: pulumi.StringMap{\n\t\t\t\t\"maxmemory-policy\": pulumi.String(\"volatile-ttl\"),\n\t\t\t},\n\t\t\tNodeType: pulumi.String(\"REDIS_HIGHMEM_MEDIUM\"),\n\t\t\tPersistenceConfig: \u0026redis.ClusterPersistenceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"RDB\"),\n\t\t\t\tRdbConfig: \u0026redis.ClusterPersistenceConfigRdbConfigArgs{\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\tZoneDistributionConfig: \u0026redis.ClusterZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"MULTI_ZONE\"),\n\t\t\t},\n\t\t\tReplicaCount: pulumi.Int(1),\n\t\t\tMaintenancePolicy: \u0026redis.ClusterMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"MONDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(1),\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},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprimaryClusterRegionScp,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryClusterProducerSubnet, err := compute.NewSubnetwork(ctx, \"secondary_cluster_producer_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"mysubnet-secondary-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.2.0/29\"),\n\t\t\tRegion: pulumi.String(\"europe-west1\"),\n\t\t\tNetwork: producerNet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsecondaryClusterRegionScp, err := networkconnectivity.NewServiceConnectionPolicy(ctx, \"secondary_cluster_region_scp\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"mypolicy-secondary-cluster\"),\n\t\t\tLocation: pulumi.String(\"europe-west1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\n\t\t\tDescription: pulumi.String(\"Secondary cluster 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\tsecondaryClusterProducerSubnet.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// Secondary cluster\n\t\t_, err = redis.NewCluster(ctx, \"secondary_cluster\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"my-secondary-cluster\"),\n\t\t\tRegion: pulumi.String(\"europe-west1\"),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAuthorizationMode: pulumi.String(\"AUTH_MODE_DISABLED\"),\n\t\t\tTransitEncryptionMode: pulumi.String(\"TRANSIT_ENCRYPTION_MODE_DISABLED\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tRedisConfigs: pulumi.StringMap{\n\t\t\t\t\"maxmemory-policy\": pulumi.String(\"volatile-ttl\"),\n\t\t\t},\n\t\t\tNodeType: pulumi.String(\"REDIS_HIGHMEM_MEDIUM\"),\n\t\t\tPersistenceConfig: \u0026redis.ClusterPersistenceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"RDB\"),\n\t\t\t\tRdbConfig: \u0026redis.ClusterPersistenceConfigRdbConfigArgs{\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\tZoneDistributionConfig: \u0026redis.ClusterZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"MULTI_ZONE\"),\n\t\t\t},\n\t\t\tReplicaCount: pulumi.Int(2),\n\t\t\tMaintenancePolicy: \u0026redis.ClusterMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"WEDNESDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(1),\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},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(true),\n\t\t\tCrossClusterReplicationConfig: \u0026redis.ClusterCrossClusterReplicationConfigArgs{\n\t\t\t\tClusterRole: pulumi.String(\"SECONDARY\"),\n\t\t\t\tPrimaryCluster: \u0026redis.ClusterCrossClusterReplicationConfigPrimaryClusterArgs{\n\t\t\t\t\tCluster: primaryCluster.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tsecondaryClusterRegionScp,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPscConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPersistenceConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPersistenceConfigRdbConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterZoneDistributionConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterCrossClusterReplicationConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterCrossClusterReplicationConfigPrimaryClusterArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"mynetwork\")\n .autoCreateSubnetworks(false)\n .build());\n\n var primaryClusterProducerSubnet = new Subnetwork(\"primaryClusterProducerSubnet\", SubnetworkArgs.builder()\n .name(\"mysubnet-primary-cluster\")\n .ipCidrRange(\"10.0.1.0/29\")\n .region(\"us-east1\")\n .network(producerNet.id())\n .build());\n\n var primaryClusterRegionScp = new ServiceConnectionPolicy(\"primaryClusterRegionScp\", ServiceConnectionPolicyArgs.builder()\n .name(\"mypolicy-primary-cluster\")\n .location(\"us-east1\")\n .serviceClass(\"gcp-memorystore-redis\")\n .description(\"Primary cluster service connection policy\")\n .network(producerNet.id())\n .pscConfig(ServiceConnectionPolicyPscConfigArgs.builder()\n .subnetworks(primaryClusterProducerSubnet.id())\n .build())\n .build());\n\n // Primary cluster\n var primaryCluster = new Cluster(\"primaryCluster\", ClusterArgs.builder()\n .name(\"my-primary-cluster\")\n .region(\"us-east1\")\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(producerNet.id())\n .build())\n .authorizationMode(\"AUTH_MODE_DISABLED\")\n .transitEncryptionMode(\"TRANSIT_ENCRYPTION_MODE_DISABLED\")\n .shardCount(3)\n .redisConfigs(Map.of(\"maxmemory-policy\", \"volatile-ttl\"))\n .nodeType(\"REDIS_HIGHMEM_MEDIUM\")\n .persistenceConfig(ClusterPersistenceConfigArgs.builder()\n .mode(\"RDB\")\n .rdbConfig(ClusterPersistenceConfigRdbConfigArgs.builder()\n .rdbSnapshotPeriod(\"ONE_HOUR\")\n .rdbSnapshotStartTime(\"2024-10-02T15:01:23Z\")\n .build())\n .build())\n .zoneDistributionConfig(ClusterZoneDistributionConfigArgs.builder()\n .mode(\"MULTI_ZONE\")\n .build())\n .replicaCount(1)\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"MONDAY\")\n .startTime(ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .deletionProtectionEnabled(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(primaryClusterRegionScp)\n .build());\n\n var secondaryClusterProducerSubnet = new Subnetwork(\"secondaryClusterProducerSubnet\", SubnetworkArgs.builder()\n .name(\"mysubnet-secondary-cluster\")\n .ipCidrRange(\"10.0.2.0/29\")\n .region(\"europe-west1\")\n .network(producerNet.id())\n .build());\n\n var secondaryClusterRegionScp = new ServiceConnectionPolicy(\"secondaryClusterRegionScp\", ServiceConnectionPolicyArgs.builder()\n .name(\"mypolicy-secondary-cluster\")\n .location(\"europe-west1\")\n .serviceClass(\"gcp-memorystore-redis\")\n .description(\"Secondary cluster service connection policy\")\n .network(producerNet.id())\n .pscConfig(ServiceConnectionPolicyPscConfigArgs.builder()\n .subnetworks(secondaryClusterProducerSubnet.id())\n .build())\n .build());\n\n // Secondary cluster\n var secondaryCluster = new Cluster(\"secondaryCluster\", ClusterArgs.builder()\n .name(\"my-secondary-cluster\")\n .region(\"europe-west1\")\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(producerNet.id())\n .build())\n .authorizationMode(\"AUTH_MODE_DISABLED\")\n .transitEncryptionMode(\"TRANSIT_ENCRYPTION_MODE_DISABLED\")\n .shardCount(3)\n .redisConfigs(Map.of(\"maxmemory-policy\", \"volatile-ttl\"))\n .nodeType(\"REDIS_HIGHMEM_MEDIUM\")\n .persistenceConfig(ClusterPersistenceConfigArgs.builder()\n .mode(\"RDB\")\n .rdbConfig(ClusterPersistenceConfigRdbConfigArgs.builder()\n .rdbSnapshotPeriod(\"ONE_HOUR\")\n .rdbSnapshotStartTime(\"2024-10-02T15:01:23Z\")\n .build())\n .build())\n .zoneDistributionConfig(ClusterZoneDistributionConfigArgs.builder()\n .mode(\"MULTI_ZONE\")\n .build())\n .replicaCount(2)\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"WEDNESDAY\")\n .startTime(ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .deletionProtectionEnabled(true)\n .crossClusterReplicationConfig(ClusterCrossClusterReplicationConfigArgs.builder()\n .clusterRole(\"SECONDARY\")\n .primaryCluster(ClusterCrossClusterReplicationConfigPrimaryClusterArgs.builder()\n .cluster(primaryCluster.id())\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(secondaryClusterRegionScp)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Primary cluster\n primaryCluster:\n type: gcp:redis:Cluster\n name: primary_cluster\n properties:\n name: my-primary-cluster\n region: us-east1\n pscConfigs:\n - network: ${producerNet.id}\n authorizationMode: AUTH_MODE_DISABLED\n transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED\n shardCount: 3\n redisConfigs:\n maxmemory-policy: volatile-ttl\n nodeType: REDIS_HIGHMEM_MEDIUM\n persistenceConfig:\n mode: RDB\n rdbConfig:\n rdbSnapshotPeriod: ONE_HOUR\n rdbSnapshotStartTime: 2024-10-02T15:01:23Z\n zoneDistributionConfig:\n mode: MULTI_ZONE\n replicaCount: 1\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: MONDAY\n startTime:\n hours: 1\n minutes: 0\n seconds: 0\n nanos: 0\n deletionProtectionEnabled: true\n options:\n dependsOn:\n - ${primaryClusterRegionScp}\n # Secondary cluster\n secondaryCluster:\n type: gcp:redis:Cluster\n name: secondary_cluster\n properties:\n name: my-secondary-cluster\n region: europe-west1\n pscConfigs:\n - network: ${producerNet.id}\n authorizationMode: AUTH_MODE_DISABLED\n transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED\n shardCount: 3\n redisConfigs:\n maxmemory-policy: volatile-ttl\n nodeType: REDIS_HIGHMEM_MEDIUM\n persistenceConfig:\n mode: RDB\n rdbConfig:\n rdbSnapshotPeriod: ONE_HOUR\n rdbSnapshotStartTime: 2024-10-02T15:01:23Z\n zoneDistributionConfig:\n mode: MULTI_ZONE\n replicaCount: 2\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: WEDNESDAY\n startTime:\n hours: 1\n minutes: 0\n seconds: 0\n nanos: 0\n deletionProtectionEnabled: true # Cross cluster replication config\n crossClusterReplicationConfig:\n clusterRole: SECONDARY\n primaryCluster:\n cluster: ${primaryCluster.id}\n options:\n dependsOn:\n - ${secondaryClusterRegionScp}\n primaryClusterRegionScp:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n name: primary_cluster_region_scp\n properties:\n name: mypolicy-primary-cluster\n location: us-east1\n serviceClass: gcp-memorystore-redis\n description: Primary cluster service connection policy\n network: ${producerNet.id}\n pscConfig:\n subnetworks:\n - ${primaryClusterProducerSubnet.id}\n primaryClusterProducerSubnet:\n type: gcp:compute:Subnetwork\n name: primary_cluster_producer_subnet\n properties:\n name: mysubnet-primary-cluster\n ipCidrRange: 10.0.1.0/29\n region: us-east1\n network: ${producerNet.id}\n secondaryClusterRegionScp:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n name: secondary_cluster_region_scp\n properties:\n name: mypolicy-secondary-cluster\n location: europe-west1\n serviceClass: gcp-memorystore-redis\n description: Secondary cluster service connection policy\n network: ${producerNet.id}\n pscConfig:\n subnetworks:\n - ${secondaryClusterProducerSubnet.id}\n secondaryClusterProducerSubnet:\n type: gcp:compute:Subnetwork\n name: secondary_cluster_producer_subnet\n properties:\n name: mysubnet-secondary-cluster\n ipCidrRange: 10.0.2.0/29\n region: europe-west1\n network: ${producerNet.id}\n producerNet:\n type: gcp:compute:Network\n name: producer_net\n properties:\n name: mynetwork\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Cluster Rdb\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: \"mynetwork\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"mysubnet\",\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: \"mypolicy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst cluster_rdb = new gcp.redis.Cluster(\"cluster-rdb\", {\n name: \"rdb-cluster\",\n shardCount: 3,\n pscConfigs: [{\n network: producerNet.id,\n }],\n region: \"us-central1\",\n replicaCount: 0,\n nodeType: \"REDIS_SHARED_CORE_NANO\",\n transitEncryptionMode: \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n authorizationMode: \"AUTH_MODE_DISABLED\",\n redisConfigs: {\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n deletionProtectionEnabled: true,\n zoneDistributionConfig: {\n mode: \"MULTI_ZONE\",\n },\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"MONDAY\",\n startTime: {\n hours: 1,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n persistenceConfig: {\n mode: \"RDB\",\n rdbConfig: {\n rdbSnapshotPeriod: \"ONE_HOUR\",\n rdbSnapshotStartTime: \"2024-10-02T15:01:23Z\",\n },\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=\"mynetwork\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"mysubnet\",\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=\"mypolicy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\ncluster_rdb = gcp.redis.Cluster(\"cluster-rdb\",\n name=\"rdb-cluster\",\n shard_count=3,\n psc_configs=[{\n \"network\": producer_net.id,\n }],\n region=\"us-central1\",\n replica_count=0,\n node_type=\"REDIS_SHARED_CORE_NANO\",\n transit_encryption_mode=\"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n authorization_mode=\"AUTH_MODE_DISABLED\",\n redis_configs={\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n deletion_protection_enabled=True,\n zone_distribution_config={\n \"mode\": \"MULTI_ZONE\",\n },\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"MONDAY\",\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\n },\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 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 = \"mynetwork\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"mysubnet\",\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 = \"mypolicy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore-redis\",\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 cluster_rdb = new Gcp.Redis.Cluster(\"cluster-rdb\", new()\n {\n Name = \"rdb-cluster\",\n ShardCount = 3,\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = producerNet.Id,\n },\n },\n Region = \"us-central1\",\n ReplicaCount = 0,\n NodeType = \"REDIS_SHARED_CORE_NANO\",\n TransitEncryptionMode = \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n AuthorizationMode = \"AUTH_MODE_DISABLED\",\n RedisConfigs = \n {\n { \"maxmemory-policy\", \"volatile-ttl\" },\n },\n DeletionProtectionEnabled = true,\n ZoneDistributionConfig = new Gcp.Redis.Inputs.ClusterZoneDistributionConfigArgs\n {\n Mode = \"MULTI_ZONE\",\n },\n MaintenancePolicy = new Gcp.Redis.Inputs.ClusterMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"MONDAY\",\n StartTime = new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n PersistenceConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigArgs\n {\n Mode = \"RDB\",\n RdbConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigRdbConfigArgs\n {\n RdbSnapshotPeriod = \"ONE_HOUR\",\n RdbSnapshotStartTime = \"2024-10-02T15:01:23Z\",\n },\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/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"mynetwork\"),\n\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(\"mysubnet\"),\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_default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, \"default\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"mypolicy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\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\t_, err = redis.NewCluster(ctx, \"cluster-rdb\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"rdb-cluster\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tReplicaCount: pulumi.Int(0),\n\t\t\tNodeType: pulumi.String(\"REDIS_SHARED_CORE_NANO\"),\n\t\t\tTransitEncryptionMode: pulumi.String(\"TRANSIT_ENCRYPTION_MODE_DISABLED\"),\n\t\t\tAuthorizationMode: pulumi.String(\"AUTH_MODE_DISABLED\"),\n\t\t\tRedisConfigs: pulumi.StringMap{\n\t\t\t\t\"maxmemory-policy\": pulumi.String(\"volatile-ttl\"),\n\t\t\t},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(true),\n\t\t\tZoneDistributionConfig: \u0026redis.ClusterZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"MULTI_ZONE\"),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026redis.ClusterMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"MONDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(1),\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},\n\t\t\tPersistenceConfig: \u0026redis.ClusterPersistenceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"RDB\"),\n\t\t\t\tRdbConfig: \u0026redis.ClusterPersistenceConfigRdbConfigArgs{\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}, 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.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPscConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterZoneDistributionConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPersistenceConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPersistenceConfigRdbConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"mynetwork\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"mysubnet\")\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(\"mypolicy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore-redis\")\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 var cluster_rdb = new Cluster(\"cluster-rdb\", ClusterArgs.builder()\n .name(\"rdb-cluster\")\n .shardCount(3)\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(producerNet.id())\n .build())\n .region(\"us-central1\")\n .replicaCount(0)\n .nodeType(\"REDIS_SHARED_CORE_NANO\")\n .transitEncryptionMode(\"TRANSIT_ENCRYPTION_MODE_DISABLED\")\n .authorizationMode(\"AUTH_MODE_DISABLED\")\n .redisConfigs(Map.of(\"maxmemory-policy\", \"volatile-ttl\"))\n .deletionProtectionEnabled(true)\n .zoneDistributionConfig(ClusterZoneDistributionConfigArgs.builder()\n .mode(\"MULTI_ZONE\")\n .build())\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"MONDAY\")\n .startTime(ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .persistenceConfig(ClusterPersistenceConfigArgs.builder()\n .mode(\"RDB\")\n .rdbConfig(ClusterPersistenceConfigRdbConfigArgs.builder()\n .rdbSnapshotPeriod(\"ONE_HOUR\")\n .rdbSnapshotStartTime(\"2024-10-02T15:01:23Z\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-rdb:\n type: gcp:redis:Cluster\n properties:\n name: rdb-cluster\n shardCount: 3\n pscConfigs:\n - network: ${producerNet.id}\n region: us-central1\n replicaCount: 0\n nodeType: REDIS_SHARED_CORE_NANO\n transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED\n authorizationMode: AUTH_MODE_DISABLED\n redisConfigs:\n maxmemory-policy: volatile-ttl\n deletionProtectionEnabled: true\n zoneDistributionConfig:\n mode: MULTI_ZONE\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: MONDAY\n startTime:\n hours: 1\n minutes: 0\n seconds: 0\n nanos: 0\n persistenceConfig:\n mode: RDB\n rdbConfig:\n rdbSnapshotPeriod: ONE_HOUR\n rdbSnapshotStartTime: 2024-10-02T15:01:23Z\n options:\n dependsOn:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: mypolicy\n location: us-central1\n serviceClass: gcp-memorystore-redis\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: mysubnet\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: mynetwork\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Cluster 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: \"mynetwork\",\n autoCreateSubnetworks: false,\n});\nconst producerSubnet = new gcp.compute.Subnetwork(\"producer_subnet\", {\n name: \"mysubnet\",\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: \"mypolicy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"my basic service connection policy\",\n network: producerNet.id,\n pscConfig: {\n subnetworks: [producerSubnet.id],\n },\n});\nconst cluster_aof = new gcp.redis.Cluster(\"cluster-aof\", {\n name: \"aof-cluster\",\n shardCount: 3,\n pscConfigs: [{\n network: producerNet.id,\n }],\n region: \"us-central1\",\n replicaCount: 0,\n nodeType: \"REDIS_SHARED_CORE_NANO\",\n transitEncryptionMode: \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n authorizationMode: \"AUTH_MODE_DISABLED\",\n redisConfigs: {\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n deletionProtectionEnabled: true,\n zoneDistributionConfig: {\n mode: \"MULTI_ZONE\",\n },\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"MONDAY\",\n startTime: {\n hours: 1,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n persistenceConfig: {\n mode: \"AOF\",\n aofConfig: {\n appendFsync: \"EVERYSEC\",\n },\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=\"mynetwork\",\n auto_create_subnetworks=False)\nproducer_subnet = gcp.compute.Subnetwork(\"producer_subnet\",\n name=\"mysubnet\",\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=\"mypolicy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"my basic service connection policy\",\n network=producer_net.id,\n psc_config={\n \"subnetworks\": [producer_subnet.id],\n })\ncluster_aof = gcp.redis.Cluster(\"cluster-aof\",\n name=\"aof-cluster\",\n shard_count=3,\n psc_configs=[{\n \"network\": producer_net.id,\n }],\n region=\"us-central1\",\n replica_count=0,\n node_type=\"REDIS_SHARED_CORE_NANO\",\n transit_encryption_mode=\"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n authorization_mode=\"AUTH_MODE_DISABLED\",\n redis_configs={\n \"maxmemory-policy\": \"volatile-ttl\",\n },\n deletion_protection_enabled=True,\n zone_distribution_config={\n \"mode\": \"MULTI_ZONE\",\n },\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"MONDAY\",\n \"start_time\": {\n \"hours\": 1,\n \"minutes\": 0,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\n },\n persistence_config={\n \"mode\": \"AOF\",\n \"aof_config\": {\n \"append_fsync\": \"EVERYSEC\",\n },\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 = \"mynetwork\",\n AutoCreateSubnetworks = false,\n });\n\n var producerSubnet = new Gcp.Compute.Subnetwork(\"producer_subnet\", new()\n {\n Name = \"mysubnet\",\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 = \"mypolicy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore-redis\",\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 cluster_aof = new Gcp.Redis.Cluster(\"cluster-aof\", new()\n {\n Name = \"aof-cluster\",\n ShardCount = 3,\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = producerNet.Id,\n },\n },\n Region = \"us-central1\",\n ReplicaCount = 0,\n NodeType = \"REDIS_SHARED_CORE_NANO\",\n TransitEncryptionMode = \"TRANSIT_ENCRYPTION_MODE_DISABLED\",\n AuthorizationMode = \"AUTH_MODE_DISABLED\",\n RedisConfigs = \n {\n { \"maxmemory-policy\", \"volatile-ttl\" },\n },\n DeletionProtectionEnabled = true,\n ZoneDistributionConfig = new Gcp.Redis.Inputs.ClusterZoneDistributionConfigArgs\n {\n Mode = \"MULTI_ZONE\",\n },\n MaintenancePolicy = new Gcp.Redis.Inputs.ClusterMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"MONDAY\",\n StartTime = new Gcp.Redis.Inputs.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 1,\n Minutes = 0,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n PersistenceConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigArgs\n {\n Mode = \"AOF\",\n AofConfig = new Gcp.Redis.Inputs.ClusterPersistenceConfigAofConfigArgs\n {\n AppendFsync = \"EVERYSEC\",\n },\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/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproducerNet, err := compute.NewNetwork(ctx, \"producer_net\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"mynetwork\"),\n\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(\"mysubnet\"),\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_default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, \"default\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"mypolicy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\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\t_, err = redis.NewCluster(ctx, \"cluster-aof\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"aof-cluster\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: producerNet.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tReplicaCount: pulumi.Int(0),\n\t\t\tNodeType: pulumi.String(\"REDIS_SHARED_CORE_NANO\"),\n\t\t\tTransitEncryptionMode: pulumi.String(\"TRANSIT_ENCRYPTION_MODE_DISABLED\"),\n\t\t\tAuthorizationMode: pulumi.String(\"AUTH_MODE_DISABLED\"),\n\t\t\tRedisConfigs: pulumi.StringMap{\n\t\t\t\t\"maxmemory-policy\": pulumi.String(\"volatile-ttl\"),\n\t\t\t},\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(true),\n\t\t\tZoneDistributionConfig: \u0026redis.ClusterZoneDistributionConfigArgs{\n\t\t\t\tMode: pulumi.String(\"MULTI_ZONE\"),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026redis.ClusterMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"MONDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(1),\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},\n\t\t\tPersistenceConfig: \u0026redis.ClusterPersistenceConfigArgs{\n\t\t\t\tMode: pulumi.String(\"AOF\"),\n\t\t\t\tAofConfig: \u0026redis.ClusterPersistenceConfigAofConfigArgs{\n\t\t\t\t\tAppendFsync: pulumi.String(\"EVERYSEC\"),\n\t\t\t\t},\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.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPscConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterZoneDistributionConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterMaintenancePolicyArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPersistenceConfigArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPersistenceConfigAofConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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(\"mynetwork\")\n .autoCreateSubnetworks(false)\n .build());\n\n var producerSubnet = new Subnetwork(\"producerSubnet\", SubnetworkArgs.builder()\n .name(\"mysubnet\")\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(\"mypolicy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore-redis\")\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 var cluster_aof = new Cluster(\"cluster-aof\", ClusterArgs.builder()\n .name(\"aof-cluster\")\n .shardCount(3)\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(producerNet.id())\n .build())\n .region(\"us-central1\")\n .replicaCount(0)\n .nodeType(\"REDIS_SHARED_CORE_NANO\")\n .transitEncryptionMode(\"TRANSIT_ENCRYPTION_MODE_DISABLED\")\n .authorizationMode(\"AUTH_MODE_DISABLED\")\n .redisConfigs(Map.of(\"maxmemory-policy\", \"volatile-ttl\"))\n .deletionProtectionEnabled(true)\n .zoneDistributionConfig(ClusterZoneDistributionConfigArgs.builder()\n .mode(\"MULTI_ZONE\")\n .build())\n .maintenancePolicy(ClusterMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(ClusterMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"MONDAY\")\n .startTime(ClusterMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(1)\n .minutes(0)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .persistenceConfig(ClusterPersistenceConfigArgs.builder()\n .mode(\"AOF\")\n .aofConfig(ClusterPersistenceConfigAofConfigArgs.builder()\n .appendFsync(\"EVERYSEC\")\n .build())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-aof:\n type: gcp:redis:Cluster\n properties:\n name: aof-cluster\n shardCount: 3\n pscConfigs:\n - network: ${producerNet.id}\n region: us-central1\n replicaCount: 0\n nodeType: REDIS_SHARED_CORE_NANO\n transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED\n authorizationMode: AUTH_MODE_DISABLED\n redisConfigs:\n maxmemory-policy: volatile-ttl\n deletionProtectionEnabled: true\n zoneDistributionConfig:\n mode: MULTI_ZONE\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: MONDAY\n startTime:\n hours: 1\n minutes: 0\n seconds: 0\n nanos: 0\n persistenceConfig:\n mode: AOF\n aofConfig:\n appendFsync: EVERYSEC\n options:\n dependsOn:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: mypolicy\n location: us-central1\n serviceClass: gcp-memorystore-redis\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: mysubnet\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: mynetwork\n autoCreateSubnetworks: false\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/{{region}}/clusters/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{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:redis/cluster:Cluster default projects/{{project}}/locations/{{region}}/clusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/cluster:Cluster default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/cluster:Cluster default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/cluster:Cluster default {{name}}\n```\n\n", "properties": { "authorizationMode": { "type": "string", @@ -267633,7 +267633,7 @@ } }, "gcp:redis/clusterUserCreatedConnections:ClusterUserCreatedConnections": { - "description": "## Example Usage\n\n### Redis Cluster User Created Connections\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network1 = new gcp.compute.Network(\"network1\", {\n name: \"net1\",\n autoCreateSubnetworks: false,\n});\nconst subnetNetwork1 = new gcp.compute.Subnetwork(\"subnet_network1\", {\n name: \"subnet-net1\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: network1.id,\n});\nconst ip1Network1 = new gcp.compute.Address(\"ip1_network1\", {\n name: \"ip1-net1\",\n region: \"us-central1\",\n subnetwork: subnetNetwork1.id,\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\n// redis cluster without endpoint\nconst cluster_user_connCluster = new gcp.redis.Cluster(\"cluster-user-conn\", {\n name: \"cluster-user-conn\",\n shardCount: 3,\n region: \"us-central1\",\n replicaCount: 0,\n deletionProtectionEnabled: false,\n});\nconst forwardingRule1Network1 = new gcp.compute.ForwardingRule(\"forwarding_rule1_network1\", {\n name: \"fwd1-net1\",\n region: \"us-central1\",\n ipAddress: ip1Network1.id,\n loadBalancingScheme: \"\",\n network: network1.id,\n target: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[0].serviceAttachment),\n});\nconst ip2Network1 = new gcp.compute.Address(\"ip2_network1\", {\n name: \"ip2-net1\",\n region: \"us-central1\",\n subnetwork: subnetNetwork1.id,\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\nconst forwardingRule2Network1 = new gcp.compute.ForwardingRule(\"forwarding_rule2_network1\", {\n name: \"fwd2-net1\",\n region: \"us-central1\",\n ipAddress: ip2Network1.id,\n loadBalancingScheme: \"\",\n network: network1.id,\n target: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[1].serviceAttachment),\n});\nconst network2 = new gcp.compute.Network(\"network2\", {\n name: \"network2\",\n autoCreateSubnetworks: false,\n});\nconst subnetNetwork2 = new gcp.compute.Subnetwork(\"subnet_network2\", {\n name: \"subnet-net2\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: network2.id,\n});\nconst ip1Network2 = new gcp.compute.Address(\"ip1_network2\", {\n name: \"ip1-net2\",\n region: \"us-central1\",\n subnetwork: subnetNetwork2.id,\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\nconst forwardingRule1Network2 = new gcp.compute.ForwardingRule(\"forwarding_rule1_network2\", {\n name: \"fwd1-net2\",\n region: \"us-central1\",\n ipAddress: ip1Network2.id,\n loadBalancingScheme: \"\",\n network: network2.id,\n target: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[0].serviceAttachment),\n});\nconst ip2Network2 = new gcp.compute.Address(\"ip2_network2\", {\n name: \"ip2-net2\",\n region: \"us-central1\",\n subnetwork: subnetNetwork2.id,\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\nconst forwardingRule2Network2 = new gcp.compute.ForwardingRule(\"forwarding_rule2_network2\", {\n name: \"fwd2-net2\",\n region: \"us-central1\",\n ipAddress: ip2Network2.id,\n loadBalancingScheme: \"\",\n network: network2.id,\n target: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[1].serviceAttachment),\n});\nconst project = gcp.organizations.getProject({});\nconst cluster_user_conn = new gcp.redis.ClusterUserCreatedConnections(\"cluster-user-conn\", {\n name: \"cluster-user-conn\",\n region: \"us-central1\",\n clusterEndpoints: [\n {\n connections: [\n {\n pscConnection: {\n pscConnectionId: forwardingRule1Network1.pscConnectionId,\n address: ip1Network1.address,\n forwardingRule: forwardingRule1Network1.id,\n network: network1.id,\n projectId: project.then(project =\u003e project.projectId),\n serviceAttachment: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[0].serviceAttachment),\n },\n },\n {\n pscConnection: {\n pscConnectionId: forwardingRule2Network1.pscConnectionId,\n address: ip2Network1.address,\n forwardingRule: forwardingRule2Network1.id,\n network: network1.id,\n serviceAttachment: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[1].serviceAttachment),\n },\n },\n ],\n },\n {\n connections: [\n {\n pscConnection: {\n pscConnectionId: forwardingRule1Network2.pscConnectionId,\n address: ip1Network2.address,\n forwardingRule: forwardingRule1Network2.id,\n network: network2.id,\n serviceAttachment: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[0].serviceAttachment),\n },\n },\n {\n pscConnection: {\n pscConnectionId: forwardingRule2Network2.pscConnectionId,\n address: ip2Network2.address,\n forwardingRule: forwardingRule2Network2.id,\n network: network2.id,\n serviceAttachment: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[1].serviceAttachment),\n },\n },\n ],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork1 = gcp.compute.Network(\"network1\",\n name=\"net1\",\n auto_create_subnetworks=False)\nsubnet_network1 = gcp.compute.Subnetwork(\"subnet_network1\",\n name=\"subnet-net1\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=network1.id)\nip1_network1 = gcp.compute.Address(\"ip1_network1\",\n name=\"ip1-net1\",\n region=\"us-central1\",\n subnetwork=subnet_network1.id,\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\n# redis cluster without endpoint\ncluster_user_conn_cluster = gcp.redis.Cluster(\"cluster-user-conn\",\n name=\"cluster-user-conn\",\n shard_count=3,\n region=\"us-central1\",\n replica_count=0,\n deletion_protection_enabled=False)\nforwarding_rule1_network1 = gcp.compute.ForwardingRule(\"forwarding_rule1_network1\",\n name=\"fwd1-net1\",\n region=\"us-central1\",\n ip_address=ip1_network1.id,\n load_balancing_scheme=\"\",\n network=network1.id,\n target=cluster_user_conn_cluster.psc_service_attachments[0].service_attachment)\nip2_network1 = gcp.compute.Address(\"ip2_network1\",\n name=\"ip2-net1\",\n region=\"us-central1\",\n subnetwork=subnet_network1.id,\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\nforwarding_rule2_network1 = gcp.compute.ForwardingRule(\"forwarding_rule2_network1\",\n name=\"fwd2-net1\",\n region=\"us-central1\",\n ip_address=ip2_network1.id,\n load_balancing_scheme=\"\",\n network=network1.id,\n target=cluster_user_conn_cluster.psc_service_attachments[1].service_attachment)\nnetwork2 = gcp.compute.Network(\"network2\",\n name=\"network2\",\n auto_create_subnetworks=False)\nsubnet_network2 = gcp.compute.Subnetwork(\"subnet_network2\",\n name=\"subnet-net2\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=network2.id)\nip1_network2 = gcp.compute.Address(\"ip1_network2\",\n name=\"ip1-net2\",\n region=\"us-central1\",\n subnetwork=subnet_network2.id,\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\nforwarding_rule1_network2 = gcp.compute.ForwardingRule(\"forwarding_rule1_network2\",\n name=\"fwd1-net2\",\n region=\"us-central1\",\n ip_address=ip1_network2.id,\n load_balancing_scheme=\"\",\n network=network2.id,\n target=cluster_user_conn_cluster.psc_service_attachments[0].service_attachment)\nip2_network2 = gcp.compute.Address(\"ip2_network2\",\n name=\"ip2-net2\",\n region=\"us-central1\",\n subnetwork=subnet_network2.id,\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\nforwarding_rule2_network2 = gcp.compute.ForwardingRule(\"forwarding_rule2_network2\",\n name=\"fwd2-net2\",\n region=\"us-central1\",\n ip_address=ip2_network2.id,\n load_balancing_scheme=\"\",\n network=network2.id,\n target=cluster_user_conn_cluster.psc_service_attachments[1].service_attachment)\nproject = gcp.organizations.get_project()\ncluster_user_conn = gcp.redis.ClusterUserCreatedConnections(\"cluster-user-conn\",\n name=\"cluster-user-conn\",\n region=\"us-central1\",\n cluster_endpoints=[\n {\n \"connections\": [\n {\n \"psc_connection\": {\n \"psc_connection_id\": forwarding_rule1_network1.psc_connection_id,\n \"address\": ip1_network1.address,\n \"forwarding_rule\": forwarding_rule1_network1.id,\n \"network\": network1.id,\n \"project_id\": project.project_id,\n \"service_attachment\": cluster_user_conn_cluster.psc_service_attachments[0].service_attachment,\n },\n },\n {\n \"psc_connection\": {\n \"psc_connection_id\": forwarding_rule2_network1.psc_connection_id,\n \"address\": ip2_network1.address,\n \"forwarding_rule\": forwarding_rule2_network1.id,\n \"network\": network1.id,\n \"service_attachment\": cluster_user_conn_cluster.psc_service_attachments[1].service_attachment,\n },\n },\n ],\n },\n {\n \"connections\": [\n {\n \"psc_connection\": {\n \"psc_connection_id\": forwarding_rule1_network2.psc_connection_id,\n \"address\": ip1_network2.address,\n \"forwarding_rule\": forwarding_rule1_network2.id,\n \"network\": network2.id,\n \"service_attachment\": cluster_user_conn_cluster.psc_service_attachments[0].service_attachment,\n },\n },\n {\n \"psc_connection\": {\n \"psc_connection_id\": forwarding_rule2_network2.psc_connection_id,\n \"address\": ip2_network2.address,\n \"forwarding_rule\": forwarding_rule2_network2.id,\n \"network\": network2.id,\n \"service_attachment\": cluster_user_conn_cluster.psc_service_attachments[1].service_attachment,\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 network1 = new Gcp.Compute.Network(\"network1\", new()\n {\n Name = \"net1\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetNetwork1 = new Gcp.Compute.Subnetwork(\"subnet_network1\", new()\n {\n Name = \"subnet-net1\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = network1.Id,\n });\n\n var ip1Network1 = new Gcp.Compute.Address(\"ip1_network1\", new()\n {\n Name = \"ip1-net1\",\n Region = \"us-central1\",\n Subnetwork = subnetNetwork1.Id,\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n // redis cluster without endpoint\n var cluster_user_connCluster = new Gcp.Redis.Cluster(\"cluster-user-conn\", new()\n {\n Name = \"cluster-user-conn\",\n ShardCount = 3,\n Region = \"us-central1\",\n ReplicaCount = 0,\n DeletionProtectionEnabled = false,\n });\n\n var forwardingRule1Network1 = new Gcp.Compute.ForwardingRule(\"forwarding_rule1_network1\", new()\n {\n Name = \"fwd1-net1\",\n Region = \"us-central1\",\n IpAddress = ip1Network1.Id,\n LoadBalancingScheme = \"\",\n Network = network1.Id,\n Target = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[0].ServiceAttachment),\n });\n\n var ip2Network1 = new Gcp.Compute.Address(\"ip2_network1\", new()\n {\n Name = \"ip2-net1\",\n Region = \"us-central1\",\n Subnetwork = subnetNetwork1.Id,\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n var forwardingRule2Network1 = new Gcp.Compute.ForwardingRule(\"forwarding_rule2_network1\", new()\n {\n Name = \"fwd2-net1\",\n Region = \"us-central1\",\n IpAddress = ip2Network1.Id,\n LoadBalancingScheme = \"\",\n Network = network1.Id,\n Target = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[1].ServiceAttachment),\n });\n\n var network2 = new Gcp.Compute.Network(\"network2\", new()\n {\n Name = \"network2\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetNetwork2 = new Gcp.Compute.Subnetwork(\"subnet_network2\", new()\n {\n Name = \"subnet-net2\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = network2.Id,\n });\n\n var ip1Network2 = new Gcp.Compute.Address(\"ip1_network2\", new()\n {\n Name = \"ip1-net2\",\n Region = \"us-central1\",\n Subnetwork = subnetNetwork2.Id,\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n var forwardingRule1Network2 = new Gcp.Compute.ForwardingRule(\"forwarding_rule1_network2\", new()\n {\n Name = \"fwd1-net2\",\n Region = \"us-central1\",\n IpAddress = ip1Network2.Id,\n LoadBalancingScheme = \"\",\n Network = network2.Id,\n Target = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[0].ServiceAttachment),\n });\n\n var ip2Network2 = new Gcp.Compute.Address(\"ip2_network2\", new()\n {\n Name = \"ip2-net2\",\n Region = \"us-central1\",\n Subnetwork = subnetNetwork2.Id,\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n var forwardingRule2Network2 = new Gcp.Compute.ForwardingRule(\"forwarding_rule2_network2\", new()\n {\n Name = \"fwd2-net2\",\n Region = \"us-central1\",\n IpAddress = ip2Network2.Id,\n LoadBalancingScheme = \"\",\n Network = network2.Id,\n Target = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[1].ServiceAttachment),\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cluster_user_conn = new Gcp.Redis.ClusterUserCreatedConnections(\"cluster-user-conn\", new()\n {\n Name = \"cluster-user-conn\",\n Region = \"us-central1\",\n ClusterEndpoints = new[]\n {\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointArgs\n {\n Connections = new[]\n {\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs\n {\n PscConnection = new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs\n {\n PscConnectionId = forwardingRule1Network1.PscConnectionId,\n Address = ip1Network1.IPAddress,\n ForwardingRule = forwardingRule1Network1.Id,\n Network = network1.Id,\n ProjectId = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n ServiceAttachment = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[0].ServiceAttachment),\n },\n },\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs\n {\n PscConnection = new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs\n {\n PscConnectionId = forwardingRule2Network1.PscConnectionId,\n Address = ip2Network1.IPAddress,\n ForwardingRule = forwardingRule2Network1.Id,\n Network = network1.Id,\n ServiceAttachment = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[1].ServiceAttachment),\n },\n },\n },\n },\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointArgs\n {\n Connections = new[]\n {\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs\n {\n PscConnection = new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs\n {\n PscConnectionId = forwardingRule1Network2.PscConnectionId,\n Address = ip1Network2.IPAddress,\n ForwardingRule = forwardingRule1Network2.Id,\n Network = network2.Id,\n ServiceAttachment = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[0].ServiceAttachment),\n },\n },\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs\n {\n PscConnection = new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs\n {\n PscConnectionId = forwardingRule2Network2.PscConnectionId,\n Address = ip2Network2.IPAddress,\n ForwardingRule = forwardingRule2Network2.Id,\n Network = network2.Id,\n ServiceAttachment = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[1].ServiceAttachment),\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/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := compute.NewNetwork(ctx, \"network1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net1\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnetNetwork1, err := compute.NewSubnetwork(ctx, \"subnet_network1\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-net1\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip1Network1, err := compute.NewAddress(ctx, \"ip1_network1\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ip1-net1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: subnetNetwork1.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// redis cluster without endpoint\n\t\t_, err = redis.NewCluster(ctx, \"cluster-user-conn\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-user-conn\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tReplicaCount: pulumi.Int(0),\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforwardingRule1Network1, err := compute.NewForwardingRule(ctx, \"forwarding_rule1_network1\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fwd1-net1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: ip1Network1.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: network1.ID(),\n\t\t\tTarget: pulumi.String(cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\treturn \u0026pscServiceAttachments[0].ServiceAttachment, 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\tip2Network1, err := compute.NewAddress(ctx, \"ip2_network1\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ip2-net1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: subnetNetwork1.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforwardingRule2Network1, err := compute.NewForwardingRule(ctx, \"forwarding_rule2_network1\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fwd2-net1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: ip2Network1.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: network1.ID(),\n\t\t\tTarget: pulumi.String(cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\treturn \u0026pscServiceAttachments[1].ServiceAttachment, 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\tnetwork2, err := compute.NewNetwork(ctx, \"network2\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network2\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnetNetwork2, err := compute.NewSubnetwork(ctx, \"subnet_network2\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-net2\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network2.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip1Network2, err := compute.NewAddress(ctx, \"ip1_network2\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ip1-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: subnetNetwork2.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforwardingRule1Network2, err := compute.NewForwardingRule(ctx, \"forwarding_rule1_network2\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fwd1-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: ip1Network2.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: network2.ID(),\n\t\t\tTarget: pulumi.String(cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\treturn \u0026pscServiceAttachments[0].ServiceAttachment, 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\tip2Network2, err := compute.NewAddress(ctx, \"ip2_network2\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ip2-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: subnetNetwork2.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforwardingRule2Network2, err := compute.NewForwardingRule(ctx, \"forwarding_rule2_network2\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fwd2-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: ip2Network2.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: network2.ID(),\n\t\t\tTarget: pulumi.String(cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\treturn \u0026pscServiceAttachments[1].ServiceAttachment, 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\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 = redis.NewClusterUserCreatedConnections(ctx, \"cluster-user-conn\", \u0026redis.ClusterUserCreatedConnectionsArgs{\n\t\t\tName: pulumi.String(\"cluster-user-conn\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterEndpoints: redis.ClusterUserCreatedConnectionsClusterEndpointArray{\n\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointArgs{\n\t\t\t\t\tConnections: redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArray{\n\t\t\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs{\n\t\t\t\t\t\t\tPscConnection: \u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs{\n\t\t\t\t\t\t\t\tPscConnectionId: forwardingRule1Network1.PscConnectionId,\n\t\t\t\t\t\t\t\tAddress: ip1Network1.Address,\n\t\t\t\t\t\t\t\tForwardingRule: forwardingRule1Network1.ID(),\n\t\t\t\t\t\t\t\tNetwork: network1.ID(),\n\t\t\t\t\t\t\t\tProjectId: pulumi.String(project.ProjectId),\n\t\t\t\t\t\t\t\tServiceAttachment: cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\t\t\t\t\t\treturn \u0026pscServiceAttachments[0].ServiceAttachment, nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs{\n\t\t\t\t\t\t\tPscConnection: \u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs{\n\t\t\t\t\t\t\t\tPscConnectionId: forwardingRule2Network1.PscConnectionId,\n\t\t\t\t\t\t\t\tAddress: ip2Network1.Address,\n\t\t\t\t\t\t\t\tForwardingRule: forwardingRule2Network1.ID(),\n\t\t\t\t\t\t\t\tNetwork: network1.ID(),\n\t\t\t\t\t\t\t\tServiceAttachment: cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\t\t\t\t\t\treturn \u0026pscServiceAttachments[1].ServiceAttachment, nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\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\u0026redis.ClusterUserCreatedConnectionsClusterEndpointArgs{\n\t\t\t\t\tConnections: redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArray{\n\t\t\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs{\n\t\t\t\t\t\t\tPscConnection: \u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs{\n\t\t\t\t\t\t\t\tPscConnectionId: forwardingRule1Network2.PscConnectionId,\n\t\t\t\t\t\t\t\tAddress: ip1Network2.Address,\n\t\t\t\t\t\t\t\tForwardingRule: forwardingRule1Network2.ID(),\n\t\t\t\t\t\t\t\tNetwork: network2.ID(),\n\t\t\t\t\t\t\t\tServiceAttachment: cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\t\t\t\t\t\treturn \u0026pscServiceAttachments[0].ServiceAttachment, nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs{\n\t\t\t\t\t\t\tPscConnection: \u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs{\n\t\t\t\t\t\t\t\tPscConnectionId: forwardingRule2Network2.PscConnectionId,\n\t\t\t\t\t\t\t\tAddress: ip2Network2.Address,\n\t\t\t\t\t\t\t\tForwardingRule: forwardingRule2Network2.ID(),\n\t\t\t\t\t\t\t\tNetwork: network2.ID(),\n\t\t\t\t\t\t\t\tServiceAttachment: cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\t\t\t\t\t\treturn \u0026pscServiceAttachments[1].ServiceAttachment, nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.redis.ClusterUserCreatedConnections;\nimport com.pulumi.gcp.redis.ClusterUserCreatedConnectionsArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterUserCreatedConnectionsClusterEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network1 = new Network(\"network1\", NetworkArgs.builder()\n .name(\"net1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetNetwork1 = new Subnetwork(\"subnetNetwork1\", SubnetworkArgs.builder()\n .name(\"subnet-net1\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(network1.id())\n .build());\n\n var ip1Network1 = new Address(\"ip1Network1\", AddressArgs.builder()\n .name(\"ip1-net1\")\n .region(\"us-central1\")\n .subnetwork(subnetNetwork1.id())\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n // redis cluster without endpoint\n var cluster_user_connCluster = new Cluster(\"cluster-user-connCluster\", ClusterArgs.builder()\n .name(\"cluster-user-conn\")\n .shardCount(3)\n .region(\"us-central1\")\n .replicaCount(0)\n .deletionProtectionEnabled(false)\n .build());\n\n var forwardingRule1Network1 = new ForwardingRule(\"forwardingRule1Network1\", ForwardingRuleArgs.builder()\n .name(\"fwd1-net1\")\n .region(\"us-central1\")\n .ipAddress(ip1Network1.id())\n .loadBalancingScheme(\"\")\n .network(network1.id())\n .target(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[0].serviceAttachment()))\n .build());\n\n var ip2Network1 = new Address(\"ip2Network1\", AddressArgs.builder()\n .name(\"ip2-net1\")\n .region(\"us-central1\")\n .subnetwork(subnetNetwork1.id())\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n var forwardingRule2Network1 = new ForwardingRule(\"forwardingRule2Network1\", ForwardingRuleArgs.builder()\n .name(\"fwd2-net1\")\n .region(\"us-central1\")\n .ipAddress(ip2Network1.id())\n .loadBalancingScheme(\"\")\n .network(network1.id())\n .target(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[1].serviceAttachment()))\n .build());\n\n var network2 = new Network(\"network2\", NetworkArgs.builder()\n .name(\"network2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetNetwork2 = new Subnetwork(\"subnetNetwork2\", SubnetworkArgs.builder()\n .name(\"subnet-net2\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(network2.id())\n .build());\n\n var ip1Network2 = new Address(\"ip1Network2\", AddressArgs.builder()\n .name(\"ip1-net2\")\n .region(\"us-central1\")\n .subnetwork(subnetNetwork2.id())\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n var forwardingRule1Network2 = new ForwardingRule(\"forwardingRule1Network2\", ForwardingRuleArgs.builder()\n .name(\"fwd1-net2\")\n .region(\"us-central1\")\n .ipAddress(ip1Network2.id())\n .loadBalancingScheme(\"\")\n .network(network2.id())\n .target(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[0].serviceAttachment()))\n .build());\n\n var ip2Network2 = new Address(\"ip2Network2\", AddressArgs.builder()\n .name(\"ip2-net2\")\n .region(\"us-central1\")\n .subnetwork(subnetNetwork2.id())\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n var forwardingRule2Network2 = new ForwardingRule(\"forwardingRule2Network2\", ForwardingRuleArgs.builder()\n .name(\"fwd2-net2\")\n .region(\"us-central1\")\n .ipAddress(ip2Network2.id())\n .loadBalancingScheme(\"\")\n .network(network2.id())\n .target(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[1].serviceAttachment()))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cluster_user_conn = new ClusterUserCreatedConnections(\"cluster-user-conn\", ClusterUserCreatedConnectionsArgs.builder()\n .name(\"cluster-user-conn\")\n .region(\"us-central1\")\n .clusterEndpoints( \n ClusterUserCreatedConnectionsClusterEndpointArgs.builder()\n .connections( \n ClusterUserCreatedConnectionsClusterEndpointConnectionArgs.builder()\n .pscConnection(ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs.builder()\n .pscConnectionId(forwardingRule1Network1.pscConnectionId())\n .address(ip1Network1.address())\n .forwardingRule(forwardingRule1Network1.id())\n .network(network1.id())\n .projectId(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .serviceAttachment(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[0].serviceAttachment()))\n .build())\n .build(),\n ClusterUserCreatedConnectionsClusterEndpointConnectionArgs.builder()\n .pscConnection(ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs.builder()\n .pscConnectionId(forwardingRule2Network1.pscConnectionId())\n .address(ip2Network1.address())\n .forwardingRule(forwardingRule2Network1.id())\n .network(network1.id())\n .serviceAttachment(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[1].serviceAttachment()))\n .build())\n .build())\n .build(),\n ClusterUserCreatedConnectionsClusterEndpointArgs.builder()\n .connections( \n ClusterUserCreatedConnectionsClusterEndpointConnectionArgs.builder()\n .pscConnection(ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs.builder()\n .pscConnectionId(forwardingRule1Network2.pscConnectionId())\n .address(ip1Network2.address())\n .forwardingRule(forwardingRule1Network2.id())\n .network(network2.id())\n .serviceAttachment(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[0].serviceAttachment()))\n .build())\n .build(),\n ClusterUserCreatedConnectionsClusterEndpointConnectionArgs.builder()\n .pscConnection(ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs.builder()\n .pscConnectionId(forwardingRule2Network2.pscConnectionId())\n .address(ip2Network2.address())\n .forwardingRule(forwardingRule2Network2.id())\n .network(network2.id())\n .serviceAttachment(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[1].serviceAttachment()))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-user-conn:\n type: gcp:redis:ClusterUserCreatedConnections\n properties:\n name: cluster-user-conn\n region: us-central1\n clusterEndpoints:\n - connections:\n - pscConnection:\n pscConnectionId: ${forwardingRule1Network1.pscConnectionId}\n address: ${ip1Network1.address}\n forwardingRule: ${forwardingRule1Network1.id}\n network: ${network1.id}\n projectId: ${project.projectId}\n serviceAttachment: ${[\"cluster-user-connCluster\"].pscServiceAttachments[0].serviceAttachment}\n - pscConnection:\n pscConnectionId: ${forwardingRule2Network1.pscConnectionId}\n address: ${ip2Network1.address}\n forwardingRule: ${forwardingRule2Network1.id}\n network: ${network1.id}\n serviceAttachment: ${[\"cluster-user-connCluster\"].pscServiceAttachments[1].serviceAttachment}\n - connections:\n - pscConnection:\n pscConnectionId: ${forwardingRule1Network2.pscConnectionId}\n address: ${ip1Network2.address}\n forwardingRule: ${forwardingRule1Network2.id}\n network: ${network2.id}\n serviceAttachment: ${[\"cluster-user-connCluster\"].pscServiceAttachments[0].serviceAttachment}\n - pscConnection:\n pscConnectionId: ${forwardingRule2Network2.pscConnectionId}\n address: ${ip2Network2.address}\n forwardingRule: ${forwardingRule2Network2.id}\n network: ${network2.id}\n serviceAttachment: ${[\"cluster-user-connCluster\"].pscServiceAttachments[1].serviceAttachment}\n forwardingRule1Network1:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule1_network1\n properties:\n name: fwd1-net1\n region: us-central1\n ipAddress: ${ip1Network1.id}\n loadBalancingScheme: \"\"\n network: ${network1.id}\n target: ${[\"cluster-user-connCluster\"].pscServiceAttachments[0].serviceAttachment}\n forwardingRule2Network1:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule2_network1\n properties:\n name: fwd2-net1\n region: us-central1\n ipAddress: ${ip2Network1.id}\n loadBalancingScheme: \"\"\n network: ${network1.id}\n target: ${[\"cluster-user-connCluster\"].pscServiceAttachments[1].serviceAttachment}\n ip1Network1:\n type: gcp:compute:Address\n name: ip1_network1\n properties:\n name: ip1-net1\n region: us-central1\n subnetwork: ${subnetNetwork1.id}\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n ip2Network1:\n type: gcp:compute:Address\n name: ip2_network1\n properties:\n name: ip2-net1\n region: us-central1\n subnetwork: ${subnetNetwork1.id}\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n subnetNetwork1:\n type: gcp:compute:Subnetwork\n name: subnet_network1\n properties:\n name: subnet-net1\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${network1.id}\n network1:\n type: gcp:compute:Network\n properties:\n name: net1\n autoCreateSubnetworks: false\n forwardingRule1Network2:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule1_network2\n properties:\n name: fwd1-net2\n region: us-central1\n ipAddress: ${ip1Network2.id}\n loadBalancingScheme: \"\"\n network: ${network2.id}\n target: ${[\"cluster-user-connCluster\"].pscServiceAttachments[0].serviceAttachment}\n forwardingRule2Network2:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule2_network2\n properties:\n name: fwd2-net2\n region: us-central1\n ipAddress: ${ip2Network2.id}\n loadBalancingScheme: \"\"\n network: ${network2.id}\n target: ${[\"cluster-user-connCluster\"].pscServiceAttachments[1].serviceAttachment}\n ip1Network2:\n type: gcp:compute:Address\n name: ip1_network2\n properties:\n name: ip1-net2\n region: us-central1\n subnetwork: ${subnetNetwork2.id}\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n ip2Network2:\n type: gcp:compute:Address\n name: ip2_network2\n properties:\n name: ip2-net2\n region: us-central1\n subnetwork: ${subnetNetwork2.id}\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n subnetNetwork2:\n type: gcp:compute:Subnetwork\n name: subnet_network2\n properties:\n name: subnet-net2\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${network2.id}\n network2:\n type: gcp:compute:Network\n properties:\n name: network2\n autoCreateSubnetworks: false\n # redis cluster without endpoint\n cluster-user-connCluster:\n type: gcp:redis:Cluster\n name: cluster-user-conn\n properties:\n name: cluster-user-conn\n shardCount: 3\n region: us-central1\n replicaCount: 0\n deletionProtectionEnabled: false\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Cluster User And Auto Created Connections\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network2 = new gcp.compute.Network(\"network2\", {\n name: \"network2\",\n autoCreateSubnetworks: false,\n});\nconst subnetNetwork2 = new gcp.compute.Subnetwork(\"subnet_network2\", {\n name: \"subnet-net2\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: network2.id,\n});\nconst ip1Network2 = new gcp.compute.Address(\"ip1_network2\", {\n name: \"ip1-net2\",\n region: \"us-central1\",\n subnetwork: subnetNetwork2.id,\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\nconst network1 = new gcp.compute.Network(\"network1\", {\n name: \"net1\",\n autoCreateSubnetworks: false,\n});\nconst subnetNetwork1 = new gcp.compute.Subnetwork(\"subnet_network1\", {\n name: \"subnet-net1\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: network1.id,\n});\nconst _default = new gcp.networkconnectivity.ServiceConnectionPolicy(\"default\", {\n name: \"scpolicy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"my basic service connection policy\",\n network: network1.id,\n pscConfig: {\n subnetworks: [subnetNetwork1.id],\n },\n});\n// redis cluster without endpoint\nconst cluster_user_auto_connCluster = new gcp.redis.Cluster(\"cluster-user-auto-conn\", {\n name: \"cluster-user-auto-conn\",\n shardCount: 3,\n region: \"us-central1\",\n replicaCount: 0,\n deletionProtectionEnabled: false,\n pscConfigs: [{\n network: network1.id,\n }],\n}, {\n dependsOn: [_default],\n});\nconst forwardingRule1Network2 = new gcp.compute.ForwardingRule(\"forwarding_rule1_network2\", {\n name: \"fwd1-net2\",\n region: \"us-central1\",\n ipAddress: ip1Network2.id,\n loadBalancingScheme: \"\",\n network: network2.id,\n target: cluster_user_auto_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[0].serviceAttachment),\n});\nconst ip2Network2 = new gcp.compute.Address(\"ip2_network2\", {\n name: \"ip2-net2\",\n region: \"us-central1\",\n subnetwork: subnetNetwork2.id,\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\nconst forwardingRule2Network2 = new gcp.compute.ForwardingRule(\"forwarding_rule2_network2\", {\n name: \"fwd2-net2\",\n region: \"us-central1\",\n ipAddress: ip2Network2.id,\n loadBalancingScheme: \"\",\n network: network2.id,\n target: cluster_user_auto_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[1].serviceAttachment),\n});\nconst cluster_user_auto_conn = new gcp.redis.ClusterUserCreatedConnections(\"cluster-user-auto-conn\", {\n name: \"cluster-user-auto-conn\",\n region: \"us-central1\",\n clusterEndpoints: [{\n connections: [\n {\n pscConnection: {\n pscConnectionId: forwardingRule1Network2.pscConnectionId,\n address: ip1Network2.address,\n forwardingRule: forwardingRule1Network2.id,\n network: network2.id,\n serviceAttachment: cluster_user_auto_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[0].serviceAttachment),\n },\n },\n {\n pscConnection: {\n pscConnectionId: forwardingRule2Network2.pscConnectionId,\n address: ip2Network2.address,\n forwardingRule: forwardingRule2Network2.id,\n network: network2.id,\n serviceAttachment: cluster_user_auto_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[1].serviceAttachment),\n },\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork2 = gcp.compute.Network(\"network2\",\n name=\"network2\",\n auto_create_subnetworks=False)\nsubnet_network2 = gcp.compute.Subnetwork(\"subnet_network2\",\n name=\"subnet-net2\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=network2.id)\nip1_network2 = gcp.compute.Address(\"ip1_network2\",\n name=\"ip1-net2\",\n region=\"us-central1\",\n subnetwork=subnet_network2.id,\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\nnetwork1 = gcp.compute.Network(\"network1\",\n name=\"net1\",\n auto_create_subnetworks=False)\nsubnet_network1 = gcp.compute.Subnetwork(\"subnet_network1\",\n name=\"subnet-net1\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=network1.id)\ndefault = gcp.networkconnectivity.ServiceConnectionPolicy(\"default\",\n name=\"scpolicy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"my basic service connection policy\",\n network=network1.id,\n psc_config={\n \"subnetworks\": [subnet_network1.id],\n })\n# redis cluster without endpoint\ncluster_user_auto_conn_cluster = gcp.redis.Cluster(\"cluster-user-auto-conn\",\n name=\"cluster-user-auto-conn\",\n shard_count=3,\n region=\"us-central1\",\n replica_count=0,\n deletion_protection_enabled=False,\n psc_configs=[{\n \"network\": network1.id,\n }],\n opts = pulumi.ResourceOptions(depends_on=[default]))\nforwarding_rule1_network2 = gcp.compute.ForwardingRule(\"forwarding_rule1_network2\",\n name=\"fwd1-net2\",\n region=\"us-central1\",\n ip_address=ip1_network2.id,\n load_balancing_scheme=\"\",\n network=network2.id,\n target=cluster_user_auto_conn_cluster.psc_service_attachments[0].service_attachment)\nip2_network2 = gcp.compute.Address(\"ip2_network2\",\n name=\"ip2-net2\",\n region=\"us-central1\",\n subnetwork=subnet_network2.id,\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\nforwarding_rule2_network2 = gcp.compute.ForwardingRule(\"forwarding_rule2_network2\",\n name=\"fwd2-net2\",\n region=\"us-central1\",\n ip_address=ip2_network2.id,\n load_balancing_scheme=\"\",\n network=network2.id,\n target=cluster_user_auto_conn_cluster.psc_service_attachments[1].service_attachment)\ncluster_user_auto_conn = gcp.redis.ClusterUserCreatedConnections(\"cluster-user-auto-conn\",\n name=\"cluster-user-auto-conn\",\n region=\"us-central1\",\n cluster_endpoints=[{\n \"connections\": [\n {\n \"psc_connection\": {\n \"psc_connection_id\": forwarding_rule1_network2.psc_connection_id,\n \"address\": ip1_network2.address,\n \"forwarding_rule\": forwarding_rule1_network2.id,\n \"network\": network2.id,\n \"service_attachment\": cluster_user_auto_conn_cluster.psc_service_attachments[0].service_attachment,\n },\n },\n {\n \"psc_connection\": {\n \"psc_connection_id\": forwarding_rule2_network2.psc_connection_id,\n \"address\": ip2_network2.address,\n \"forwarding_rule\": forwarding_rule2_network2.id,\n \"network\": network2.id,\n \"service_attachment\": cluster_user_auto_conn_cluster.psc_service_attachments[1].service_attachment,\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 network2 = new Gcp.Compute.Network(\"network2\", new()\n {\n Name = \"network2\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetNetwork2 = new Gcp.Compute.Subnetwork(\"subnet_network2\", new()\n {\n Name = \"subnet-net2\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = network2.Id,\n });\n\n var ip1Network2 = new Gcp.Compute.Address(\"ip1_network2\", new()\n {\n Name = \"ip1-net2\",\n Region = \"us-central1\",\n Subnetwork = subnetNetwork2.Id,\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n var network1 = new Gcp.Compute.Network(\"network1\", new()\n {\n Name = \"net1\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetNetwork1 = new Gcp.Compute.Subnetwork(\"subnet_network1\", new()\n {\n Name = \"subnet-net1\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = network1.Id,\n });\n\n var @default = new Gcp.NetworkConnectivity.ServiceConnectionPolicy(\"default\", new()\n {\n Name = \"scpolicy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore-redis\",\n Description = \"my basic service connection policy\",\n Network = network1.Id,\n PscConfig = new Gcp.NetworkConnectivity.Inputs.ServiceConnectionPolicyPscConfigArgs\n {\n Subnetworks = new[]\n {\n subnetNetwork1.Id,\n },\n },\n });\n\n // redis cluster without endpoint\n var cluster_user_auto_connCluster = new Gcp.Redis.Cluster(\"cluster-user-auto-conn\", new()\n {\n Name = \"cluster-user-auto-conn\",\n ShardCount = 3,\n Region = \"us-central1\",\n ReplicaCount = 0,\n DeletionProtectionEnabled = false,\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = network1.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var forwardingRule1Network2 = new Gcp.Compute.ForwardingRule(\"forwarding_rule1_network2\", new()\n {\n Name = \"fwd1-net2\",\n Region = \"us-central1\",\n IpAddress = ip1Network2.Id,\n LoadBalancingScheme = \"\",\n Network = network2.Id,\n Target = cluster_user_auto_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[0].ServiceAttachment),\n });\n\n var ip2Network2 = new Gcp.Compute.Address(\"ip2_network2\", new()\n {\n Name = \"ip2-net2\",\n Region = \"us-central1\",\n Subnetwork = subnetNetwork2.Id,\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n var forwardingRule2Network2 = new Gcp.Compute.ForwardingRule(\"forwarding_rule2_network2\", new()\n {\n Name = \"fwd2-net2\",\n Region = \"us-central1\",\n IpAddress = ip2Network2.Id,\n LoadBalancingScheme = \"\",\n Network = network2.Id,\n Target = cluster_user_auto_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[1].ServiceAttachment),\n });\n\n var cluster_user_auto_conn = new Gcp.Redis.ClusterUserCreatedConnections(\"cluster-user-auto-conn\", new()\n {\n Name = \"cluster-user-auto-conn\",\n Region = \"us-central1\",\n ClusterEndpoints = new[]\n {\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointArgs\n {\n Connections = new[]\n {\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs\n {\n PscConnection = new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs\n {\n PscConnectionId = forwardingRule1Network2.PscConnectionId,\n Address = ip1Network2.IPAddress,\n ForwardingRule = forwardingRule1Network2.Id,\n Network = network2.Id,\n ServiceAttachment = cluster_user_auto_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[0].ServiceAttachment),\n },\n },\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs\n {\n PscConnection = new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs\n {\n PscConnectionId = forwardingRule2Network2.PscConnectionId,\n Address = ip2Network2.IPAddress,\n ForwardingRule = forwardingRule2Network2.Id,\n Network = network2.Id,\n ServiceAttachment = cluster_user_auto_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[1].ServiceAttachment),\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/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork2, err := compute.NewNetwork(ctx, \"network2\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network2\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnetNetwork2, err := compute.NewSubnetwork(ctx, \"subnet_network2\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-net2\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network2.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip1Network2, err := compute.NewAddress(ctx, \"ip1_network2\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ip1-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: subnetNetwork2.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork1, err := compute.NewNetwork(ctx, \"network1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net1\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnetNetwork1, err := compute.NewSubnetwork(ctx, \"subnet_network1\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-net1\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network1.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(\"scpolicy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\n\t\t\tDescription: pulumi.String(\"my basic service connection policy\"),\n\t\t\tNetwork: network1.ID(),\n\t\t\tPscConfig: \u0026networkconnectivity.ServiceConnectionPolicyPscConfigArgs{\n\t\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\t\tsubnetNetwork1.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// redis cluster without endpoint\n\t\t_, err = redis.NewCluster(ctx, \"cluster-user-auto-conn\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-user-auto-conn\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tReplicaCount: pulumi.Int(0),\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: network1.ID(),\n\t\t\t\t},\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\tforwardingRule1Network2, err := compute.NewForwardingRule(ctx, \"forwarding_rule1_network2\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fwd1-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: ip1Network2.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: network2.ID(),\n\t\t\tTarget: pulumi.String(cluster_user_auto_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\treturn \u0026pscServiceAttachments[0].ServiceAttachment, 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\tip2Network2, err := compute.NewAddress(ctx, \"ip2_network2\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ip2-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: subnetNetwork2.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforwardingRule2Network2, err := compute.NewForwardingRule(ctx, \"forwarding_rule2_network2\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fwd2-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: ip2Network2.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: network2.ID(),\n\t\t\tTarget: pulumi.String(cluster_user_auto_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\treturn \u0026pscServiceAttachments[1].ServiceAttachment, 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 = redis.NewClusterUserCreatedConnections(ctx, \"cluster-user-auto-conn\", \u0026redis.ClusterUserCreatedConnectionsArgs{\n\t\t\tName: pulumi.String(\"cluster-user-auto-conn\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterEndpoints: redis.ClusterUserCreatedConnectionsClusterEndpointArray{\n\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointArgs{\n\t\t\t\t\tConnections: redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArray{\n\t\t\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs{\n\t\t\t\t\t\t\tPscConnection: \u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs{\n\t\t\t\t\t\t\t\tPscConnectionId: forwardingRule1Network2.PscConnectionId,\n\t\t\t\t\t\t\t\tAddress: ip1Network2.Address,\n\t\t\t\t\t\t\t\tForwardingRule: forwardingRule1Network2.ID(),\n\t\t\t\t\t\t\t\tNetwork: network2.ID(),\n\t\t\t\t\t\t\t\tServiceAttachment: cluster_user_auto_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\t\t\t\t\t\treturn \u0026pscServiceAttachments[0].ServiceAttachment, nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs{\n\t\t\t\t\t\t\tPscConnection: \u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs{\n\t\t\t\t\t\t\t\tPscConnectionId: forwardingRule2Network2.PscConnectionId,\n\t\t\t\t\t\t\t\tAddress: ip2Network2.Address,\n\t\t\t\t\t\t\t\tForwardingRule: forwardingRule2Network2.ID(),\n\t\t\t\t\t\t\t\tNetwork: network2.ID(),\n\t\t\t\t\t\t\t\tServiceAttachment: cluster_user_auto_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\t\t\t\t\t\treturn \u0026pscServiceAttachments[1].ServiceAttachment, nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.networkconnectivity.ServiceConnectionPolicy;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicyArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.ServiceConnectionPolicyPscConfigArgs;\nimport com.pulumi.gcp.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPscConfigArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.redis.ClusterUserCreatedConnections;\nimport com.pulumi.gcp.redis.ClusterUserCreatedConnectionsArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterUserCreatedConnectionsClusterEndpointArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network2 = new Network(\"network2\", NetworkArgs.builder()\n .name(\"network2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetNetwork2 = new Subnetwork(\"subnetNetwork2\", SubnetworkArgs.builder()\n .name(\"subnet-net2\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(network2.id())\n .build());\n\n var ip1Network2 = new Address(\"ip1Network2\", AddressArgs.builder()\n .name(\"ip1-net2\")\n .region(\"us-central1\")\n .subnetwork(subnetNetwork2.id())\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n var network1 = new Network(\"network1\", NetworkArgs.builder()\n .name(\"net1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetNetwork1 = new Subnetwork(\"subnetNetwork1\", SubnetworkArgs.builder()\n .name(\"subnet-net1\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(network1.id())\n .build());\n\n var default_ = new ServiceConnectionPolicy(\"default\", ServiceConnectionPolicyArgs.builder()\n .name(\"scpolicy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore-redis\")\n .description(\"my basic service connection policy\")\n .network(network1.id())\n .pscConfig(ServiceConnectionPolicyPscConfigArgs.builder()\n .subnetworks(subnetNetwork1.id())\n .build())\n .build());\n\n // redis cluster without endpoint\n var cluster_user_auto_connCluster = new Cluster(\"cluster-user-auto-connCluster\", ClusterArgs.builder()\n .name(\"cluster-user-auto-conn\")\n .shardCount(3)\n .region(\"us-central1\")\n .replicaCount(0)\n .deletionProtectionEnabled(false)\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(network1.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var forwardingRule1Network2 = new ForwardingRule(\"forwardingRule1Network2\", ForwardingRuleArgs.builder()\n .name(\"fwd1-net2\")\n .region(\"us-central1\")\n .ipAddress(ip1Network2.id())\n .loadBalancingScheme(\"\")\n .network(network2.id())\n .target(cluster_user_auto_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[0].serviceAttachment()))\n .build());\n\n var ip2Network2 = new Address(\"ip2Network2\", AddressArgs.builder()\n .name(\"ip2-net2\")\n .region(\"us-central1\")\n .subnetwork(subnetNetwork2.id())\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n var forwardingRule2Network2 = new ForwardingRule(\"forwardingRule2Network2\", ForwardingRuleArgs.builder()\n .name(\"fwd2-net2\")\n .region(\"us-central1\")\n .ipAddress(ip2Network2.id())\n .loadBalancingScheme(\"\")\n .network(network2.id())\n .target(cluster_user_auto_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[1].serviceAttachment()))\n .build());\n\n var cluster_user_auto_conn = new ClusterUserCreatedConnections(\"cluster-user-auto-conn\", ClusterUserCreatedConnectionsArgs.builder()\n .name(\"cluster-user-auto-conn\")\n .region(\"us-central1\")\n .clusterEndpoints(ClusterUserCreatedConnectionsClusterEndpointArgs.builder()\n .connections( \n ClusterUserCreatedConnectionsClusterEndpointConnectionArgs.builder()\n .pscConnection(ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs.builder()\n .pscConnectionId(forwardingRule1Network2.pscConnectionId())\n .address(ip1Network2.address())\n .forwardingRule(forwardingRule1Network2.id())\n .network(network2.id())\n .serviceAttachment(cluster_user_auto_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[0].serviceAttachment()))\n .build())\n .build(),\n ClusterUserCreatedConnectionsClusterEndpointConnectionArgs.builder()\n .pscConnection(ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs.builder()\n .pscConnectionId(forwardingRule2Network2.pscConnectionId())\n .address(ip2Network2.address())\n .forwardingRule(forwardingRule2Network2.id())\n .network(network2.id())\n .serviceAttachment(cluster_user_auto_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[1].serviceAttachment()))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-user-auto-conn:\n type: gcp:redis:ClusterUserCreatedConnections\n properties:\n name: cluster-user-auto-conn\n region: us-central1\n clusterEndpoints:\n - connections:\n - pscConnection:\n pscConnectionId: ${forwardingRule1Network2.pscConnectionId}\n address: ${ip1Network2.address}\n forwardingRule: ${forwardingRule1Network2.id}\n network: ${network2.id}\n serviceAttachment: ${[\"cluster-user-auto-connCluster\"].pscServiceAttachments[0].serviceAttachment}\n - pscConnection:\n pscConnectionId: ${forwardingRule2Network2.pscConnectionId}\n address: ${ip2Network2.address}\n forwardingRule: ${forwardingRule2Network2.id}\n network: ${network2.id}\n serviceAttachment: ${[\"cluster-user-auto-connCluster\"].pscServiceAttachments[1].serviceAttachment}\n forwardingRule1Network2:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule1_network2\n properties:\n name: fwd1-net2\n region: us-central1\n ipAddress: ${ip1Network2.id}\n loadBalancingScheme: \"\"\n network: ${network2.id}\n target: ${[\"cluster-user-auto-connCluster\"].pscServiceAttachments[0].serviceAttachment}\n forwardingRule2Network2:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule2_network2\n properties:\n name: fwd2-net2\n region: us-central1\n ipAddress: ${ip2Network2.id}\n loadBalancingScheme: \"\"\n network: ${network2.id}\n target: ${[\"cluster-user-auto-connCluster\"].pscServiceAttachments[1].serviceAttachment}\n ip1Network2:\n type: gcp:compute:Address\n name: ip1_network2\n properties:\n name: ip1-net2\n region: us-central1\n subnetwork: ${subnetNetwork2.id}\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n ip2Network2:\n type: gcp:compute:Address\n name: ip2_network2\n properties:\n name: ip2-net2\n region: us-central1\n subnetwork: ${subnetNetwork2.id}\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n subnetNetwork2:\n type: gcp:compute:Subnetwork\n name: subnet_network2\n properties:\n name: subnet-net2\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${network2.id}\n network2:\n type: gcp:compute:Network\n properties:\n name: network2\n autoCreateSubnetworks: false\n # redis cluster without endpoint\n cluster-user-auto-connCluster:\n type: gcp:redis:Cluster\n name: cluster-user-auto-conn\n properties:\n name: cluster-user-auto-conn\n shardCount: 3\n region: us-central1\n replicaCount: 0\n deletionProtectionEnabled: false\n pscConfigs:\n - network: ${network1.id}\n options:\n dependsOn:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: scpolicy\n location: us-central1\n serviceClass: gcp-memorystore-redis\n description: my basic service connection policy\n network: ${network1.id}\n pscConfig:\n subnetworks:\n - ${subnetNetwork1.id}\n subnetNetwork1:\n type: gcp:compute:Subnetwork\n name: subnet_network1\n properties:\n name: subnet-net1\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${network1.id}\n network1:\n type: gcp:compute:Network\n properties:\n name: net1\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nClusterUserCreatedConnections can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/clusters/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ClusterUserCreatedConnections can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:redis/clusterUserCreatedConnections:ClusterUserCreatedConnections default projects/{{project}}/locations/{{region}}/clusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/clusterUserCreatedConnections:ClusterUserCreatedConnections default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/clusterUserCreatedConnections:ClusterUserCreatedConnections default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/clusterUserCreatedConnections:ClusterUserCreatedConnections default {{name}}\n```\n\n", + "description": "## Example Usage\n\n### Redis Cluster User Created Connections\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network1 = new gcp.compute.Network(\"network1\", {\n name: \"net1\",\n autoCreateSubnetworks: false,\n});\nconst subnetNetwork1 = new gcp.compute.Subnetwork(\"subnet_network1\", {\n name: \"subnet-net1\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: network1.id,\n});\nconst ip1Network1 = new gcp.compute.Address(\"ip1_network1\", {\n name: \"ip1-net1\",\n region: \"us-central1\",\n subnetwork: subnetNetwork1.id,\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\n// redis cluster without endpoint\nconst cluster_user_connCluster = new gcp.redis.Cluster(\"cluster-user-conn\", {\n name: \"cluster-user-conn\",\n shardCount: 3,\n region: \"us-central1\",\n replicaCount: 0,\n deletionProtectionEnabled: false,\n});\nconst forwardingRule1Network1 = new gcp.compute.ForwardingRule(\"forwarding_rule1_network1\", {\n name: \"fwd1-net1\",\n region: \"us-central1\",\n ipAddress: ip1Network1.id,\n loadBalancingScheme: \"\",\n network: network1.id,\n target: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[0].serviceAttachment),\n});\nconst ip2Network1 = new gcp.compute.Address(\"ip2_network1\", {\n name: \"ip2-net1\",\n region: \"us-central1\",\n subnetwork: subnetNetwork1.id,\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\nconst forwardingRule2Network1 = new gcp.compute.ForwardingRule(\"forwarding_rule2_network1\", {\n name: \"fwd2-net1\",\n region: \"us-central1\",\n ipAddress: ip2Network1.id,\n loadBalancingScheme: \"\",\n network: network1.id,\n target: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[1].serviceAttachment),\n});\nconst network2 = new gcp.compute.Network(\"network2\", {\n name: \"network2\",\n autoCreateSubnetworks: false,\n});\nconst subnetNetwork2 = new gcp.compute.Subnetwork(\"subnet_network2\", {\n name: \"subnet-net2\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: network2.id,\n});\nconst ip1Network2 = new gcp.compute.Address(\"ip1_network2\", {\n name: \"ip1-net2\",\n region: \"us-central1\",\n subnetwork: subnetNetwork2.id,\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\nconst forwardingRule1Network2 = new gcp.compute.ForwardingRule(\"forwarding_rule1_network2\", {\n name: \"fwd1-net2\",\n region: \"us-central1\",\n ipAddress: ip1Network2.id,\n loadBalancingScheme: \"\",\n network: network2.id,\n target: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[0].serviceAttachment),\n});\nconst ip2Network2 = new gcp.compute.Address(\"ip2_network2\", {\n name: \"ip2-net2\",\n region: \"us-central1\",\n subnetwork: subnetNetwork2.id,\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\nconst forwardingRule2Network2 = new gcp.compute.ForwardingRule(\"forwarding_rule2_network2\", {\n name: \"fwd2-net2\",\n region: \"us-central1\",\n ipAddress: ip2Network2.id,\n loadBalancingScheme: \"\",\n network: network2.id,\n target: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[1].serviceAttachment),\n});\nconst project = gcp.organizations.getProject({});\nconst cluster_user_conn = new gcp.redis.ClusterUserCreatedConnections(\"cluster-user-conn\", {\n name: \"cluster-user-conn\",\n region: \"us-central1\",\n clusterEndpoints: [\n {\n connections: [\n {\n pscConnection: {\n pscConnectionId: forwardingRule1Network1.pscConnectionId,\n address: ip1Network1.address,\n forwardingRule: forwardingRule1Network1.id,\n network: network1.id,\n projectId: project.then(project =\u003e project.projectId),\n serviceAttachment: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[0].serviceAttachment),\n },\n },\n {\n pscConnection: {\n pscConnectionId: forwardingRule2Network1.pscConnectionId,\n address: ip2Network1.address,\n forwardingRule: forwardingRule2Network1.id,\n network: network1.id,\n serviceAttachment: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[1].serviceAttachment),\n },\n },\n ],\n },\n {\n connections: [\n {\n pscConnection: {\n pscConnectionId: forwardingRule1Network2.pscConnectionId,\n address: ip1Network2.address,\n forwardingRule: forwardingRule1Network2.id,\n network: network2.id,\n serviceAttachment: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[0].serviceAttachment),\n },\n },\n {\n pscConnection: {\n pscConnectionId: forwardingRule2Network2.pscConnectionId,\n address: ip2Network2.address,\n forwardingRule: forwardingRule2Network2.id,\n network: network2.id,\n serviceAttachment: cluster_user_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[1].serviceAttachment),\n },\n },\n ],\n },\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork1 = gcp.compute.Network(\"network1\",\n name=\"net1\",\n auto_create_subnetworks=False)\nsubnet_network1 = gcp.compute.Subnetwork(\"subnet_network1\",\n name=\"subnet-net1\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=network1.id)\nip1_network1 = gcp.compute.Address(\"ip1_network1\",\n name=\"ip1-net1\",\n region=\"us-central1\",\n subnetwork=subnet_network1.id,\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\n# redis cluster without endpoint\ncluster_user_conn_cluster = gcp.redis.Cluster(\"cluster-user-conn\",\n name=\"cluster-user-conn\",\n shard_count=3,\n region=\"us-central1\",\n replica_count=0,\n deletion_protection_enabled=False)\nforwarding_rule1_network1 = gcp.compute.ForwardingRule(\"forwarding_rule1_network1\",\n name=\"fwd1-net1\",\n region=\"us-central1\",\n ip_address=ip1_network1.id,\n load_balancing_scheme=\"\",\n network=network1.id,\n target=cluster_user_conn_cluster.psc_service_attachments[0].service_attachment)\nip2_network1 = gcp.compute.Address(\"ip2_network1\",\n name=\"ip2-net1\",\n region=\"us-central1\",\n subnetwork=subnet_network1.id,\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\nforwarding_rule2_network1 = gcp.compute.ForwardingRule(\"forwarding_rule2_network1\",\n name=\"fwd2-net1\",\n region=\"us-central1\",\n ip_address=ip2_network1.id,\n load_balancing_scheme=\"\",\n network=network1.id,\n target=cluster_user_conn_cluster.psc_service_attachments[1].service_attachment)\nnetwork2 = gcp.compute.Network(\"network2\",\n name=\"network2\",\n auto_create_subnetworks=False)\nsubnet_network2 = gcp.compute.Subnetwork(\"subnet_network2\",\n name=\"subnet-net2\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=network2.id)\nip1_network2 = gcp.compute.Address(\"ip1_network2\",\n name=\"ip1-net2\",\n region=\"us-central1\",\n subnetwork=subnet_network2.id,\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\nforwarding_rule1_network2 = gcp.compute.ForwardingRule(\"forwarding_rule1_network2\",\n name=\"fwd1-net2\",\n region=\"us-central1\",\n ip_address=ip1_network2.id,\n load_balancing_scheme=\"\",\n network=network2.id,\n target=cluster_user_conn_cluster.psc_service_attachments[0].service_attachment)\nip2_network2 = gcp.compute.Address(\"ip2_network2\",\n name=\"ip2-net2\",\n region=\"us-central1\",\n subnetwork=subnet_network2.id,\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\nforwarding_rule2_network2 = gcp.compute.ForwardingRule(\"forwarding_rule2_network2\",\n name=\"fwd2-net2\",\n region=\"us-central1\",\n ip_address=ip2_network2.id,\n load_balancing_scheme=\"\",\n network=network2.id,\n target=cluster_user_conn_cluster.psc_service_attachments[1].service_attachment)\nproject = gcp.organizations.get_project()\ncluster_user_conn = gcp.redis.ClusterUserCreatedConnections(\"cluster-user-conn\",\n name=\"cluster-user-conn\",\n region=\"us-central1\",\n cluster_endpoints=[\n {\n \"connections\": [\n {\n \"psc_connection\": {\n \"psc_connection_id\": forwarding_rule1_network1.psc_connection_id,\n \"address\": ip1_network1.address,\n \"forwarding_rule\": forwarding_rule1_network1.id,\n \"network\": network1.id,\n \"project_id\": project.project_id,\n \"service_attachment\": cluster_user_conn_cluster.psc_service_attachments[0].service_attachment,\n },\n },\n {\n \"psc_connection\": {\n \"psc_connection_id\": forwarding_rule2_network1.psc_connection_id,\n \"address\": ip2_network1.address,\n \"forwarding_rule\": forwarding_rule2_network1.id,\n \"network\": network1.id,\n \"service_attachment\": cluster_user_conn_cluster.psc_service_attachments[1].service_attachment,\n },\n },\n ],\n },\n {\n \"connections\": [\n {\n \"psc_connection\": {\n \"psc_connection_id\": forwarding_rule1_network2.psc_connection_id,\n \"address\": ip1_network2.address,\n \"forwarding_rule\": forwarding_rule1_network2.id,\n \"network\": network2.id,\n \"service_attachment\": cluster_user_conn_cluster.psc_service_attachments[0].service_attachment,\n },\n },\n {\n \"psc_connection\": {\n \"psc_connection_id\": forwarding_rule2_network2.psc_connection_id,\n \"address\": ip2_network2.address,\n \"forwarding_rule\": forwarding_rule2_network2.id,\n \"network\": network2.id,\n \"service_attachment\": cluster_user_conn_cluster.psc_service_attachments[1].service_attachment,\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 network1 = new Gcp.Compute.Network(\"network1\", new()\n {\n Name = \"net1\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetNetwork1 = new Gcp.Compute.Subnetwork(\"subnet_network1\", new()\n {\n Name = \"subnet-net1\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = network1.Id,\n });\n\n var ip1Network1 = new Gcp.Compute.Address(\"ip1_network1\", new()\n {\n Name = \"ip1-net1\",\n Region = \"us-central1\",\n Subnetwork = subnetNetwork1.Id,\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n // redis cluster without endpoint\n var cluster_user_connCluster = new Gcp.Redis.Cluster(\"cluster-user-conn\", new()\n {\n Name = \"cluster-user-conn\",\n ShardCount = 3,\n Region = \"us-central1\",\n ReplicaCount = 0,\n DeletionProtectionEnabled = false,\n });\n\n var forwardingRule1Network1 = new Gcp.Compute.ForwardingRule(\"forwarding_rule1_network1\", new()\n {\n Name = \"fwd1-net1\",\n Region = \"us-central1\",\n IpAddress = ip1Network1.Id,\n LoadBalancingScheme = \"\",\n Network = network1.Id,\n Target = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[0].ServiceAttachment),\n });\n\n var ip2Network1 = new Gcp.Compute.Address(\"ip2_network1\", new()\n {\n Name = \"ip2-net1\",\n Region = \"us-central1\",\n Subnetwork = subnetNetwork1.Id,\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n var forwardingRule2Network1 = new Gcp.Compute.ForwardingRule(\"forwarding_rule2_network1\", new()\n {\n Name = \"fwd2-net1\",\n Region = \"us-central1\",\n IpAddress = ip2Network1.Id,\n LoadBalancingScheme = \"\",\n Network = network1.Id,\n Target = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[1].ServiceAttachment),\n });\n\n var network2 = new Gcp.Compute.Network(\"network2\", new()\n {\n Name = \"network2\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetNetwork2 = new Gcp.Compute.Subnetwork(\"subnet_network2\", new()\n {\n Name = \"subnet-net2\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = network2.Id,\n });\n\n var ip1Network2 = new Gcp.Compute.Address(\"ip1_network2\", new()\n {\n Name = \"ip1-net2\",\n Region = \"us-central1\",\n Subnetwork = subnetNetwork2.Id,\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n var forwardingRule1Network2 = new Gcp.Compute.ForwardingRule(\"forwarding_rule1_network2\", new()\n {\n Name = \"fwd1-net2\",\n Region = \"us-central1\",\n IpAddress = ip1Network2.Id,\n LoadBalancingScheme = \"\",\n Network = network2.Id,\n Target = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[0].ServiceAttachment),\n });\n\n var ip2Network2 = new Gcp.Compute.Address(\"ip2_network2\", new()\n {\n Name = \"ip2-net2\",\n Region = \"us-central1\",\n Subnetwork = subnetNetwork2.Id,\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n var forwardingRule2Network2 = new Gcp.Compute.ForwardingRule(\"forwarding_rule2_network2\", new()\n {\n Name = \"fwd2-net2\",\n Region = \"us-central1\",\n IpAddress = ip2Network2.Id,\n LoadBalancingScheme = \"\",\n Network = network2.Id,\n Target = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[1].ServiceAttachment),\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cluster_user_conn = new Gcp.Redis.ClusterUserCreatedConnections(\"cluster-user-conn\", new()\n {\n Name = \"cluster-user-conn\",\n Region = \"us-central1\",\n ClusterEndpoints = new[]\n {\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointArgs\n {\n Connections = new[]\n {\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs\n {\n PscConnection = new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs\n {\n PscConnectionId = forwardingRule1Network1.PscConnectionId,\n Address = ip1Network1.IPAddress,\n ForwardingRule = forwardingRule1Network1.Id,\n Network = network1.Id,\n ProjectId = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n ServiceAttachment = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[0].ServiceAttachment),\n },\n },\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs\n {\n PscConnection = new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs\n {\n PscConnectionId = forwardingRule2Network1.PscConnectionId,\n Address = ip2Network1.IPAddress,\n ForwardingRule = forwardingRule2Network1.Id,\n Network = network1.Id,\n ServiceAttachment = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[1].ServiceAttachment),\n },\n },\n },\n },\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointArgs\n {\n Connections = new[]\n {\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs\n {\n PscConnection = new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs\n {\n PscConnectionId = forwardingRule1Network2.PscConnectionId,\n Address = ip1Network2.IPAddress,\n ForwardingRule = forwardingRule1Network2.Id,\n Network = network2.Id,\n ServiceAttachment = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[0].ServiceAttachment),\n },\n },\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs\n {\n PscConnection = new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs\n {\n PscConnectionId = forwardingRule2Network2.PscConnectionId,\n Address = ip2Network2.IPAddress,\n ForwardingRule = forwardingRule2Network2.Id,\n Network = network2.Id,\n ServiceAttachment = cluster_user_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[1].ServiceAttachment),\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/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork1, err := compute.NewNetwork(ctx, \"network1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net1\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnetNetwork1, err := compute.NewSubnetwork(ctx, \"subnet_network1\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-net1\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip1Network1, err := compute.NewAddress(ctx, \"ip1_network1\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ip1-net1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: subnetNetwork1.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// redis cluster without endpoint\n\t\tcluster_user_connCluster, err := redis.NewCluster(ctx, \"cluster-user-conn\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-user-conn\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tReplicaCount: pulumi.Int(0),\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforwardingRule1Network1, err := compute.NewForwardingRule(ctx, \"forwarding_rule1_network1\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fwd1-net1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: ip1Network1.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: network1.ID(),\n\t\t\tTarget: pulumi.String(cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\treturn \u0026pscServiceAttachments[0].ServiceAttachment, 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\tip2Network1, err := compute.NewAddress(ctx, \"ip2_network1\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ip2-net1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: subnetNetwork1.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforwardingRule2Network1, err := compute.NewForwardingRule(ctx, \"forwarding_rule2_network1\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fwd2-net1\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: ip2Network1.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: network1.ID(),\n\t\t\tTarget: pulumi.String(cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\treturn \u0026pscServiceAttachments[1].ServiceAttachment, 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\tnetwork2, err := compute.NewNetwork(ctx, \"network2\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network2\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnetNetwork2, err := compute.NewSubnetwork(ctx, \"subnet_network2\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-net2\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network2.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip1Network2, err := compute.NewAddress(ctx, \"ip1_network2\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ip1-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: subnetNetwork2.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforwardingRule1Network2, err := compute.NewForwardingRule(ctx, \"forwarding_rule1_network2\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fwd1-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: ip1Network2.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: network2.ID(),\n\t\t\tTarget: pulumi.String(cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\treturn \u0026pscServiceAttachments[0].ServiceAttachment, 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\tip2Network2, err := compute.NewAddress(ctx, \"ip2_network2\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ip2-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: subnetNetwork2.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforwardingRule2Network2, err := compute.NewForwardingRule(ctx, \"forwarding_rule2_network2\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fwd2-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: ip2Network2.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: network2.ID(),\n\t\t\tTarget: pulumi.String(cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\treturn \u0026pscServiceAttachments[1].ServiceAttachment, 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\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 = redis.NewClusterUserCreatedConnections(ctx, \"cluster-user-conn\", \u0026redis.ClusterUserCreatedConnectionsArgs{\n\t\t\tName: pulumi.String(\"cluster-user-conn\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterEndpoints: redis.ClusterUserCreatedConnectionsClusterEndpointArray{\n\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointArgs{\n\t\t\t\t\tConnections: redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArray{\n\t\t\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs{\n\t\t\t\t\t\t\tPscConnection: \u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs{\n\t\t\t\t\t\t\t\tPscConnectionId: forwardingRule1Network1.PscConnectionId,\n\t\t\t\t\t\t\t\tAddress: ip1Network1.Address,\n\t\t\t\t\t\t\t\tForwardingRule: forwardingRule1Network1.ID(),\n\t\t\t\t\t\t\t\tNetwork: network1.ID(),\n\t\t\t\t\t\t\t\tProjectId: pulumi.String(project.ProjectId),\n\t\t\t\t\t\t\t\tServiceAttachment: cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\t\t\t\t\t\treturn \u0026pscServiceAttachments[0].ServiceAttachment, nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs{\n\t\t\t\t\t\t\tPscConnection: \u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs{\n\t\t\t\t\t\t\t\tPscConnectionId: forwardingRule2Network1.PscConnectionId,\n\t\t\t\t\t\t\t\tAddress: ip2Network1.Address,\n\t\t\t\t\t\t\t\tForwardingRule: forwardingRule2Network1.ID(),\n\t\t\t\t\t\t\t\tNetwork: network1.ID(),\n\t\t\t\t\t\t\t\tServiceAttachment: cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\t\t\t\t\t\treturn \u0026pscServiceAttachments[1].ServiceAttachment, nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\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\u0026redis.ClusterUserCreatedConnectionsClusterEndpointArgs{\n\t\t\t\t\tConnections: redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArray{\n\t\t\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs{\n\t\t\t\t\t\t\tPscConnection: \u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs{\n\t\t\t\t\t\t\t\tPscConnectionId: forwardingRule1Network2.PscConnectionId,\n\t\t\t\t\t\t\t\tAddress: ip1Network2.Address,\n\t\t\t\t\t\t\t\tForwardingRule: forwardingRule1Network2.ID(),\n\t\t\t\t\t\t\t\tNetwork: network2.ID(),\n\t\t\t\t\t\t\t\tServiceAttachment: cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\t\t\t\t\t\treturn \u0026pscServiceAttachments[0].ServiceAttachment, nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs{\n\t\t\t\t\t\t\tPscConnection: \u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs{\n\t\t\t\t\t\t\t\tPscConnectionId: forwardingRule2Network2.PscConnectionId,\n\t\t\t\t\t\t\t\tAddress: ip2Network2.Address,\n\t\t\t\t\t\t\t\tForwardingRule: forwardingRule2Network2.ID(),\n\t\t\t\t\t\t\t\tNetwork: network2.ID(),\n\t\t\t\t\t\t\t\tServiceAttachment: cluster_user_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\t\t\t\t\t\treturn \u0026pscServiceAttachments[1].ServiceAttachment, nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.redis.ClusterUserCreatedConnections;\nimport com.pulumi.gcp.redis.ClusterUserCreatedConnectionsArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterUserCreatedConnectionsClusterEndpointArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network1 = new Network(\"network1\", NetworkArgs.builder()\n .name(\"net1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetNetwork1 = new Subnetwork(\"subnetNetwork1\", SubnetworkArgs.builder()\n .name(\"subnet-net1\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(network1.id())\n .build());\n\n var ip1Network1 = new Address(\"ip1Network1\", AddressArgs.builder()\n .name(\"ip1-net1\")\n .region(\"us-central1\")\n .subnetwork(subnetNetwork1.id())\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n // redis cluster without endpoint\n var cluster_user_connCluster = new Cluster(\"cluster-user-connCluster\", ClusterArgs.builder()\n .name(\"cluster-user-conn\")\n .shardCount(3)\n .region(\"us-central1\")\n .replicaCount(0)\n .deletionProtectionEnabled(false)\n .build());\n\n var forwardingRule1Network1 = new ForwardingRule(\"forwardingRule1Network1\", ForwardingRuleArgs.builder()\n .name(\"fwd1-net1\")\n .region(\"us-central1\")\n .ipAddress(ip1Network1.id())\n .loadBalancingScheme(\"\")\n .network(network1.id())\n .target(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[0].serviceAttachment()))\n .build());\n\n var ip2Network1 = new Address(\"ip2Network1\", AddressArgs.builder()\n .name(\"ip2-net1\")\n .region(\"us-central1\")\n .subnetwork(subnetNetwork1.id())\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n var forwardingRule2Network1 = new ForwardingRule(\"forwardingRule2Network1\", ForwardingRuleArgs.builder()\n .name(\"fwd2-net1\")\n .region(\"us-central1\")\n .ipAddress(ip2Network1.id())\n .loadBalancingScheme(\"\")\n .network(network1.id())\n .target(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[1].serviceAttachment()))\n .build());\n\n var network2 = new Network(\"network2\", NetworkArgs.builder()\n .name(\"network2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetNetwork2 = new Subnetwork(\"subnetNetwork2\", SubnetworkArgs.builder()\n .name(\"subnet-net2\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(network2.id())\n .build());\n\n var ip1Network2 = new Address(\"ip1Network2\", AddressArgs.builder()\n .name(\"ip1-net2\")\n .region(\"us-central1\")\n .subnetwork(subnetNetwork2.id())\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n var forwardingRule1Network2 = new ForwardingRule(\"forwardingRule1Network2\", ForwardingRuleArgs.builder()\n .name(\"fwd1-net2\")\n .region(\"us-central1\")\n .ipAddress(ip1Network2.id())\n .loadBalancingScheme(\"\")\n .network(network2.id())\n .target(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[0].serviceAttachment()))\n .build());\n\n var ip2Network2 = new Address(\"ip2Network2\", AddressArgs.builder()\n .name(\"ip2-net2\")\n .region(\"us-central1\")\n .subnetwork(subnetNetwork2.id())\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n var forwardingRule2Network2 = new ForwardingRule(\"forwardingRule2Network2\", ForwardingRuleArgs.builder()\n .name(\"fwd2-net2\")\n .region(\"us-central1\")\n .ipAddress(ip2Network2.id())\n .loadBalancingScheme(\"\")\n .network(network2.id())\n .target(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[1].serviceAttachment()))\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var cluster_user_conn = new ClusterUserCreatedConnections(\"cluster-user-conn\", ClusterUserCreatedConnectionsArgs.builder()\n .name(\"cluster-user-conn\")\n .region(\"us-central1\")\n .clusterEndpoints( \n ClusterUserCreatedConnectionsClusterEndpointArgs.builder()\n .connections( \n ClusterUserCreatedConnectionsClusterEndpointConnectionArgs.builder()\n .pscConnection(ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs.builder()\n .pscConnectionId(forwardingRule1Network1.pscConnectionId())\n .address(ip1Network1.address())\n .forwardingRule(forwardingRule1Network1.id())\n .network(network1.id())\n .projectId(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .serviceAttachment(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[0].serviceAttachment()))\n .build())\n .build(),\n ClusterUserCreatedConnectionsClusterEndpointConnectionArgs.builder()\n .pscConnection(ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs.builder()\n .pscConnectionId(forwardingRule2Network1.pscConnectionId())\n .address(ip2Network1.address())\n .forwardingRule(forwardingRule2Network1.id())\n .network(network1.id())\n .serviceAttachment(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[1].serviceAttachment()))\n .build())\n .build())\n .build(),\n ClusterUserCreatedConnectionsClusterEndpointArgs.builder()\n .connections( \n ClusterUserCreatedConnectionsClusterEndpointConnectionArgs.builder()\n .pscConnection(ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs.builder()\n .pscConnectionId(forwardingRule1Network2.pscConnectionId())\n .address(ip1Network2.address())\n .forwardingRule(forwardingRule1Network2.id())\n .network(network2.id())\n .serviceAttachment(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[0].serviceAttachment()))\n .build())\n .build(),\n ClusterUserCreatedConnectionsClusterEndpointConnectionArgs.builder()\n .pscConnection(ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs.builder()\n .pscConnectionId(forwardingRule2Network2.pscConnectionId())\n .address(ip2Network2.address())\n .forwardingRule(forwardingRule2Network2.id())\n .network(network2.id())\n .serviceAttachment(cluster_user_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[1].serviceAttachment()))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-user-conn:\n type: gcp:redis:ClusterUserCreatedConnections\n properties:\n name: cluster-user-conn\n region: us-central1\n clusterEndpoints:\n - connections:\n - pscConnection:\n pscConnectionId: ${forwardingRule1Network1.pscConnectionId}\n address: ${ip1Network1.address}\n forwardingRule: ${forwardingRule1Network1.id}\n network: ${network1.id}\n projectId: ${project.projectId}\n serviceAttachment: ${[\"cluster-user-connCluster\"].pscServiceAttachments[0].serviceAttachment}\n - pscConnection:\n pscConnectionId: ${forwardingRule2Network1.pscConnectionId}\n address: ${ip2Network1.address}\n forwardingRule: ${forwardingRule2Network1.id}\n network: ${network1.id}\n serviceAttachment: ${[\"cluster-user-connCluster\"].pscServiceAttachments[1].serviceAttachment}\n - connections:\n - pscConnection:\n pscConnectionId: ${forwardingRule1Network2.pscConnectionId}\n address: ${ip1Network2.address}\n forwardingRule: ${forwardingRule1Network2.id}\n network: ${network2.id}\n serviceAttachment: ${[\"cluster-user-connCluster\"].pscServiceAttachments[0].serviceAttachment}\n - pscConnection:\n pscConnectionId: ${forwardingRule2Network2.pscConnectionId}\n address: ${ip2Network2.address}\n forwardingRule: ${forwardingRule2Network2.id}\n network: ${network2.id}\n serviceAttachment: ${[\"cluster-user-connCluster\"].pscServiceAttachments[1].serviceAttachment}\n forwardingRule1Network1:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule1_network1\n properties:\n name: fwd1-net1\n region: us-central1\n ipAddress: ${ip1Network1.id}\n loadBalancingScheme: \"\"\n network: ${network1.id}\n target: ${[\"cluster-user-connCluster\"].pscServiceAttachments[0].serviceAttachment}\n forwardingRule2Network1:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule2_network1\n properties:\n name: fwd2-net1\n region: us-central1\n ipAddress: ${ip2Network1.id}\n loadBalancingScheme: \"\"\n network: ${network1.id}\n target: ${[\"cluster-user-connCluster\"].pscServiceAttachments[1].serviceAttachment}\n ip1Network1:\n type: gcp:compute:Address\n name: ip1_network1\n properties:\n name: ip1-net1\n region: us-central1\n subnetwork: ${subnetNetwork1.id}\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n ip2Network1:\n type: gcp:compute:Address\n name: ip2_network1\n properties:\n name: ip2-net1\n region: us-central1\n subnetwork: ${subnetNetwork1.id}\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n subnetNetwork1:\n type: gcp:compute:Subnetwork\n name: subnet_network1\n properties:\n name: subnet-net1\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${network1.id}\n network1:\n type: gcp:compute:Network\n properties:\n name: net1\n autoCreateSubnetworks: false\n forwardingRule1Network2:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule1_network2\n properties:\n name: fwd1-net2\n region: us-central1\n ipAddress: ${ip1Network2.id}\n loadBalancingScheme: \"\"\n network: ${network2.id}\n target: ${[\"cluster-user-connCluster\"].pscServiceAttachments[0].serviceAttachment}\n forwardingRule2Network2:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule2_network2\n properties:\n name: fwd2-net2\n region: us-central1\n ipAddress: ${ip2Network2.id}\n loadBalancingScheme: \"\"\n network: ${network2.id}\n target: ${[\"cluster-user-connCluster\"].pscServiceAttachments[1].serviceAttachment}\n ip1Network2:\n type: gcp:compute:Address\n name: ip1_network2\n properties:\n name: ip1-net2\n region: us-central1\n subnetwork: ${subnetNetwork2.id}\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n ip2Network2:\n type: gcp:compute:Address\n name: ip2_network2\n properties:\n name: ip2-net2\n region: us-central1\n subnetwork: ${subnetNetwork2.id}\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n subnetNetwork2:\n type: gcp:compute:Subnetwork\n name: subnet_network2\n properties:\n name: subnet-net2\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${network2.id}\n network2:\n type: gcp:compute:Network\n properties:\n name: network2\n autoCreateSubnetworks: false\n # redis cluster without endpoint\n cluster-user-connCluster:\n type: gcp:redis:Cluster\n name: cluster-user-conn\n properties:\n name: cluster-user-conn\n shardCount: 3\n region: us-central1\n replicaCount: 0\n deletionProtectionEnabled: false\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Cluster User And Auto Created Connections\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network2 = new gcp.compute.Network(\"network2\", {\n name: \"network2\",\n autoCreateSubnetworks: false,\n});\nconst subnetNetwork2 = new gcp.compute.Subnetwork(\"subnet_network2\", {\n name: \"subnet-net2\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: network2.id,\n});\nconst ip1Network2 = new gcp.compute.Address(\"ip1_network2\", {\n name: \"ip1-net2\",\n region: \"us-central1\",\n subnetwork: subnetNetwork2.id,\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\nconst network1 = new gcp.compute.Network(\"network1\", {\n name: \"net1\",\n autoCreateSubnetworks: false,\n});\nconst subnetNetwork1 = new gcp.compute.Subnetwork(\"subnet_network1\", {\n name: \"subnet-net1\",\n ipCidrRange: \"10.0.0.248/29\",\n region: \"us-central1\",\n network: network1.id,\n});\nconst _default = new gcp.networkconnectivity.ServiceConnectionPolicy(\"default\", {\n name: \"scpolicy\",\n location: \"us-central1\",\n serviceClass: \"gcp-memorystore-redis\",\n description: \"my basic service connection policy\",\n network: network1.id,\n pscConfig: {\n subnetworks: [subnetNetwork1.id],\n },\n});\n// redis cluster without endpoint\nconst cluster_user_auto_connCluster = new gcp.redis.Cluster(\"cluster-user-auto-conn\", {\n name: \"cluster-user-auto-conn\",\n shardCount: 3,\n region: \"us-central1\",\n replicaCount: 0,\n deletionProtectionEnabled: false,\n pscConfigs: [{\n network: network1.id,\n }],\n}, {\n dependsOn: [_default],\n});\nconst forwardingRule1Network2 = new gcp.compute.ForwardingRule(\"forwarding_rule1_network2\", {\n name: \"fwd1-net2\",\n region: \"us-central1\",\n ipAddress: ip1Network2.id,\n loadBalancingScheme: \"\",\n network: network2.id,\n target: cluster_user_auto_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[0].serviceAttachment),\n});\nconst ip2Network2 = new gcp.compute.Address(\"ip2_network2\", {\n name: \"ip2-net2\",\n region: \"us-central1\",\n subnetwork: subnetNetwork2.id,\n addressType: \"INTERNAL\",\n purpose: \"GCE_ENDPOINT\",\n});\nconst forwardingRule2Network2 = new gcp.compute.ForwardingRule(\"forwarding_rule2_network2\", {\n name: \"fwd2-net2\",\n region: \"us-central1\",\n ipAddress: ip2Network2.id,\n loadBalancingScheme: \"\",\n network: network2.id,\n target: cluster_user_auto_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[1].serviceAttachment),\n});\nconst cluster_user_auto_conn = new gcp.redis.ClusterUserCreatedConnections(\"cluster-user-auto-conn\", {\n name: \"cluster-user-auto-conn\",\n region: \"us-central1\",\n clusterEndpoints: [{\n connections: [\n {\n pscConnection: {\n pscConnectionId: forwardingRule1Network2.pscConnectionId,\n address: ip1Network2.address,\n forwardingRule: forwardingRule1Network2.id,\n network: network2.id,\n serviceAttachment: cluster_user_auto_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[0].serviceAttachment),\n },\n },\n {\n pscConnection: {\n pscConnectionId: forwardingRule2Network2.pscConnectionId,\n address: ip2Network2.address,\n forwardingRule: forwardingRule2Network2.id,\n network: network2.id,\n serviceAttachment: cluster_user_auto_connCluster.pscServiceAttachments.apply(pscServiceAttachments =\u003e pscServiceAttachments[1].serviceAttachment),\n },\n },\n ],\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork2 = gcp.compute.Network(\"network2\",\n name=\"network2\",\n auto_create_subnetworks=False)\nsubnet_network2 = gcp.compute.Subnetwork(\"subnet_network2\",\n name=\"subnet-net2\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=network2.id)\nip1_network2 = gcp.compute.Address(\"ip1_network2\",\n name=\"ip1-net2\",\n region=\"us-central1\",\n subnetwork=subnet_network2.id,\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\nnetwork1 = gcp.compute.Network(\"network1\",\n name=\"net1\",\n auto_create_subnetworks=False)\nsubnet_network1 = gcp.compute.Subnetwork(\"subnet_network1\",\n name=\"subnet-net1\",\n ip_cidr_range=\"10.0.0.248/29\",\n region=\"us-central1\",\n network=network1.id)\ndefault = gcp.networkconnectivity.ServiceConnectionPolicy(\"default\",\n name=\"scpolicy\",\n location=\"us-central1\",\n service_class=\"gcp-memorystore-redis\",\n description=\"my basic service connection policy\",\n network=network1.id,\n psc_config={\n \"subnetworks\": [subnet_network1.id],\n })\n# redis cluster without endpoint\ncluster_user_auto_conn_cluster = gcp.redis.Cluster(\"cluster-user-auto-conn\",\n name=\"cluster-user-auto-conn\",\n shard_count=3,\n region=\"us-central1\",\n replica_count=0,\n deletion_protection_enabled=False,\n psc_configs=[{\n \"network\": network1.id,\n }],\n opts = pulumi.ResourceOptions(depends_on=[default]))\nforwarding_rule1_network2 = gcp.compute.ForwardingRule(\"forwarding_rule1_network2\",\n name=\"fwd1-net2\",\n region=\"us-central1\",\n ip_address=ip1_network2.id,\n load_balancing_scheme=\"\",\n network=network2.id,\n target=cluster_user_auto_conn_cluster.psc_service_attachments[0].service_attachment)\nip2_network2 = gcp.compute.Address(\"ip2_network2\",\n name=\"ip2-net2\",\n region=\"us-central1\",\n subnetwork=subnet_network2.id,\n address_type=\"INTERNAL\",\n purpose=\"GCE_ENDPOINT\")\nforwarding_rule2_network2 = gcp.compute.ForwardingRule(\"forwarding_rule2_network2\",\n name=\"fwd2-net2\",\n region=\"us-central1\",\n ip_address=ip2_network2.id,\n load_balancing_scheme=\"\",\n network=network2.id,\n target=cluster_user_auto_conn_cluster.psc_service_attachments[1].service_attachment)\ncluster_user_auto_conn = gcp.redis.ClusterUserCreatedConnections(\"cluster-user-auto-conn\",\n name=\"cluster-user-auto-conn\",\n region=\"us-central1\",\n cluster_endpoints=[{\n \"connections\": [\n {\n \"psc_connection\": {\n \"psc_connection_id\": forwarding_rule1_network2.psc_connection_id,\n \"address\": ip1_network2.address,\n \"forwarding_rule\": forwarding_rule1_network2.id,\n \"network\": network2.id,\n \"service_attachment\": cluster_user_auto_conn_cluster.psc_service_attachments[0].service_attachment,\n },\n },\n {\n \"psc_connection\": {\n \"psc_connection_id\": forwarding_rule2_network2.psc_connection_id,\n \"address\": ip2_network2.address,\n \"forwarding_rule\": forwarding_rule2_network2.id,\n \"network\": network2.id,\n \"service_attachment\": cluster_user_auto_conn_cluster.psc_service_attachments[1].service_attachment,\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 network2 = new Gcp.Compute.Network(\"network2\", new()\n {\n Name = \"network2\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetNetwork2 = new Gcp.Compute.Subnetwork(\"subnet_network2\", new()\n {\n Name = \"subnet-net2\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = network2.Id,\n });\n\n var ip1Network2 = new Gcp.Compute.Address(\"ip1_network2\", new()\n {\n Name = \"ip1-net2\",\n Region = \"us-central1\",\n Subnetwork = subnetNetwork2.Id,\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n var network1 = new Gcp.Compute.Network(\"network1\", new()\n {\n Name = \"net1\",\n AutoCreateSubnetworks = false,\n });\n\n var subnetNetwork1 = new Gcp.Compute.Subnetwork(\"subnet_network1\", new()\n {\n Name = \"subnet-net1\",\n IpCidrRange = \"10.0.0.248/29\",\n Region = \"us-central1\",\n Network = network1.Id,\n });\n\n var @default = new Gcp.NetworkConnectivity.ServiceConnectionPolicy(\"default\", new()\n {\n Name = \"scpolicy\",\n Location = \"us-central1\",\n ServiceClass = \"gcp-memorystore-redis\",\n Description = \"my basic service connection policy\",\n Network = network1.Id,\n PscConfig = new Gcp.NetworkConnectivity.Inputs.ServiceConnectionPolicyPscConfigArgs\n {\n Subnetworks = new[]\n {\n subnetNetwork1.Id,\n },\n },\n });\n\n // redis cluster without endpoint\n var cluster_user_auto_connCluster = new Gcp.Redis.Cluster(\"cluster-user-auto-conn\", new()\n {\n Name = \"cluster-user-auto-conn\",\n ShardCount = 3,\n Region = \"us-central1\",\n ReplicaCount = 0,\n DeletionProtectionEnabled = false,\n PscConfigs = new[]\n {\n new Gcp.Redis.Inputs.ClusterPscConfigArgs\n {\n Network = network1.Id,\n },\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n @default,\n },\n });\n\n var forwardingRule1Network2 = new Gcp.Compute.ForwardingRule(\"forwarding_rule1_network2\", new()\n {\n Name = \"fwd1-net2\",\n Region = \"us-central1\",\n IpAddress = ip1Network2.Id,\n LoadBalancingScheme = \"\",\n Network = network2.Id,\n Target = cluster_user_auto_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[0].ServiceAttachment),\n });\n\n var ip2Network2 = new Gcp.Compute.Address(\"ip2_network2\", new()\n {\n Name = \"ip2-net2\",\n Region = \"us-central1\",\n Subnetwork = subnetNetwork2.Id,\n AddressType = \"INTERNAL\",\n Purpose = \"GCE_ENDPOINT\",\n });\n\n var forwardingRule2Network2 = new Gcp.Compute.ForwardingRule(\"forwarding_rule2_network2\", new()\n {\n Name = \"fwd2-net2\",\n Region = \"us-central1\",\n IpAddress = ip2Network2.Id,\n LoadBalancingScheme = \"\",\n Network = network2.Id,\n Target = cluster_user_auto_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[1].ServiceAttachment),\n });\n\n var cluster_user_auto_conn = new Gcp.Redis.ClusterUserCreatedConnections(\"cluster-user-auto-conn\", new()\n {\n Name = \"cluster-user-auto-conn\",\n Region = \"us-central1\",\n ClusterEndpoints = new[]\n {\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointArgs\n {\n Connections = new[]\n {\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs\n {\n PscConnection = new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs\n {\n PscConnectionId = forwardingRule1Network2.PscConnectionId,\n Address = ip1Network2.IPAddress,\n ForwardingRule = forwardingRule1Network2.Id,\n Network = network2.Id,\n ServiceAttachment = cluster_user_auto_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[0].ServiceAttachment),\n },\n },\n new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs\n {\n PscConnection = new Gcp.Redis.Inputs.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs\n {\n PscConnectionId = forwardingRule2Network2.PscConnectionId,\n Address = ip2Network2.IPAddress,\n ForwardingRule = forwardingRule2Network2.Id,\n Network = network2.Id,\n ServiceAttachment = cluster_user_auto_connCluster.PscServiceAttachments.Apply(pscServiceAttachments =\u003e pscServiceAttachments[1].ServiceAttachment),\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/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/networkconnectivity\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork2, err := compute.NewNetwork(ctx, \"network2\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"network2\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnetNetwork2, err := compute.NewSubnetwork(ctx, \"subnet_network2\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-net2\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network2.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tip1Network2, err := compute.NewAddress(ctx, \"ip1_network2\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ip1-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: subnetNetwork2.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork1, err := compute.NewNetwork(ctx, \"network1\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"net1\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnetNetwork1, err := compute.NewSubnetwork(ctx, \"subnet_network1\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"subnet-net1\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.248/29\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network1.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, \"default\", \u0026networkconnectivity.ServiceConnectionPolicyArgs{\n\t\t\tName: pulumi.String(\"scpolicy\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tServiceClass: pulumi.String(\"gcp-memorystore-redis\"),\n\t\t\tDescription: pulumi.String(\"my basic service connection policy\"),\n\t\t\tNetwork: network1.ID(),\n\t\t\tPscConfig: \u0026networkconnectivity.ServiceConnectionPolicyPscConfigArgs{\n\t\t\t\tSubnetworks: pulumi.StringArray{\n\t\t\t\t\tsubnetNetwork1.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// redis cluster without endpoint\n\t\tcluster_user_auto_connCluster, err := redis.NewCluster(ctx, \"cluster-user-auto-conn\", \u0026redis.ClusterArgs{\n\t\t\tName: pulumi.String(\"cluster-user-auto-conn\"),\n\t\t\tShardCount: pulumi.Int(3),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tReplicaCount: pulumi.Int(0),\n\t\t\tDeletionProtectionEnabled: pulumi.Bool(false),\n\t\t\tPscConfigs: redis.ClusterPscConfigArray{\n\t\t\t\t\u0026redis.ClusterPscConfigArgs{\n\t\t\t\t\tNetwork: network1.ID(),\n\t\t\t\t},\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\tforwardingRule1Network2, err := compute.NewForwardingRule(ctx, \"forwarding_rule1_network2\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fwd1-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: ip1Network2.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: network2.ID(),\n\t\t\tTarget: pulumi.String(cluster_user_auto_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\treturn \u0026pscServiceAttachments[0].ServiceAttachment, 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\tip2Network2, err := compute.NewAddress(ctx, \"ip2_network2\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"ip2-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tSubnetwork: subnetNetwork2.ID(),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPurpose: pulumi.String(\"GCE_ENDPOINT\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tforwardingRule2Network2, err := compute.NewForwardingRule(ctx, \"forwarding_rule2_network2\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fwd2-net2\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tIpAddress: ip2Network2.ID(),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tNetwork: network2.ID(),\n\t\t\tTarget: pulumi.String(cluster_user_auto_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\treturn \u0026pscServiceAttachments[1].ServiceAttachment, 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 = redis.NewClusterUserCreatedConnections(ctx, \"cluster-user-auto-conn\", \u0026redis.ClusterUserCreatedConnectionsArgs{\n\t\t\tName: pulumi.String(\"cluster-user-auto-conn\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tClusterEndpoints: redis.ClusterUserCreatedConnectionsClusterEndpointArray{\n\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointArgs{\n\t\t\t\t\tConnections: redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArray{\n\t\t\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs{\n\t\t\t\t\t\t\tPscConnection: \u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs{\n\t\t\t\t\t\t\t\tPscConnectionId: forwardingRule1Network2.PscConnectionId,\n\t\t\t\t\t\t\t\tAddress: ip1Network2.Address,\n\t\t\t\t\t\t\t\tForwardingRule: forwardingRule1Network2.ID(),\n\t\t\t\t\t\t\t\tNetwork: network2.ID(),\n\t\t\t\t\t\t\t\tServiceAttachment: cluster_user_auto_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\t\t\t\t\t\treturn \u0026pscServiceAttachments[0].ServiceAttachment, nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\t\u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionArgs{\n\t\t\t\t\t\t\tPscConnection: \u0026redis.ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs{\n\t\t\t\t\t\t\t\tPscConnectionId: forwardingRule2Network2.PscConnectionId,\n\t\t\t\t\t\t\t\tAddress: ip2Network2.Address,\n\t\t\t\t\t\t\t\tForwardingRule: forwardingRule2Network2.ID(),\n\t\t\t\t\t\t\t\tNetwork: network2.ID(),\n\t\t\t\t\t\t\t\tServiceAttachment: cluster_user_auto_connCluster.PscServiceAttachments.ApplyT(func(pscServiceAttachments []redis.ClusterPscServiceAttachment) (*string, error) {\n\t\t\t\t\t\t\t\t\treturn \u0026pscServiceAttachments[1].ServiceAttachment, nil\n\t\t\t\t\t\t\t\t}).(pulumi.StringPtrOutput),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.networkconnectivity.ServiceConnectionPolicy;\nimport com.pulumi.gcp.networkconnectivity.ServiceConnectionPolicyArgs;\nimport com.pulumi.gcp.networkconnectivity.inputs.ServiceConnectionPolicyPscConfigArgs;\nimport com.pulumi.gcp.redis.Cluster;\nimport com.pulumi.gcp.redis.ClusterArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterPscConfigArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.redis.ClusterUserCreatedConnections;\nimport com.pulumi.gcp.redis.ClusterUserCreatedConnectionsArgs;\nimport com.pulumi.gcp.redis.inputs.ClusterUserCreatedConnectionsClusterEndpointArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var network2 = new Network(\"network2\", NetworkArgs.builder()\n .name(\"network2\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetNetwork2 = new Subnetwork(\"subnetNetwork2\", SubnetworkArgs.builder()\n .name(\"subnet-net2\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(network2.id())\n .build());\n\n var ip1Network2 = new Address(\"ip1Network2\", AddressArgs.builder()\n .name(\"ip1-net2\")\n .region(\"us-central1\")\n .subnetwork(subnetNetwork2.id())\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n var network1 = new Network(\"network1\", NetworkArgs.builder()\n .name(\"net1\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnetNetwork1 = new Subnetwork(\"subnetNetwork1\", SubnetworkArgs.builder()\n .name(\"subnet-net1\")\n .ipCidrRange(\"10.0.0.248/29\")\n .region(\"us-central1\")\n .network(network1.id())\n .build());\n\n var default_ = new ServiceConnectionPolicy(\"default\", ServiceConnectionPolicyArgs.builder()\n .name(\"scpolicy\")\n .location(\"us-central1\")\n .serviceClass(\"gcp-memorystore-redis\")\n .description(\"my basic service connection policy\")\n .network(network1.id())\n .pscConfig(ServiceConnectionPolicyPscConfigArgs.builder()\n .subnetworks(subnetNetwork1.id())\n .build())\n .build());\n\n // redis cluster without endpoint\n var cluster_user_auto_connCluster = new Cluster(\"cluster-user-auto-connCluster\", ClusterArgs.builder()\n .name(\"cluster-user-auto-conn\")\n .shardCount(3)\n .region(\"us-central1\")\n .replicaCount(0)\n .deletionProtectionEnabled(false)\n .pscConfigs(ClusterPscConfigArgs.builder()\n .network(network1.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(default_)\n .build());\n\n var forwardingRule1Network2 = new ForwardingRule(\"forwardingRule1Network2\", ForwardingRuleArgs.builder()\n .name(\"fwd1-net2\")\n .region(\"us-central1\")\n .ipAddress(ip1Network2.id())\n .loadBalancingScheme(\"\")\n .network(network2.id())\n .target(cluster_user_auto_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[0].serviceAttachment()))\n .build());\n\n var ip2Network2 = new Address(\"ip2Network2\", AddressArgs.builder()\n .name(\"ip2-net2\")\n .region(\"us-central1\")\n .subnetwork(subnetNetwork2.id())\n .addressType(\"INTERNAL\")\n .purpose(\"GCE_ENDPOINT\")\n .build());\n\n var forwardingRule2Network2 = new ForwardingRule(\"forwardingRule2Network2\", ForwardingRuleArgs.builder()\n .name(\"fwd2-net2\")\n .region(\"us-central1\")\n .ipAddress(ip2Network2.id())\n .loadBalancingScheme(\"\")\n .network(network2.id())\n .target(cluster_user_auto_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[1].serviceAttachment()))\n .build());\n\n var cluster_user_auto_conn = new ClusterUserCreatedConnections(\"cluster-user-auto-conn\", ClusterUserCreatedConnectionsArgs.builder()\n .name(\"cluster-user-auto-conn\")\n .region(\"us-central1\")\n .clusterEndpoints(ClusterUserCreatedConnectionsClusterEndpointArgs.builder()\n .connections( \n ClusterUserCreatedConnectionsClusterEndpointConnectionArgs.builder()\n .pscConnection(ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs.builder()\n .pscConnectionId(forwardingRule1Network2.pscConnectionId())\n .address(ip1Network2.address())\n .forwardingRule(forwardingRule1Network2.id())\n .network(network2.id())\n .serviceAttachment(cluster_user_auto_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[0].serviceAttachment()))\n .build())\n .build(),\n ClusterUserCreatedConnectionsClusterEndpointConnectionArgs.builder()\n .pscConnection(ClusterUserCreatedConnectionsClusterEndpointConnectionPscConnectionArgs.builder()\n .pscConnectionId(forwardingRule2Network2.pscConnectionId())\n .address(ip2Network2.address())\n .forwardingRule(forwardingRule2Network2.id())\n .network(network2.id())\n .serviceAttachment(cluster_user_auto_connCluster.pscServiceAttachments().applyValue(pscServiceAttachments -\u003e pscServiceAttachments[1].serviceAttachment()))\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cluster-user-auto-conn:\n type: gcp:redis:ClusterUserCreatedConnections\n properties:\n name: cluster-user-auto-conn\n region: us-central1\n clusterEndpoints:\n - connections:\n - pscConnection:\n pscConnectionId: ${forwardingRule1Network2.pscConnectionId}\n address: ${ip1Network2.address}\n forwardingRule: ${forwardingRule1Network2.id}\n network: ${network2.id}\n serviceAttachment: ${[\"cluster-user-auto-connCluster\"].pscServiceAttachments[0].serviceAttachment}\n - pscConnection:\n pscConnectionId: ${forwardingRule2Network2.pscConnectionId}\n address: ${ip2Network2.address}\n forwardingRule: ${forwardingRule2Network2.id}\n network: ${network2.id}\n serviceAttachment: ${[\"cluster-user-auto-connCluster\"].pscServiceAttachments[1].serviceAttachment}\n forwardingRule1Network2:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule1_network2\n properties:\n name: fwd1-net2\n region: us-central1\n ipAddress: ${ip1Network2.id}\n loadBalancingScheme: \"\"\n network: ${network2.id}\n target: ${[\"cluster-user-auto-connCluster\"].pscServiceAttachments[0].serviceAttachment}\n forwardingRule2Network2:\n type: gcp:compute:ForwardingRule\n name: forwarding_rule2_network2\n properties:\n name: fwd2-net2\n region: us-central1\n ipAddress: ${ip2Network2.id}\n loadBalancingScheme: \"\"\n network: ${network2.id}\n target: ${[\"cluster-user-auto-connCluster\"].pscServiceAttachments[1].serviceAttachment}\n ip1Network2:\n type: gcp:compute:Address\n name: ip1_network2\n properties:\n name: ip1-net2\n region: us-central1\n subnetwork: ${subnetNetwork2.id}\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n ip2Network2:\n type: gcp:compute:Address\n name: ip2_network2\n properties:\n name: ip2-net2\n region: us-central1\n subnetwork: ${subnetNetwork2.id}\n addressType: INTERNAL\n purpose: GCE_ENDPOINT\n subnetNetwork2:\n type: gcp:compute:Subnetwork\n name: subnet_network2\n properties:\n name: subnet-net2\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${network2.id}\n network2:\n type: gcp:compute:Network\n properties:\n name: network2\n autoCreateSubnetworks: false\n # redis cluster without endpoint\n cluster-user-auto-connCluster:\n type: gcp:redis:Cluster\n name: cluster-user-auto-conn\n properties:\n name: cluster-user-auto-conn\n shardCount: 3\n region: us-central1\n replicaCount: 0\n deletionProtectionEnabled: false\n pscConfigs:\n - network: ${network1.id}\n options:\n dependsOn:\n - ${default}\n default:\n type: gcp:networkconnectivity:ServiceConnectionPolicy\n properties:\n name: scpolicy\n location: us-central1\n serviceClass: gcp-memorystore-redis\n description: my basic service connection policy\n network: ${network1.id}\n pscConfig:\n subnetworks:\n - ${subnetNetwork1.id}\n subnetNetwork1:\n type: gcp:compute:Subnetwork\n name: subnet_network1\n properties:\n name: subnet-net1\n ipCidrRange: 10.0.0.248/29\n region: us-central1\n network: ${network1.id}\n network1:\n type: gcp:compute:Network\n properties:\n name: net1\n autoCreateSubnetworks: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nClusterUserCreatedConnections can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/clusters/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, ClusterUserCreatedConnections can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:redis/clusterUserCreatedConnections:ClusterUserCreatedConnections default projects/{{project}}/locations/{{region}}/clusters/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/clusterUserCreatedConnections:ClusterUserCreatedConnections default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/clusterUserCreatedConnections:ClusterUserCreatedConnections default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/clusterUserCreatedConnections:ClusterUserCreatedConnections default {{name}}\n```\n\n", "properties": { "clusterEndpoints": { "type": "array", @@ -267713,7 +267713,7 @@ } }, "gcp:redis/instance:Instance": { - "description": "A Google Cloud Redis instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/memorystore/docs/redis/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/memorystore/docs/redis/)\n\n## Example Usage\n\n### Redis Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"memory-cache\",\n memorySizeGb: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncache = gcp.redis.Instance(\"cache\",\n name=\"memory-cache\",\n memory_size_gb=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"memory-cache\",\n MemorySizeGb = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"memory-cache\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"memory-cache\")\n .memorySizeGb(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: memory-cache\n memorySizeGb: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis-network = gcp.compute.getNetwork({\n name: \"redis-test-network\",\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"ha-memory-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.then(redis_network =\u003e redis_network.id),\n redisVersion: \"REDIS_4_0\",\n displayName: \"Test Instance\",\n reservedIpRange: \"192.168.0.0/29\",\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"TUESDAY\",\n startTime: {\n hours: 0,\n minutes: 30,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.get_network(name=\"redis-test-network\")\ncache = gcp.redis.Instance(\"cache\",\n name=\"ha-memory-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n redis_version=\"REDIS_4_0\",\n display_name=\"Test Instance\",\n reserved_ip_range=\"192.168.0.0/29\",\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n },\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"TUESDAY\",\n \"start_time\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"redis-test-network\",\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"ha-memory-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Apply(redis_network =\u003e redis_network.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RedisVersion = \"REDIS_4_0\",\n DisplayName = \"Test Instance\",\n ReservedIpRange = \"192.168.0.0/29\",\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n MaintenancePolicy = new Gcp.Redis.Inputs.InstanceMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"TUESDAY\",\n StartTime = new Gcp.Redis.Inputs.InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"redis-test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"ha-memory-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: pulumi.String(redis_network.Id),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_4_0\"),\n\t\t\tDisplayName: pulumi.String(\"Test Instance\"),\n\t\t\tReservedIpRange: pulumi.String(\"192.168.0.0/29\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026redis.InstanceMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.InstanceMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"TUESDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport com.pulumi.gcp.redis.inputs.InstanceMaintenancePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n final var redis-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"ha-memory-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .redisVersion(\"REDIS_4_0\")\n .displayName(\"Test Instance\")\n .reservedIpRange(\"192.168.0.0/29\")\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .maintenancePolicy(InstanceMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"TUESDAY\")\n .startTime(InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: ha-memory-cache\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n redisVersion: REDIS_4_0\n displayName: Test Instance\n reservedIpRange: 192.168.0.0/29\n labels:\n my_key: my_val\n other_key: other_val\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: TUESDAY\n startTime:\n hours: 0\n minutes: 30\n seconds: 0\n nanos: 0\nvariables:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: redis-test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Full With Persistence Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cache_persis = new gcp.redis.Instance(\"cache-persis\", {\n name: \"ha-memory-cache-persis\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n persistenceConfig: {\n persistenceMode: \"RDB\",\n rdbSnapshotPeriod: \"TWELVE_HOURS\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncache_persis = gcp.redis.Instance(\"cache-persis\",\n name=\"ha-memory-cache-persis\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n persistence_config={\n \"persistence_mode\": \"RDB\",\n \"rdb_snapshot_period\": \"TWELVE_HOURS\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cache_persis = new Gcp.Redis.Instance(\"cache-persis\", new()\n {\n Name = \"ha-memory-cache-persis\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n PersistenceConfig = new Gcp.Redis.Inputs.InstancePersistenceConfigArgs\n {\n PersistenceMode = \"RDB\",\n RdbSnapshotPeriod = \"TWELVE_HOURS\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := redis.NewInstance(ctx, \"cache-persis\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"ha-memory-cache-persis\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tPersistenceConfig: \u0026redis.InstancePersistenceConfigArgs{\n\t\t\t\tPersistenceMode: pulumi.String(\"RDB\"),\n\t\t\t\tRdbSnapshotPeriod: pulumi.String(\"TWELVE_HOURS\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport com.pulumi.gcp.redis.inputs.InstancePersistenceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cache_persis = new Instance(\"cache-persis\", InstanceArgs.builder()\n .name(\"ha-memory-cache-persis\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .persistenceConfig(InstancePersistenceConfigArgs.builder()\n .persistenceMode(\"RDB\")\n .rdbSnapshotPeriod(\"TWELVE_HOURS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache-persis:\n type: gcp:redis:Instance\n properties:\n name: ha-memory-cache-persis\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n persistenceConfig:\n persistenceMode: RDB\n rdbSnapshotPeriod: TWELVE_HOURS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Private Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis_network = new gcp.compute.Network(\"redis-network\", {name: \"redis-test-network\"});\nconst serviceRange = new gcp.compute.GlobalAddress(\"service_range\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: redis_network.id,\n});\nconst privateServiceConnection = new gcp.servicenetworking.Connection(\"private_service_connection\", {\n network: redis_network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [serviceRange.name],\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"private-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.id,\n connectMode: \"PRIVATE_SERVICE_ACCESS\",\n redisVersion: \"REDIS_4_0\",\n displayName: \"Test Instance\",\n}, {\n dependsOn: [privateServiceConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.Network(\"redis-network\", name=\"redis-test-network\")\nservice_range = gcp.compute.GlobalAddress(\"service_range\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=redis_network.id)\nprivate_service_connection = gcp.servicenetworking.Connection(\"private_service_connection\",\n network=redis_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[service_range.name])\ncache = gcp.redis.Instance(\"cache\",\n name=\"private-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n connect_mode=\"PRIVATE_SERVICE_ACCESS\",\n redis_version=\"REDIS_4_0\",\n display_name=\"Test Instance\",\n opts = pulumi.ResourceOptions(depends_on=[private_service_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = new Gcp.Compute.Network(\"redis-network\", new()\n {\n Name = \"redis-test-network\",\n });\n\n var serviceRange = new Gcp.Compute.GlobalAddress(\"service_range\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = redis_network.Id,\n });\n\n var privateServiceConnection = new Gcp.ServiceNetworking.Connection(\"private_service_connection\", new()\n {\n Network = redis_network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n serviceRange.Name,\n },\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"private-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Id,\n ConnectMode = \"PRIVATE_SERVICE_ACCESS\",\n RedisVersion = \"REDIS_4_0\",\n DisplayName = \"Test Instance\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privateServiceConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\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// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\t_, err := compute.NewNetwork(ctx, \"redis-network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"redis-test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceRange, err := compute.NewGlobalAddress(ctx, \"service_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: redis_network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateServiceConnection, err := servicenetworking.NewConnection(ctx, \"private_service_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: redis_network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tserviceRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"private-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: redis_network.ID(),\n\t\t\tConnectMode: pulumi.String(\"PRIVATE_SERVICE_ACCESS\"),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_4_0\"),\n\t\t\tDisplayName: pulumi.String(\"Test Instance\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivateServiceConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = new Network(\"redis-network\", NetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var serviceRange = new GlobalAddress(\"serviceRange\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(redis_network.id())\n .build());\n\n var privateServiceConnection = new Connection(\"privateServiceConnection\", ConnectionArgs.builder()\n .network(redis_network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(serviceRange.name())\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"private-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .connectMode(\"PRIVATE_SERVICE_ACCESS\")\n .redisVersion(\"REDIS_4_0\")\n .displayName(\"Test Instance\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(privateServiceConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n type: gcp:compute:Network\n properties:\n name: redis-test-network\n serviceRange:\n type: gcp:compute:GlobalAddress\n name: service_range\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${[\"redis-network\"].id}\n privateServiceConnection:\n type: gcp:servicenetworking:Connection\n name: private_service_connection\n properties:\n network: ${[\"redis-network\"].id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${serviceRange.name}\n cache:\n type: gcp:redis:Instance\n properties:\n name: private-cache\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n connectMode: PRIVATE_SERVICE_ACCESS\n redisVersion: REDIS_4_0\n displayName: Test Instance\n options:\n dependsOn:\n - ${privateServiceConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Mrr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis-network = gcp.compute.getNetwork({\n name: \"redis-test-network\",\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"mrr-memory-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 5,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.then(redis_network =\u003e redis_network.id),\n redisVersion: \"REDIS_6_X\",\n displayName: \"Terraform Test Instance\",\n reservedIpRange: \"192.168.0.0/28\",\n replicaCount: 5,\n readReplicasMode: \"READ_REPLICAS_ENABLED\",\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.get_network(name=\"redis-test-network\")\ncache = gcp.redis.Instance(\"cache\",\n name=\"mrr-memory-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=5,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n redis_version=\"REDIS_6_X\",\n display_name=\"Terraform Test Instance\",\n reserved_ip_range=\"192.168.0.0/28\",\n replica_count=5,\n read_replicas_mode=\"READ_REPLICAS_ENABLED\",\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"redis-test-network\",\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"mrr-memory-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 5,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Apply(redis_network =\u003e redis_network.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RedisVersion = \"REDIS_6_X\",\n DisplayName = \"Terraform Test Instance\",\n ReservedIpRange = \"192.168.0.0/28\",\n ReplicaCount = 5,\n ReadReplicasMode = \"READ_REPLICAS_ENABLED\",\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"redis-test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"mrr-memory-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(5),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: pulumi.String(redis_network.Id),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_6_X\"),\n\t\t\tDisplayName: pulumi.String(\"Terraform Test Instance\"),\n\t\t\tReservedIpRange: pulumi.String(\"192.168.0.0/28\"),\n\t\t\tReplicaCount: pulumi.Int(5),\n\t\t\tReadReplicasMode: pulumi.String(\"READ_REPLICAS_ENABLED\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n final var redis-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"mrr-memory-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(5)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .redisVersion(\"REDIS_6_X\")\n .displayName(\"Terraform Test Instance\")\n .reservedIpRange(\"192.168.0.0/28\")\n .replicaCount(5)\n .readReplicasMode(\"READ_REPLICAS_ENABLED\")\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: mrr-memory-cache\n tier: STANDARD_HA\n memorySizeGb: 5\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n redisVersion: REDIS_6_X\n displayName: Terraform Test Instance\n reservedIpRange: 192.168.0.0/28\n replicaCount: 5\n readReplicasMode: READ_REPLICAS_ENABLED\n labels:\n my_key: my_val\n other_key: other_val\nvariables:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: redis-test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst redisKeyring = new gcp.kms.KeyRing(\"redis_keyring\", {\n name: \"redis-keyring\",\n location: \"us-central1\",\n});\nconst redisKey = new gcp.kms.CryptoKey(\"redis_key\", {\n name: \"redis-key\",\n keyRing: redisKeyring.id,\n});\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis-network = gcp.compute.getNetwork({\n name: \"redis-test-network\",\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"cmek-memory-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.then(redis_network =\u003e redis_network.id),\n redisVersion: \"REDIS_6_X\",\n displayName: \"Terraform Test Instance\",\n reservedIpRange: \"192.168.0.0/29\",\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n customerManagedKey: redisKey.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nredis_keyring = gcp.kms.KeyRing(\"redis_keyring\",\n name=\"redis-keyring\",\n location=\"us-central1\")\nredis_key = gcp.kms.CryptoKey(\"redis_key\",\n name=\"redis-key\",\n key_ring=redis_keyring.id)\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.get_network(name=\"redis-test-network\")\ncache = gcp.redis.Instance(\"cache\",\n name=\"cmek-memory-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n redis_version=\"REDIS_6_X\",\n display_name=\"Terraform Test Instance\",\n reserved_ip_range=\"192.168.0.0/29\",\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n },\n customer_managed_key=redis_key.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var redisKeyring = new Gcp.Kms.KeyRing(\"redis_keyring\", new()\n {\n Name = \"redis-keyring\",\n Location = \"us-central1\",\n });\n\n var redisKey = new Gcp.Kms.CryptoKey(\"redis_key\", new()\n {\n Name = \"redis-key\",\n KeyRing = redisKeyring.Id,\n });\n\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"redis-test-network\",\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"cmek-memory-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Apply(redis_network =\u003e redis_network.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RedisVersion = \"REDIS_6_X\",\n DisplayName = \"Terraform Test Instance\",\n ReservedIpRange = \"192.168.0.0/29\",\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n CustomerManagedKey = redisKey.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tredisKeyring, err := kms.NewKeyRing(ctx, \"redis_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"redis-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tredisKey, err := kms.NewCryptoKey(ctx, \"redis_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"redis-key\"),\n\t\t\tKeyRing: redisKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"redis-test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"cmek-memory-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: pulumi.String(redis_network.Id),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_6_X\"),\n\t\t\tDisplayName: pulumi.String(\"Terraform Test Instance\"),\n\t\t\tReservedIpRange: pulumi.String(\"192.168.0.0/29\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t\tCustomerManagedKey: redisKey.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var redisKeyring = new KeyRing(\"redisKeyring\", KeyRingArgs.builder()\n .name(\"redis-keyring\")\n .location(\"us-central1\")\n .build());\n\n var redisKey = new CryptoKey(\"redisKey\", CryptoKeyArgs.builder()\n .name(\"redis-key\")\n .keyRing(redisKeyring.id())\n .build());\n\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n final var redis-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"cmek-memory-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .redisVersion(\"REDIS_6_X\")\n .displayName(\"Terraform Test Instance\")\n .reservedIpRange(\"192.168.0.0/29\")\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .customerManagedKey(redisKey.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: cmek-memory-cache\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n redisVersion: REDIS_6_X\n displayName: Terraform Test Instance\n reservedIpRange: 192.168.0.0/29\n labels:\n my_key: my_val\n other_key: other_val\n customerManagedKey: ${redisKey.id}\n redisKeyring:\n type: gcp:kms:KeyRing\n name: redis_keyring\n properties:\n name: redis-keyring\n location: us-central1\n redisKey:\n type: gcp:kms:CryptoKey\n name: redis_key\n properties:\n name: redis-key\n keyRing: ${redisKeyring.id}\nvariables:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: redis-test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default {{name}}\n```\n\n", + "description": "A Google Cloud Redis instance.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/memorystore/docs/redis/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/memorystore/docs/redis/)\n\n## Example Usage\n\n### Redis Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"memory-cache\",\n memorySizeGb: 1,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncache = gcp.redis.Instance(\"cache\",\n name=\"memory-cache\",\n memory_size_gb=1)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"memory-cache\",\n MemorySizeGb = 1,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"memory-cache\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"memory-cache\")\n .memorySizeGb(1)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: memory-cache\n memorySizeGb: 1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis_network = gcp.compute.getNetwork({\n name: \"redis-test-network\",\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"ha-memory-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.then(redis_network =\u003e redis_network.id),\n redisVersion: \"REDIS_4_0\",\n displayName: \"Test Instance\",\n reservedIpRange: \"192.168.0.0/29\",\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n maintenancePolicy: {\n weeklyMaintenanceWindows: [{\n day: \"TUESDAY\",\n startTime: {\n hours: 0,\n minutes: 30,\n seconds: 0,\n nanos: 0,\n },\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.get_network(name=\"redis-test-network\")\ncache = gcp.redis.Instance(\"cache\",\n name=\"ha-memory-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n redis_version=\"REDIS_4_0\",\n display_name=\"Test Instance\",\n reserved_ip_range=\"192.168.0.0/29\",\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n },\n maintenance_policy={\n \"weekly_maintenance_windows\": [{\n \"day\": \"TUESDAY\",\n \"start_time\": {\n \"hours\": 0,\n \"minutes\": 30,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"redis-test-network\",\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"ha-memory-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Apply(redis_network =\u003e redis_network.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RedisVersion = \"REDIS_4_0\",\n DisplayName = \"Test Instance\",\n ReservedIpRange = \"192.168.0.0/29\",\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n MaintenancePolicy = new Gcp.Redis.Inputs.InstanceMaintenancePolicyArgs\n {\n WeeklyMaintenanceWindows = new[]\n {\n new Gcp.Redis.Inputs.InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs\n {\n Day = \"TUESDAY\",\n StartTime = new Gcp.Redis.Inputs.InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs\n {\n Hours = 0,\n Minutes = 30,\n Seconds = 0,\n Nanos = 0,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"redis-test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"ha-memory-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: pulumi.String(redis_network.Id),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_4_0\"),\n\t\t\tDisplayName: pulumi.String(\"Test Instance\"),\n\t\t\tReservedIpRange: pulumi.String(\"192.168.0.0/29\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t\tMaintenancePolicy: \u0026redis.InstanceMaintenancePolicyArgs{\n\t\t\t\tWeeklyMaintenanceWindows: redis.InstanceMaintenancePolicyWeeklyMaintenanceWindowArray{\n\t\t\t\t\t\u0026redis.InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs{\n\t\t\t\t\t\tDay: pulumi.String(\"TUESDAY\"),\n\t\t\t\t\t\tStartTime: \u0026redis.InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs{\n\t\t\t\t\t\t\tHours: pulumi.Int(0),\n\t\t\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport com.pulumi.gcp.redis.inputs.InstanceMaintenancePolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n final var redis-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"ha-memory-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .redisVersion(\"REDIS_4_0\")\n .displayName(\"Test Instance\")\n .reservedIpRange(\"192.168.0.0/29\")\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .maintenancePolicy(InstanceMaintenancePolicyArgs.builder()\n .weeklyMaintenanceWindows(InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs.builder()\n .day(\"TUESDAY\")\n .startTime(InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs.builder()\n .hours(0)\n .minutes(30)\n .seconds(0)\n .nanos(0)\n .build())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: ha-memory-cache\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n redisVersion: REDIS_4_0\n displayName: Test Instance\n reservedIpRange: 192.168.0.0/29\n labels:\n my_key: my_val\n other_key: other_val\n maintenancePolicy:\n weeklyMaintenanceWindows:\n - day: TUESDAY\n startTime:\n hours: 0\n minutes: 30\n seconds: 0\n nanos: 0\nvariables:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: redis-test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Full With Persistence Config\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cache_persis = new gcp.redis.Instance(\"cache-persis\", {\n name: \"ha-memory-cache-persis\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n persistenceConfig: {\n persistenceMode: \"RDB\",\n rdbSnapshotPeriod: \"TWELVE_HOURS\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncache_persis = gcp.redis.Instance(\"cache-persis\",\n name=\"ha-memory-cache-persis\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n persistence_config={\n \"persistence_mode\": \"RDB\",\n \"rdb_snapshot_period\": \"TWELVE_HOURS\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cache_persis = new Gcp.Redis.Instance(\"cache-persis\", new()\n {\n Name = \"ha-memory-cache-persis\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n PersistenceConfig = new Gcp.Redis.Inputs.InstancePersistenceConfigArgs\n {\n PersistenceMode = \"RDB\",\n RdbSnapshotPeriod = \"TWELVE_HOURS\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := redis.NewInstance(ctx, \"cache-persis\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"ha-memory-cache-persis\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tPersistenceConfig: \u0026redis.InstancePersistenceConfigArgs{\n\t\t\t\tPersistenceMode: pulumi.String(\"RDB\"),\n\t\t\t\tRdbSnapshotPeriod: pulumi.String(\"TWELVE_HOURS\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport com.pulumi.gcp.redis.inputs.InstancePersistenceConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cache_persis = new Instance(\"cache-persis\", InstanceArgs.builder()\n .name(\"ha-memory-cache-persis\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .persistenceConfig(InstancePersistenceConfigArgs.builder()\n .persistenceMode(\"RDB\")\n .rdbSnapshotPeriod(\"TWELVE_HOURS\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache-persis:\n type: gcp:redis:Instance\n properties:\n name: ha-memory-cache-persis\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n persistenceConfig:\n persistenceMode: RDB\n rdbSnapshotPeriod: TWELVE_HOURS\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Private Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis_network = new gcp.compute.Network(\"redis-network\", {name: \"redis-test-network\"});\nconst serviceRange = new gcp.compute.GlobalAddress(\"service_range\", {\n name: \"address\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: redis_network.id,\n});\nconst privateServiceConnection = new gcp.servicenetworking.Connection(\"private_service_connection\", {\n network: redis_network.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [serviceRange.name],\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"private-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.id,\n connectMode: \"PRIVATE_SERVICE_ACCESS\",\n redisVersion: \"REDIS_4_0\",\n displayName: \"Test Instance\",\n}, {\n dependsOn: [privateServiceConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.Network(\"redis-network\", name=\"redis-test-network\")\nservice_range = gcp.compute.GlobalAddress(\"service_range\",\n name=\"address\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=redis_network.id)\nprivate_service_connection = gcp.servicenetworking.Connection(\"private_service_connection\",\n network=redis_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[service_range.name])\ncache = gcp.redis.Instance(\"cache\",\n name=\"private-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n connect_mode=\"PRIVATE_SERVICE_ACCESS\",\n redis_version=\"REDIS_4_0\",\n display_name=\"Test Instance\",\n opts = pulumi.ResourceOptions(depends_on=[private_service_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = new Gcp.Compute.Network(\"redis-network\", new()\n {\n Name = \"redis-test-network\",\n });\n\n var serviceRange = new Gcp.Compute.GlobalAddress(\"service_range\", new()\n {\n Name = \"address\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = redis_network.Id,\n });\n\n var privateServiceConnection = new Gcp.ServiceNetworking.Connection(\"private_service_connection\", new()\n {\n Network = redis_network.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n serviceRange.Name,\n },\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"private-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Id,\n ConnectMode = \"PRIVATE_SERVICE_ACCESS\",\n RedisVersion = \"REDIS_4_0\",\n DisplayName = \"Test Instance\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n privateServiceConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\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// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.NewNetwork(ctx, \"redis-network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"redis-test-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tserviceRange, err := compute.NewGlobalAddress(ctx, \"service_range\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"address\"),\n\t\t\tPurpose: pulumi.String(\"VPC_PEERING\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tPrefixLength: pulumi.Int(16),\n\t\t\tNetwork: redis_network.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateServiceConnection, err := servicenetworking.NewConnection(ctx, \"private_service_connection\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: redis_network.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tserviceRange.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"private-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: redis_network.ID(),\n\t\t\tConnectMode: pulumi.String(\"PRIVATE_SERVICE_ACCESS\"),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_4_0\"),\n\t\t\tDisplayName: pulumi.String(\"Test Instance\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tprivateServiceConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = new Network(\"redis-network\", NetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var serviceRange = new GlobalAddress(\"serviceRange\", GlobalAddressArgs.builder()\n .name(\"address\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(redis_network.id())\n .build());\n\n var privateServiceConnection = new Connection(\"privateServiceConnection\", ConnectionArgs.builder()\n .network(redis_network.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(serviceRange.name())\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"private-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .connectMode(\"PRIVATE_SERVICE_ACCESS\")\n .redisVersion(\"REDIS_4_0\")\n .displayName(\"Test Instance\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(privateServiceConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n type: gcp:compute:Network\n properties:\n name: redis-test-network\n serviceRange:\n type: gcp:compute:GlobalAddress\n name: service_range\n properties:\n name: address\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${[\"redis-network\"].id}\n privateServiceConnection:\n type: gcp:servicenetworking:Connection\n name: private_service_connection\n properties:\n network: ${[\"redis-network\"].id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${serviceRange.name}\n cache:\n type: gcp:redis:Instance\n properties:\n name: private-cache\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n connectMode: PRIVATE_SERVICE_ACCESS\n redisVersion: REDIS_4_0\n displayName: Test Instance\n options:\n dependsOn:\n - ${privateServiceConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Mrr\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis_network = gcp.compute.getNetwork({\n name: \"redis-test-network\",\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"mrr-memory-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 5,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.then(redis_network =\u003e redis_network.id),\n redisVersion: \"REDIS_6_X\",\n displayName: \"Terraform Test Instance\",\n reservedIpRange: \"192.168.0.0/28\",\n replicaCount: 5,\n readReplicasMode: \"READ_REPLICAS_ENABLED\",\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.get_network(name=\"redis-test-network\")\ncache = gcp.redis.Instance(\"cache\",\n name=\"mrr-memory-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=5,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n redis_version=\"REDIS_6_X\",\n display_name=\"Terraform Test Instance\",\n reserved_ip_range=\"192.168.0.0/28\",\n replica_count=5,\n read_replicas_mode=\"READ_REPLICAS_ENABLED\",\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"redis-test-network\",\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"mrr-memory-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 5,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Apply(redis_network =\u003e redis_network.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RedisVersion = \"REDIS_6_X\",\n DisplayName = \"Terraform Test Instance\",\n ReservedIpRange = \"192.168.0.0/28\",\n ReplicaCount = 5,\n ReadReplicasMode = \"READ_REPLICAS_ENABLED\",\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"redis-test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"mrr-memory-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(5),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: pulumi.String(redis_network.Id),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_6_X\"),\n\t\t\tDisplayName: pulumi.String(\"Terraform Test Instance\"),\n\t\t\tReservedIpRange: pulumi.String(\"192.168.0.0/28\"),\n\t\t\tReplicaCount: pulumi.Int(5),\n\t\t\tReadReplicasMode: pulumi.String(\"READ_REPLICAS_ENABLED\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n final var redis-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"mrr-memory-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(5)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .redisVersion(\"REDIS_6_X\")\n .displayName(\"Terraform Test Instance\")\n .reservedIpRange(\"192.168.0.0/28\")\n .replicaCount(5)\n .readReplicasMode(\"READ_REPLICAS_ENABLED\")\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: mrr-memory-cache\n tier: STANDARD_HA\n memorySizeGb: 5\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n redisVersion: REDIS_6_X\n displayName: Terraform Test Instance\n reservedIpRange: 192.168.0.0/28\n replicaCount: 5\n readReplicasMode: READ_REPLICAS_ENABLED\n labels:\n my_key: my_val\n other_key: other_val\nvariables:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: redis-test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Redis Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst redisKeyring = new gcp.kms.KeyRing(\"redis_keyring\", {\n name: \"redis-keyring\",\n location: \"us-central1\",\n});\nconst redisKey = new gcp.kms.CryptoKey(\"redis_key\", {\n name: \"redis-key\",\n keyRing: redisKeyring.id,\n});\n// This example assumes this network already exists.\n// The API creates a tenant network per network authorized for a\n// Redis instance and that network is not deleted when the user-created\n// network (authorized_network) is deleted, so this prevents issues\n// with tenant network quota.\n// If this network hasn't been created and you are using this example in your\n// config, add an additional network resource or change\n// this from \"data\"to \"resource\"\nconst redis_network = gcp.compute.getNetwork({\n name: \"redis-test-network\",\n});\nconst cache = new gcp.redis.Instance(\"cache\", {\n name: \"cmek-memory-cache\",\n tier: \"STANDARD_HA\",\n memorySizeGb: 1,\n locationId: \"us-central1-a\",\n alternativeLocationId: \"us-central1-f\",\n authorizedNetwork: redis_network.then(redis_network =\u003e redis_network.id),\n redisVersion: \"REDIS_6_X\",\n displayName: \"Terraform Test Instance\",\n reservedIpRange: \"192.168.0.0/29\",\n labels: {\n my_key: \"my_val\",\n other_key: \"other_val\",\n },\n customerManagedKey: redisKey.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nredis_keyring = gcp.kms.KeyRing(\"redis_keyring\",\n name=\"redis-keyring\",\n location=\"us-central1\")\nredis_key = gcp.kms.CryptoKey(\"redis_key\",\n name=\"redis-key\",\n key_ring=redis_keyring.id)\n# This example assumes this network already exists.\n# The API creates a tenant network per network authorized for a\n# Redis instance and that network is not deleted when the user-created\n# network (authorized_network) is deleted, so this prevents issues\n# with tenant network quota.\n# If this network hasn't been created and you are using this example in your\n# config, add an additional network resource or change\n# this from \"data\"to \"resource\"\nredis_network = gcp.compute.get_network(name=\"redis-test-network\")\ncache = gcp.redis.Instance(\"cache\",\n name=\"cmek-memory-cache\",\n tier=\"STANDARD_HA\",\n memory_size_gb=1,\n location_id=\"us-central1-a\",\n alternative_location_id=\"us-central1-f\",\n authorized_network=redis_network.id,\n redis_version=\"REDIS_6_X\",\n display_name=\"Terraform Test Instance\",\n reserved_ip_range=\"192.168.0.0/29\",\n labels={\n \"my_key\": \"my_val\",\n \"other_key\": \"other_val\",\n },\n customer_managed_key=redis_key.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var redisKeyring = new Gcp.Kms.KeyRing(\"redis_keyring\", new()\n {\n Name = \"redis-keyring\",\n Location = \"us-central1\",\n });\n\n var redisKey = new Gcp.Kms.CryptoKey(\"redis_key\", new()\n {\n Name = \"redis-key\",\n KeyRing = redisKeyring.Id,\n });\n\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n var redis_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"redis-test-network\",\n });\n\n var cache = new Gcp.Redis.Instance(\"cache\", new()\n {\n Name = \"cmek-memory-cache\",\n Tier = \"STANDARD_HA\",\n MemorySizeGb = 1,\n LocationId = \"us-central1-a\",\n AlternativeLocationId = \"us-central1-f\",\n AuthorizedNetwork = redis_network.Apply(redis_network =\u003e redis_network.Apply(getNetworkResult =\u003e getNetworkResult.Id)),\n RedisVersion = \"REDIS_6_X\",\n DisplayName = \"Terraform Test Instance\",\n ReservedIpRange = \"192.168.0.0/29\",\n Labels = \n {\n { \"my_key\", \"my_val\" },\n { \"other_key\", \"other_val\" },\n },\n CustomerManagedKey = redisKey.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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/redis\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tredisKeyring, err := kms.NewKeyRing(ctx, \"redis_keyring\", \u0026kms.KeyRingArgs{\n\t\t\tName: pulumi.String(\"redis-keyring\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tredisKey, err := kms.NewCryptoKey(ctx, \"redis_key\", \u0026kms.CryptoKeyArgs{\n\t\t\tName: pulumi.String(\"redis-key\"),\n\t\t\tKeyRing: redisKeyring.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// This example assumes this network already exists.\n\t\t// The API creates a tenant network per network authorized for a\n\t\t// Redis instance and that network is not deleted when the user-created\n\t\t// network (authorized_network) is deleted, so this prevents issues\n\t\t// with tenant network quota.\n\t\t// If this network hasn't been created and you are using this example in your\n\t\t// config, add an additional network resource or change\n\t\t// this from \"data\"to \"resource\"\n\t\tredis_network, err := compute.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"redis-test-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = redis.NewInstance(ctx, \"cache\", \u0026redis.InstanceArgs{\n\t\t\tName: pulumi.String(\"cmek-memory-cache\"),\n\t\t\tTier: pulumi.String(\"STANDARD_HA\"),\n\t\t\tMemorySizeGb: pulumi.Int(1),\n\t\t\tLocationId: pulumi.String(\"us-central1-a\"),\n\t\t\tAlternativeLocationId: pulumi.String(\"us-central1-f\"),\n\t\t\tAuthorizedNetwork: pulumi.String(redis_network.Id),\n\t\t\tRedisVersion: pulumi.String(\"REDIS_6_X\"),\n\t\t\tDisplayName: pulumi.String(\"Terraform Test Instance\"),\n\t\t\tReservedIpRange: pulumi.String(\"192.168.0.0/29\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"my_key\": pulumi.String(\"my_val\"),\n\t\t\t\t\"other_key\": pulumi.String(\"other_val\"),\n\t\t\t},\n\t\t\tCustomerManagedKey: redisKey.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.kms.KeyRing;\nimport com.pulumi.gcp.kms.KeyRingArgs;\nimport com.pulumi.gcp.kms.CryptoKey;\nimport com.pulumi.gcp.kms.CryptoKeyArgs;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport com.pulumi.gcp.redis.Instance;\nimport com.pulumi.gcp.redis.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var redisKeyring = new KeyRing(\"redisKeyring\", KeyRingArgs.builder()\n .name(\"redis-keyring\")\n .location(\"us-central1\")\n .build());\n\n var redisKey = new CryptoKey(\"redisKey\", CryptoKeyArgs.builder()\n .name(\"redis-key\")\n .keyRing(redisKeyring.id())\n .build());\n\n // This example assumes this network already exists.\n // The API creates a tenant network per network authorized for a\n // Redis instance and that network is not deleted when the user-created\n // network (authorized_network) is deleted, so this prevents issues\n // with tenant network quota.\n // If this network hasn't been created and you are using this example in your\n // config, add an additional network resource or change\n // this from \"data\"to \"resource\"\n final var redis-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"redis-test-network\")\n .build());\n\n var cache = new Instance(\"cache\", InstanceArgs.builder()\n .name(\"cmek-memory-cache\")\n .tier(\"STANDARD_HA\")\n .memorySizeGb(1)\n .locationId(\"us-central1-a\")\n .alternativeLocationId(\"us-central1-f\")\n .authorizedNetwork(redis_network.id())\n .redisVersion(\"REDIS_6_X\")\n .displayName(\"Terraform Test Instance\")\n .reservedIpRange(\"192.168.0.0/29\")\n .labels(Map.ofEntries(\n Map.entry(\"my_key\", \"my_val\"),\n Map.entry(\"other_key\", \"other_val\")\n ))\n .customerManagedKey(redisKey.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cache:\n type: gcp:redis:Instance\n properties:\n name: cmek-memory-cache\n tier: STANDARD_HA\n memorySizeGb: 1\n locationId: us-central1-a\n alternativeLocationId: us-central1-f\n authorizedNetwork: ${[\"redis-network\"].id}\n redisVersion: REDIS_6_X\n displayName: Terraform Test Instance\n reservedIpRange: 192.168.0.0/29\n labels:\n my_key: my_val\n other_key: other_val\n customerManagedKey: ${redisKey.id}\n redisKeyring:\n type: gcp:kms:KeyRing\n name: redis_keyring\n properties:\n name: redis-keyring\n location: us-central1\n redisKey:\n type: gcp:kms:CryptoKey\n name: redis_key\n properties:\n name: redis-key\n keyRing: ${redisKeyring.id}\nvariables:\n # This example assumes this network already exists.\n # // The API creates a tenant network per network authorized for a\n # // Redis instance and that network is not deleted when the user-created\n # // network (authorized_network) is deleted, so this prevents issues\n # // with tenant network quota.\n # // If this network hasn't been created and you are using this example in your\n # // config, add an additional network resource or change\n # // this from \"data\"to \"resource\"\n redis-network:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: redis-test-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/instances/{{name}}`\n\n* `{{project}}/{{region}}/{{name}}`\n\n* `{{region}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default projects/{{project}}/locations/{{region}}/instances/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default {{project}}/{{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default {{region}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:redis/instance:Instance default {{name}}\n```\n\n", "properties": { "alternativeLocationId": { "type": "string", @@ -268657,7 +268657,7 @@ } }, "gcp:runtimeconfig/variable:Variable": { - "description": "## Example Usage\n\nExample creating a RuntimeConfig variable.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_runtime_config = new gcp.runtimeconfig.Config(\"my-runtime-config\", {\n name: \"my-service-runtime-config\",\n description: \"Runtime configuration values for my service\",\n});\nconst environment = new gcp.runtimeconfig.Variable(\"environment\", {\n parent: my_runtime_config.name,\n name: \"prod-variables/hostname\",\n text: \"example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_runtime_config = gcp.runtimeconfig.Config(\"my-runtime-config\",\n name=\"my-service-runtime-config\",\n description=\"Runtime configuration values for my service\")\nenvironment = gcp.runtimeconfig.Variable(\"environment\",\n parent=my_runtime_config.name,\n name=\"prod-variables/hostname\",\n text=\"example.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_runtime_config = new Gcp.RuntimeConfig.Config(\"my-runtime-config\", new()\n {\n Name = \"my-service-runtime-config\",\n Description = \"Runtime configuration values for my service\",\n });\n\n var environment = new Gcp.RuntimeConfig.Variable(\"environment\", new()\n {\n Parent = my_runtime_config.Name,\n Name = \"prod-variables/hostname\",\n Text = \"example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/runtimeconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := runtimeconfig.NewConfig(ctx, \"my-runtime-config\", \u0026runtimeconfig.ConfigArgs{\n\t\t\tName: pulumi.String(\"my-service-runtime-config\"),\n\t\t\tDescription: pulumi.String(\"Runtime configuration values for my service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = runtimeconfig.NewVariable(ctx, \"environment\", \u0026runtimeconfig.VariableArgs{\n\t\t\tParent: my_runtime_config.Name,\n\t\t\tName: pulumi.String(\"prod-variables/hostname\"),\n\t\t\tText: pulumi.String(\"example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.runtimeconfig.Config;\nimport com.pulumi.gcp.runtimeconfig.ConfigArgs;\nimport com.pulumi.gcp.runtimeconfig.Variable;\nimport com.pulumi.gcp.runtimeconfig.VariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_runtime_config = new Config(\"my-runtime-config\", ConfigArgs.builder()\n .name(\"my-service-runtime-config\")\n .description(\"Runtime configuration values for my service\")\n .build());\n\n var environment = new Variable(\"environment\", VariableArgs.builder()\n .parent(my_runtime_config.name())\n .name(\"prod-variables/hostname\")\n .text(\"example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-runtime-config:\n type: gcp:runtimeconfig:Config\n properties:\n name: my-service-runtime-config\n description: Runtime configuration values for my service\n environment:\n type: gcp:runtimeconfig:Variable\n properties:\n parent: ${[\"my-runtime-config\"].name}\n name: prod-variables/hostname\n text: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can also encode binary content using the `value` argument instead. The\nvalue must be base64 encoded.\n\nExample of using the `value` argument.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst my_runtime_config = new gcp.runtimeconfig.Config(\"my-runtime-config\", {\n name: \"my-service-runtime-config\",\n description: \"Runtime configuration values for my service\",\n});\nconst my_secret = new gcp.runtimeconfig.Variable(\"my-secret\", {\n parent: my_runtime_config.name,\n name: \"secret\",\n value: std.filebase64({\n input: \"my-encrypted-secret.dat\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nmy_runtime_config = gcp.runtimeconfig.Config(\"my-runtime-config\",\n name=\"my-service-runtime-config\",\n description=\"Runtime configuration values for my service\")\nmy_secret = gcp.runtimeconfig.Variable(\"my-secret\",\n parent=my_runtime_config.name,\n name=\"secret\",\n value=std.filebase64(input=\"my-encrypted-secret.dat\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_runtime_config = new Gcp.RuntimeConfig.Config(\"my-runtime-config\", new()\n {\n Name = \"my-service-runtime-config\",\n Description = \"Runtime configuration values for my service\",\n });\n\n var my_secret = new Gcp.RuntimeConfig.Variable(\"my-secret\", new()\n {\n Parent = my_runtime_config.Name,\n Name = \"secret\",\n Value = Std.Filebase64.Invoke(new()\n {\n Input = \"my-encrypted-secret.dat\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/runtimeconfig\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := runtimeconfig.NewConfig(ctx, \"my-runtime-config\", \u0026runtimeconfig.ConfigArgs{\n\t\t\tName: pulumi.String(\"my-service-runtime-config\"),\n\t\t\tDescription: pulumi.String(\"Runtime configuration values for my service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"my-encrypted-secret.dat\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = runtimeconfig.NewVariable(ctx, \"my-secret\", \u0026runtimeconfig.VariableArgs{\n\t\t\tParent: my_runtime_config.Name,\n\t\t\tName: pulumi.String(\"secret\"),\n\t\t\tValue: pulumi.String(invokeFilebase64.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.runtimeconfig.Config;\nimport com.pulumi.gcp.runtimeconfig.ConfigArgs;\nimport com.pulumi.gcp.runtimeconfig.Variable;\nimport com.pulumi.gcp.runtimeconfig.VariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_runtime_config = new Config(\"my-runtime-config\", ConfigArgs.builder()\n .name(\"my-service-runtime-config\")\n .description(\"Runtime configuration values for my service\")\n .build());\n\n var my_secret = new Variable(\"my-secret\", VariableArgs.builder()\n .parent(my_runtime_config.name())\n .name(\"secret\")\n .value(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"my-encrypted-secret.dat\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-runtime-config:\n type: gcp:runtimeconfig:Config\n properties:\n name: my-service-runtime-config\n description: Runtime configuration values for my service\n my-secret:\n type: gcp:runtimeconfig:Variable\n properties:\n parent: ${[\"my-runtime-config\"].name}\n name: secret\n value:\n fn::invoke:\n function: std:filebase64\n arguments:\n input: my-encrypted-secret.dat\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRuntime Config Variables can be imported using the `name` or full variable name, e.g.\n\n* `projects/my-gcp-project/configs/{{config_id}}/variables/{{name}}`\n\n* `{{config_id}}/{{name}}`\n\nWhen using the `pulumi import` command, Runtime Config Variables can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:runtimeconfig/variable:Variable default projects/my-gcp-project/configs/{{config_id}}/variables/{{name}}\n```\n\n```sh\n$ pulumi import gcp:runtimeconfig/variable:Variable default {{config_id}}/{{name}}\n```\n\nWhen importing using only the name, the provider project must be set.\n\n", + "description": "## Example Usage\n\nExample creating a RuntimeConfig variable.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_runtime_config = new gcp.runtimeconfig.Config(\"my-runtime-config\", {\n name: \"my-service-runtime-config\",\n description: \"Runtime configuration values for my service\",\n});\nconst environment = new gcp.runtimeconfig.Variable(\"environment\", {\n parent: my_runtime_config.name,\n name: \"prod-variables/hostname\",\n text: \"example.com\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_runtime_config = gcp.runtimeconfig.Config(\"my-runtime-config\",\n name=\"my-service-runtime-config\",\n description=\"Runtime configuration values for my service\")\nenvironment = gcp.runtimeconfig.Variable(\"environment\",\n parent=my_runtime_config.name,\n name=\"prod-variables/hostname\",\n text=\"example.com\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_runtime_config = new Gcp.RuntimeConfig.Config(\"my-runtime-config\", new()\n {\n Name = \"my-service-runtime-config\",\n Description = \"Runtime configuration values for my service\",\n });\n\n var environment = new Gcp.RuntimeConfig.Variable(\"environment\", new()\n {\n Parent = my_runtime_config.Name,\n Name = \"prod-variables/hostname\",\n Text = \"example.com\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/runtimeconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmy_runtime_config, err := runtimeconfig.NewConfig(ctx, \"my-runtime-config\", \u0026runtimeconfig.ConfigArgs{\n\t\t\tName: pulumi.String(\"my-service-runtime-config\"),\n\t\t\tDescription: pulumi.String(\"Runtime configuration values for my service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = runtimeconfig.NewVariable(ctx, \"environment\", \u0026runtimeconfig.VariableArgs{\n\t\t\tParent: my_runtime_config.Name,\n\t\t\tName: pulumi.String(\"prod-variables/hostname\"),\n\t\t\tText: pulumi.String(\"example.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.runtimeconfig.Config;\nimport com.pulumi.gcp.runtimeconfig.ConfigArgs;\nimport com.pulumi.gcp.runtimeconfig.Variable;\nimport com.pulumi.gcp.runtimeconfig.VariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_runtime_config = new Config(\"my-runtime-config\", ConfigArgs.builder()\n .name(\"my-service-runtime-config\")\n .description(\"Runtime configuration values for my service\")\n .build());\n\n var environment = new Variable(\"environment\", VariableArgs.builder()\n .parent(my_runtime_config.name())\n .name(\"prod-variables/hostname\")\n .text(\"example.com\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-runtime-config:\n type: gcp:runtimeconfig:Config\n properties:\n name: my-service-runtime-config\n description: Runtime configuration values for my service\n environment:\n type: gcp:runtimeconfig:Variable\n properties:\n parent: ${[\"my-runtime-config\"].name}\n name: prod-variables/hostname\n text: example.com\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\nYou can also encode binary content using the `value` argument instead. The\nvalue must be base64 encoded.\n\nExample of using the `value` argument.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as std from \"@pulumi/std\";\n\nconst my_runtime_config = new gcp.runtimeconfig.Config(\"my-runtime-config\", {\n name: \"my-service-runtime-config\",\n description: \"Runtime configuration values for my service\",\n});\nconst my_secret = new gcp.runtimeconfig.Variable(\"my-secret\", {\n parent: my_runtime_config.name,\n name: \"secret\",\n value: std.filebase64({\n input: \"my-encrypted-secret.dat\",\n }).then(invoke =\u003e invoke.result),\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nmy_runtime_config = gcp.runtimeconfig.Config(\"my-runtime-config\",\n name=\"my-service-runtime-config\",\n description=\"Runtime configuration values for my service\")\nmy_secret = gcp.runtimeconfig.Variable(\"my-secret\",\n parent=my_runtime_config.name,\n name=\"secret\",\n value=std.filebase64(input=\"my-encrypted-secret.dat\").result)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_runtime_config = new Gcp.RuntimeConfig.Config(\"my-runtime-config\", new()\n {\n Name = \"my-service-runtime-config\",\n Description = \"Runtime configuration values for my service\",\n });\n\n var my_secret = new Gcp.RuntimeConfig.Variable(\"my-secret\", new()\n {\n Parent = my_runtime_config.Name,\n Name = \"secret\",\n Value = Std.Filebase64.Invoke(new()\n {\n Input = \"my-encrypted-secret.dat\",\n }).Apply(invoke =\u003e invoke.Result),\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/runtimeconfig\"\n\t\"github.com/pulumi/pulumi-std/sdk/go/std\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmy_runtime_config, err := runtimeconfig.NewConfig(ctx, \"my-runtime-config\", \u0026runtimeconfig.ConfigArgs{\n\t\t\tName: pulumi.String(\"my-service-runtime-config\"),\n\t\t\tDescription: pulumi.String(\"Runtime configuration values for my service\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tinvokeFilebase64, err := std.Filebase64(ctx, \u0026std.Filebase64Args{\n\t\t\tInput: \"my-encrypted-secret.dat\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = runtimeconfig.NewVariable(ctx, \"my-secret\", \u0026runtimeconfig.VariableArgs{\n\t\t\tParent: my_runtime_config.Name,\n\t\t\tName: pulumi.String(\"secret\"),\n\t\t\tValue: pulumi.String(invokeFilebase64.Result),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.runtimeconfig.Config;\nimport com.pulumi.gcp.runtimeconfig.ConfigArgs;\nimport com.pulumi.gcp.runtimeconfig.Variable;\nimport com.pulumi.gcp.runtimeconfig.VariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var my_runtime_config = new Config(\"my-runtime-config\", ConfigArgs.builder()\n .name(\"my-service-runtime-config\")\n .description(\"Runtime configuration values for my service\")\n .build());\n\n var my_secret = new Variable(\"my-secret\", VariableArgs.builder()\n .parent(my_runtime_config.name())\n .name(\"secret\")\n .value(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"my-encrypted-secret.dat\")\n .build()).result())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n my-runtime-config:\n type: gcp:runtimeconfig:Config\n properties:\n name: my-service-runtime-config\n description: Runtime configuration values for my service\n my-secret:\n type: gcp:runtimeconfig:Variable\n properties:\n parent: ${[\"my-runtime-config\"].name}\n name: secret\n value:\n fn::invoke:\n function: std:filebase64\n arguments:\n input: my-encrypted-secret.dat\n return: result\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRuntime Config Variables can be imported using the `name` or full variable name, e.g.\n\n* `projects/my-gcp-project/configs/{{config_id}}/variables/{{name}}`\n\n* `{{config_id}}/{{name}}`\n\nWhen using the `pulumi import` command, Runtime Config Variables can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:runtimeconfig/variable:Variable default projects/my-gcp-project/configs/{{config_id}}/variables/{{name}}\n```\n\n```sh\n$ pulumi import gcp:runtimeconfig/variable:Variable default {{config_id}}/{{name}}\n```\n\nWhen importing using only the name, the provider project must be set.\n\n", "properties": { "name": { "type": "string", @@ -268756,7 +268756,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.locations.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", + "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.locations.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\tkms_secret_binding, 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", @@ -269350,7 +269350,7 @@ } }, "gcp:secretmanager/regionalSecretVersion:RegionalSecretVersion": { - "description": "A regional secret version resource.\n\n\n\n\n\n## Example Usage\n\n### Regional 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.RegionalSecret(\"secret-basic\", {\n secretId: \"secret-version\",\n location: \"us-central1\",\n});\nconst regionalSecretVersionBasic = new gcp.secretmanager.RegionalSecretVersion(\"regional_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.RegionalSecret(\"secret-basic\",\n secret_id=\"secret-version\",\n location=\"us-central1\")\nregional_secret_version_basic = gcp.secretmanager.RegionalSecretVersion(\"regional_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.RegionalSecret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Location = \"us-central1\",\n });\n\n var regionalSecretVersionBasic = new Gcp.SecretManager.RegionalSecretVersion(\"regional_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.NewRegionalSecret(ctx, \"secret-basic\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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 = secretmanager.NewRegionalSecretVersion(ctx, \"regional_secret_version_basic\", \u0026secretmanager.RegionalSecretVersionArgs{\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersion;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 RegionalSecret(\"secret-basic\", RegionalSecretArgs.builder()\n .secretId(\"secret-version\")\n .location(\"us-central1\")\n .build());\n\n var regionalSecretVersionBasic = new RegionalSecretVersion(\"regionalSecretVersionBasic\", RegionalSecretVersionArgs.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:RegionalSecret\n properties:\n secretId: secret-version\n location: us-central1\n regionalSecretVersionBasic:\n type: gcp:secretmanager:RegionalSecretVersion\n name: regional_secret_version_basic\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret Version With Base64 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.RegionalSecret(\"secret-basic\", {\n secretId: \"secret-version\",\n location: \"us-central1\",\n});\nconst regionalSecretVersionBase64 = new gcp.secretmanager.RegionalSecretVersion(\"regional_secret_version_base64\", {\n secret: secret_basic.id,\n secretData: std.filebase64({\n input: \"secret-data.pfx\",\n }).then(invoke =\u003e invoke.result),\n isSecretDataBase64: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nsecret_basic = gcp.secretmanager.RegionalSecret(\"secret-basic\",\n secret_id=\"secret-version\",\n location=\"us-central1\")\nregional_secret_version_base64 = gcp.secretmanager.RegionalSecretVersion(\"regional_secret_version_base64\",\n secret=secret_basic.id,\n secret_data=std.filebase64(input=\"secret-data.pfx\").result,\n is_secret_data_base64=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.RegionalSecret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Location = \"us-central1\",\n });\n\n var regionalSecretVersionBase64 = new Gcp.SecretManager.RegionalSecretVersion(\"regional_secret_version_base64\", new()\n {\n Secret = secret_basic.Id,\n SecretData = Std.Filebase64.Invoke(new()\n {\n Input = \"secret-data.pfx\",\n }).Apply(invoke =\u003e invoke.Result),\n IsSecretDataBase64 = true,\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.NewRegionalSecret(ctx, \"secret-basic\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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\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.NewRegionalSecretVersion(ctx, \"regional_secret_version_base64\", \u0026secretmanager.RegionalSecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(invokeFilebase64.Result),\n\t\t\tIsSecretDataBase64: 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.secretmanager.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersion;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 RegionalSecret(\"secret-basic\", RegionalSecretArgs.builder()\n .secretId(\"secret-version\")\n .location(\"us-central1\")\n .build());\n\n var regionalSecretVersionBase64 = new RegionalSecretVersion(\"regionalSecretVersionBase64\", RegionalSecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"secret-data.pfx\")\n .build()).result())\n .isSecretDataBase64(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: secret-version\n location: us-central1\n regionalSecretVersionBase64:\n type: gcp:secretmanager:RegionalSecretVersion\n name: regional_secret_version_base64\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData:\n fn::invoke:\n function: std:filebase64\n arguments:\n input: secret-data.pfx\n return: result\n isSecretDataBase64: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret Version Disabled\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.RegionalSecret(\"secret-basic\", {\n secretId: \"secret-version\",\n location: \"us-central1\",\n});\nconst regionalSecretVersionDisabled = new gcp.secretmanager.RegionalSecretVersion(\"regional_secret_version_disabled\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n enabled: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.RegionalSecret(\"secret-basic\",\n secret_id=\"secret-version\",\n location=\"us-central1\")\nregional_secret_version_disabled = gcp.secretmanager.RegionalSecretVersion(\"regional_secret_version_disabled\",\n secret=secret_basic.id,\n secret_data=\"secret-data\",\n enabled=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 secret_basic = new Gcp.SecretManager.RegionalSecret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Location = \"us-central1\",\n });\n\n var regionalSecretVersionDisabled = new Gcp.SecretManager.RegionalSecretVersion(\"regional_secret_version_disabled\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n Enabled = false,\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, \"secret-basic\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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 = secretmanager.NewRegionalSecretVersion(ctx, \"regional_secret_version_disabled\", \u0026secretmanager.RegionalSecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t\tEnabled: 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.secretmanager.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersion;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 RegionalSecret(\"secret-basic\", RegionalSecretArgs.builder()\n .secretId(\"secret-version\")\n .location(\"us-central1\")\n .build());\n\n var regionalSecretVersionDisabled = new RegionalSecretVersion(\"regionalSecretVersionDisabled\", RegionalSecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .enabled(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: secret-version\n location: us-central1\n regionalSecretVersionDisabled:\n type: gcp:secretmanager:RegionalSecretVersion\n name: regional_secret_version_disabled\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n enabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional 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.RegionalSecret(\"secret-basic\", {\n secretId: \"secret-version\",\n location: \"us-central1\",\n});\nconst regionalSecretVersionDeletionPolicy = new gcp.secretmanager.RegionalSecretVersion(\"regional_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.RegionalSecret(\"secret-basic\",\n secret_id=\"secret-version\",\n location=\"us-central1\")\nregional_secret_version_deletion_policy = gcp.secretmanager.RegionalSecretVersion(\"regional_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.RegionalSecret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Location = \"us-central1\",\n });\n\n var regionalSecretVersionDeletionPolicy = new Gcp.SecretManager.RegionalSecretVersion(\"regional_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.NewRegionalSecret(ctx, \"secret-basic\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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 = secretmanager.NewRegionalSecretVersion(ctx, \"regional_secret_version_deletion_policy\", \u0026secretmanager.RegionalSecretVersionArgs{\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersion;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 RegionalSecret(\"secret-basic\", RegionalSecretArgs.builder()\n .secretId(\"secret-version\")\n .location(\"us-central1\")\n .build());\n\n var regionalSecretVersionDeletionPolicy = new RegionalSecretVersion(\"regionalSecretVersionDeletionPolicy\", RegionalSecretVersionArgs.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:RegionalSecret\n properties:\n secretId: secret-version\n location: us-central1\n regionalSecretVersionDeletionPolicy:\n type: gcp:secretmanager:RegionalSecretVersion\n name: regional_secret_version_deletion_policy\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n deletionPolicy: ABANDON\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional 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.RegionalSecret(\"secret-basic\", {\n secretId: \"secret-version\",\n location: \"us-central1\",\n});\nconst regionalSecretVersionDeletionPolicy = new gcp.secretmanager.RegionalSecretVersion(\"regional_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.RegionalSecret(\"secret-basic\",\n secret_id=\"secret-version\",\n location=\"us-central1\")\nregional_secret_version_deletion_policy = gcp.secretmanager.RegionalSecretVersion(\"regional_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.RegionalSecret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Location = \"us-central1\",\n });\n\n var regionalSecretVersionDeletionPolicy = new Gcp.SecretManager.RegionalSecretVersion(\"regional_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.NewRegionalSecret(ctx, \"secret-basic\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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 = secretmanager.NewRegionalSecretVersion(ctx, \"regional_secret_version_deletion_policy\", \u0026secretmanager.RegionalSecretVersionArgs{\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersion;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 RegionalSecret(\"secret-basic\", RegionalSecretArgs.builder()\n .secretId(\"secret-version\")\n .location(\"us-central1\")\n .build());\n\n var regionalSecretVersionDeletionPolicy = new RegionalSecretVersion(\"regionalSecretVersionDeletionPolicy\", RegionalSecretVersionArgs.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:RegionalSecret\n properties:\n secretId: secret-version\n location: us-central1\n regionalSecretVersionDeletionPolicy:\n type: gcp:secretmanager:RegionalSecretVersion\n name: regional_secret_version_deletion_policy\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n deletionPolicy: DISABLE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionalSecretVersion can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/secrets/{{secret_id}}/versions/{{version}}`\n\nWhen using the `pulumi import` command, RegionalSecretVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:secretmanager/regionalSecretVersion:RegionalSecretVersion default projects/{{project}}/locations/{{location}}/secrets/{{secret_id}}/versions/{{version}}\n```\n\n", + "description": "A regional secret version resource.\n\n\n\n\n\n## Example Usage\n\n### Regional 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.RegionalSecret(\"secret-basic\", {\n secretId: \"secret-version\",\n location: \"us-central1\",\n});\nconst regionalSecretVersionBasic = new gcp.secretmanager.RegionalSecretVersion(\"regional_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.RegionalSecret(\"secret-basic\",\n secret_id=\"secret-version\",\n location=\"us-central1\")\nregional_secret_version_basic = gcp.secretmanager.RegionalSecretVersion(\"regional_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.RegionalSecret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Location = \"us-central1\",\n });\n\n var regionalSecretVersionBasic = new Gcp.SecretManager.RegionalSecretVersion(\"regional_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\tsecret_basic, err := secretmanager.NewRegionalSecret(ctx, \"secret-basic\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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 = secretmanager.NewRegionalSecretVersion(ctx, \"regional_secret_version_basic\", \u0026secretmanager.RegionalSecretVersionArgs{\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersion;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 RegionalSecret(\"secret-basic\", RegionalSecretArgs.builder()\n .secretId(\"secret-version\")\n .location(\"us-central1\")\n .build());\n\n var regionalSecretVersionBasic = new RegionalSecretVersion(\"regionalSecretVersionBasic\", RegionalSecretVersionArgs.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:RegionalSecret\n properties:\n secretId: secret-version\n location: us-central1\n regionalSecretVersionBasic:\n type: gcp:secretmanager:RegionalSecretVersion\n name: regional_secret_version_basic\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret Version With Base64 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.RegionalSecret(\"secret-basic\", {\n secretId: \"secret-version\",\n location: \"us-central1\",\n});\nconst regionalSecretVersionBase64 = new gcp.secretmanager.RegionalSecretVersion(\"regional_secret_version_base64\", {\n secret: secret_basic.id,\n secretData: std.filebase64({\n input: \"secret-data.pfx\",\n }).then(invoke =\u003e invoke.result),\n isSecretDataBase64: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_std as std\n\nsecret_basic = gcp.secretmanager.RegionalSecret(\"secret-basic\",\n secret_id=\"secret-version\",\n location=\"us-central1\")\nregional_secret_version_base64 = gcp.secretmanager.RegionalSecretVersion(\"regional_secret_version_base64\",\n secret=secret_basic.id,\n secret_data=std.filebase64(input=\"secret-data.pfx\").result,\n is_secret_data_base64=True)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Std = Pulumi.Std;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var secret_basic = new Gcp.SecretManager.RegionalSecret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Location = \"us-central1\",\n });\n\n var regionalSecretVersionBase64 = new Gcp.SecretManager.RegionalSecretVersion(\"regional_secret_version_base64\", new()\n {\n Secret = secret_basic.Id,\n SecretData = Std.Filebase64.Invoke(new()\n {\n Input = \"secret-data.pfx\",\n }).Apply(invoke =\u003e invoke.Result),\n IsSecretDataBase64 = true,\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\tsecret_basic, err := secretmanager.NewRegionalSecret(ctx, \"secret-basic\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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\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.NewRegionalSecretVersion(ctx, \"regional_secret_version_base64\", \u0026secretmanager.RegionalSecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(invokeFilebase64.Result),\n\t\t\tIsSecretDataBase64: 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.secretmanager.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersion;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 RegionalSecret(\"secret-basic\", RegionalSecretArgs.builder()\n .secretId(\"secret-version\")\n .location(\"us-central1\")\n .build());\n\n var regionalSecretVersionBase64 = new RegionalSecretVersion(\"regionalSecretVersionBase64\", RegionalSecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(StdFunctions.filebase64(Filebase64Args.builder()\n .input(\"secret-data.pfx\")\n .build()).result())\n .isSecretDataBase64(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: secret-version\n location: us-central1\n regionalSecretVersionBase64:\n type: gcp:secretmanager:RegionalSecretVersion\n name: regional_secret_version_base64\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData:\n fn::invoke:\n function: std:filebase64\n arguments:\n input: secret-data.pfx\n return: result\n isSecretDataBase64: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional Secret Version Disabled\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.RegionalSecret(\"secret-basic\", {\n secretId: \"secret-version\",\n location: \"us-central1\",\n});\nconst regionalSecretVersionDisabled = new gcp.secretmanager.RegionalSecretVersion(\"regional_secret_version_disabled\", {\n secret: secret_basic.id,\n secretData: \"secret-data\",\n enabled: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsecret_basic = gcp.secretmanager.RegionalSecret(\"secret-basic\",\n secret_id=\"secret-version\",\n location=\"us-central1\")\nregional_secret_version_disabled = gcp.secretmanager.RegionalSecretVersion(\"regional_secret_version_disabled\",\n secret=secret_basic.id,\n secret_data=\"secret-data\",\n enabled=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 secret_basic = new Gcp.SecretManager.RegionalSecret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Location = \"us-central1\",\n });\n\n var regionalSecretVersionDisabled = new Gcp.SecretManager.RegionalSecretVersion(\"regional_secret_version_disabled\", new()\n {\n Secret = secret_basic.Id,\n SecretData = \"secret-data\",\n Enabled = false,\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\tsecret_basic, err := secretmanager.NewRegionalSecret(ctx, \"secret-basic\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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 = secretmanager.NewRegionalSecretVersion(ctx, \"regional_secret_version_disabled\", \u0026secretmanager.RegionalSecretVersionArgs{\n\t\t\tSecret: secret_basic.ID(),\n\t\t\tSecretData: pulumi.String(\"secret-data\"),\n\t\t\tEnabled: 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.secretmanager.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersion;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 RegionalSecret(\"secret-basic\", RegionalSecretArgs.builder()\n .secretId(\"secret-version\")\n .location(\"us-central1\")\n .build());\n\n var regionalSecretVersionDisabled = new RegionalSecretVersion(\"regionalSecretVersionDisabled\", RegionalSecretVersionArgs.builder()\n .secret(secret_basic.id())\n .secretData(\"secret-data\")\n .enabled(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n secret-basic:\n type: gcp:secretmanager:RegionalSecret\n properties:\n secretId: secret-version\n location: us-central1\n regionalSecretVersionDisabled:\n type: gcp:secretmanager:RegionalSecretVersion\n name: regional_secret_version_disabled\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n enabled: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional 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.RegionalSecret(\"secret-basic\", {\n secretId: \"secret-version\",\n location: \"us-central1\",\n});\nconst regionalSecretVersionDeletionPolicy = new gcp.secretmanager.RegionalSecretVersion(\"regional_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.RegionalSecret(\"secret-basic\",\n secret_id=\"secret-version\",\n location=\"us-central1\")\nregional_secret_version_deletion_policy = gcp.secretmanager.RegionalSecretVersion(\"regional_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.RegionalSecret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Location = \"us-central1\",\n });\n\n var regionalSecretVersionDeletionPolicy = new Gcp.SecretManager.RegionalSecretVersion(\"regional_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\tsecret_basic, err := secretmanager.NewRegionalSecret(ctx, \"secret-basic\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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 = secretmanager.NewRegionalSecretVersion(ctx, \"regional_secret_version_deletion_policy\", \u0026secretmanager.RegionalSecretVersionArgs{\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersion;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 RegionalSecret(\"secret-basic\", RegionalSecretArgs.builder()\n .secretId(\"secret-version\")\n .location(\"us-central1\")\n .build());\n\n var regionalSecretVersionDeletionPolicy = new RegionalSecretVersion(\"regionalSecretVersionDeletionPolicy\", RegionalSecretVersionArgs.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:RegionalSecret\n properties:\n secretId: secret-version\n location: us-central1\n regionalSecretVersionDeletionPolicy:\n type: gcp:secretmanager:RegionalSecretVersion\n name: regional_secret_version_deletion_policy\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n deletionPolicy: ABANDON\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Regional 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.RegionalSecret(\"secret-basic\", {\n secretId: \"secret-version\",\n location: \"us-central1\",\n});\nconst regionalSecretVersionDeletionPolicy = new gcp.secretmanager.RegionalSecretVersion(\"regional_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.RegionalSecret(\"secret-basic\",\n secret_id=\"secret-version\",\n location=\"us-central1\")\nregional_secret_version_deletion_policy = gcp.secretmanager.RegionalSecretVersion(\"regional_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.RegionalSecret(\"secret-basic\", new()\n {\n SecretId = \"secret-version\",\n Location = \"us-central1\",\n });\n\n var regionalSecretVersionDeletionPolicy = new Gcp.SecretManager.RegionalSecretVersion(\"regional_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\tsecret_basic, err := secretmanager.NewRegionalSecret(ctx, \"secret-basic\", \u0026secretmanager.RegionalSecretArgs{\n\t\t\tSecretId: pulumi.String(\"secret-version\"),\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 = secretmanager.NewRegionalSecretVersion(ctx, \"regional_secret_version_deletion_policy\", \u0026secretmanager.RegionalSecretVersionArgs{\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.RegionalSecret;\nimport com.pulumi.gcp.secretmanager.RegionalSecretArgs;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersion;\nimport com.pulumi.gcp.secretmanager.RegionalSecretVersionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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 RegionalSecret(\"secret-basic\", RegionalSecretArgs.builder()\n .secretId(\"secret-version\")\n .location(\"us-central1\")\n .build());\n\n var regionalSecretVersionDeletionPolicy = new RegionalSecretVersion(\"regionalSecretVersionDeletionPolicy\", RegionalSecretVersionArgs.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:RegionalSecret\n properties:\n secretId: secret-version\n location: us-central1\n regionalSecretVersionDeletionPolicy:\n type: gcp:secretmanager:RegionalSecretVersion\n name: regional_secret_version_deletion_policy\n properties:\n secret: ${[\"secret-basic\"].id}\n secretData: secret-data\n deletionPolicy: DISABLE\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nRegionalSecretVersion can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/secrets/{{secret_id}}/versions/{{version}}`\n\nWhen using the `pulumi import` command, RegionalSecretVersion can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:secretmanager/regionalSecretVersion:RegionalSecretVersion default projects/{{project}}/locations/{{location}}/secrets/{{secret_id}}/versions/{{version}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -269500,7 +269500,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: \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", + "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\tkms_secret_binding, 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", @@ -270034,7 +270034,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: \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", + "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\tsecret_basic, 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\tsecret_basic, 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\tsecret_basic, 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\tsecret_basic, 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", @@ -270368,7 +270368,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 project = gcp.organizations.getProject({});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\", {\n cryptoKeyId: \"my-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`),\n});\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n kmsKey: \"my-key\",\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key_binding = gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\",\n crypto_key_id=\"my-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\")\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\n kms_key=\"my-key\",\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_binding\", new()\n {\n CryptoKeyId = \"my-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n });\n\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n KmsKey = \"my-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyBinding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyBinding, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"my-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tKmsKey: pulumi.String(\"my-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyBinding = new CryptoKeyIAMMember(\"cryptoKeyBinding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"my-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .kmsKey(\"my-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_binding\n properties:\n cryptoKeyId: my-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n kmsKey: my-key\n options:\n dependsOn:\n - ${cryptoKeyBinding}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst project = gcp.organizations.getProject({});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait120Seconds,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"google\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nproject = gcp.organizations.get_project()\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"is_private\": True,\n \"ca_pool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait120_seconds,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"google\",\n CommonName = \"my-certificate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait120Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait120Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependsOn:\n - ${rootCa}\n - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${caPoolBinding}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private Psc Backend\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = gcp.organizations.getProject({});\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\n// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait120Seconds,\n ],\n});\n// Connect SSM private instance with L4 proxy ILB.\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.1.0/24\",\n privateIpGoogleAccess: true,\n});\nconst pscNeg = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\", {\n name: \"my-neg\",\n region: \"us-central1\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: _default.privateConfig.apply(privateConfig =\u003e privateConfig?.httpServiceAttachment),\n network: network.id,\n subnetwork: subnet.id,\n});\nconst backendService = new gcp.compute.RegionBackendService(\"backend_service\", {\n name: \"my-backend-service\",\n region: \"us-central1\",\n protocol: \"TCP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n backends: [{\n group: pscNeg.id,\n balancingMode: \"UTILIZATION\",\n capacityScaler: 1,\n }],\n});\nconst proxySubnet = new gcp.compute.Subnetwork(\"proxy_subnet\", {\n name: \"my-proxy-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.2.0/24\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n});\nconst targetProxy = new gcp.compute.RegionTargetTcpProxy(\"target_proxy\", {\n name: \"my-target-proxy\",\n region: \"us-central1\",\n backendService: backendService.id,\n});\nconst fwRuleTargetProxy = new gcp.compute.ForwardingRule(\"fw_rule_target_proxy\", {\n name: \"fw-rule-target-proxy\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n ipProtocol: \"TCP\",\n portRange: \"443\",\n target: targetProxy.id,\n network: network.id,\n subnetwork: subnet.id,\n networkTier: \"PREMIUM\",\n}, {\n dependsOn: [proxySubnet],\n});\nconst privateZone = new gcp.dns.ManagedZone(\"private_zone\", {\n name: \"my-dns-zone\",\n dnsName: \"p.sourcemanager.dev.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n});\nconst ssmInstanceHtmlRecord = new gcp.dns.RecordSet(\"ssm_instance_html_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].html}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\nconst ssmInstanceApiRecord = new gcp.dns.RecordSet(\"ssm_instance_api_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].api}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\nconst ssmInstanceGitRecord = new gcp.dns.RecordSet(\"ssm_instance_git_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].gitHttp}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = gcp.organizations.get_project()\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"google\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\n# See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"is_private\": True,\n \"ca_pool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait120_seconds,\n ]))\n# Connect SSM private instance with L4 proxy ILB.\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.1.0/24\",\n private_ip_google_access=True)\npsc_neg = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\",\n name=\"my-neg\",\n region=\"us-central1\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=default.private_config.http_service_attachment,\n network=network.id,\n subnetwork=subnet.id)\nbackend_service = gcp.compute.RegionBackendService(\"backend_service\",\n name=\"my-backend-service\",\n region=\"us-central1\",\n protocol=\"TCP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n backends=[{\n \"group\": psc_neg.id,\n \"balancing_mode\": \"UTILIZATION\",\n \"capacity_scaler\": 1,\n }])\nproxy_subnet = gcp.compute.Subnetwork(\"proxy_subnet\",\n name=\"my-proxy-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.2.0/24\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\")\ntarget_proxy = gcp.compute.RegionTargetTcpProxy(\"target_proxy\",\n name=\"my-target-proxy\",\n region=\"us-central1\",\n backend_service=backend_service.id)\nfw_rule_target_proxy = gcp.compute.ForwardingRule(\"fw_rule_target_proxy\",\n name=\"fw-rule-target-proxy\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n ip_protocol=\"TCP\",\n port_range=\"443\",\n target=target_proxy.id,\n network=network.id,\n subnetwork=subnet.id,\n network_tier=\"PREMIUM\",\n opts = pulumi.ResourceOptions(depends_on=[proxy_subnet]))\nprivate_zone = gcp.dns.ManagedZone(\"private_zone\",\n name=\"my-dns-zone\",\n dns_name=\"p.sourcemanager.dev.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n })\nssm_instance_html_record = gcp.dns.RecordSet(\"ssm_instance_html_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].html}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\nssm_instance_api_record = gcp.dns.RecordSet(\"ssm_instance_api_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].api}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\nssm_instance_git_record = gcp.dns.RecordSet(\"ssm_instance_git_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].git_http}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"google\",\n CommonName = \"my-certificate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait120Seconds,\n },\n });\n\n // Connect SSM private instance with L4 proxy ILB.\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.1.0/24\",\n PrivateIpGoogleAccess = true,\n });\n\n var pscNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg\", new()\n {\n Name = \"my-neg\",\n Region = \"us-central1\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = @default.PrivateConfig.Apply(privateConfig =\u003e privateConfig?.HttpServiceAttachment),\n Network = network.Id,\n Subnetwork = subnet.Id,\n });\n\n var backendService = new Gcp.Compute.RegionBackendService(\"backend_service\", new()\n {\n Name = \"my-backend-service\",\n Region = \"us-central1\",\n Protocol = \"TCP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.RegionBackendServiceBackendArgs\n {\n Group = pscNeg.Id,\n BalancingMode = \"UTILIZATION\",\n CapacityScaler = 1,\n },\n },\n });\n\n var proxySubnet = new Gcp.Compute.Subnetwork(\"proxy_subnet\", new()\n {\n Name = \"my-proxy-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.2.0/24\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n });\n\n var targetProxy = new Gcp.Compute.RegionTargetTcpProxy(\"target_proxy\", new()\n {\n Name = \"my-target-proxy\",\n Region = \"us-central1\",\n BackendService = backendService.Id,\n });\n\n var fwRuleTargetProxy = new Gcp.Compute.ForwardingRule(\"fw_rule_target_proxy\", new()\n {\n Name = \"fw-rule-target-proxy\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n IpProtocol = \"TCP\",\n PortRange = \"443\",\n Target = targetProxy.Id,\n Network = network.Id,\n Subnetwork = subnet.Id,\n NetworkTier = \"PREMIUM\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxySubnet,\n },\n });\n\n var privateZone = new Gcp.Dns.ManagedZone(\"private_zone\", new()\n {\n Name = \"my-dns-zone\",\n DnsName = \"p.sourcemanager.dev.\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network.Id,\n },\n },\n },\n });\n\n var ssmInstanceHtmlRecord = new Gcp.Dns.RecordSet(\"ssm_instance_html_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Html}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n var ssmInstanceApiRecord = new Gcp.Dns.RecordSet(\"ssm_instance_api_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Api}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n var ssmInstanceGitRecord = new Gcp.Dns.RecordSet(\"ssm_instance_git_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].GitHttp}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Connect SSM private instance with L4 proxy ILB.\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.1.0/24\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpscNeg, err := compute.NewRegionNetworkEndpointGroup(ctx, \"psc_neg\", \u0026compute.RegionNetworkEndpointGroupArgs{\n\t\t\tName: pulumi.String(\"my-neg\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetworkEndpointType: pulumi.String(\"PRIVATE_SERVICE_CONNECT\"),\n\t\t\tPscTargetService: pulumi.String(_default.PrivateConfig.ApplyT(func(privateConfig securesourcemanager.InstancePrivateConfig) (*string, error) {\n\t\t\t\treturn \u0026privateConfig.HttpServiceAttachment, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t\tNetwork: network.ID(),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tbackendService, err := compute.NewRegionBackendService(ctx, \"backend_service\", \u0026compute.RegionBackendServiceArgs{\n\t\t\tName: pulumi.String(\"my-backend-service\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tProtocol: pulumi.String(\"TCP\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tBackends: compute.RegionBackendServiceBackendArray{\n\t\t\t\t\u0026compute.RegionBackendServiceBackendArgs{\n\t\t\t\t\tGroup: pscNeg.ID(),\n\t\t\t\t\tBalancingMode: pulumi.String(\"UTILIZATION\"),\n\t\t\t\t\tCapacityScaler: pulumi.Float64(1),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproxySubnet, err := compute.NewSubnetwork(ctx, \"proxy_subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-proxy-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.2.0/24\"),\n\t\t\tPurpose: pulumi.String(\"REGIONAL_MANAGED_PROXY\"),\n\t\t\tRole: pulumi.String(\"ACTIVE\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttargetProxy, err := compute.NewRegionTargetTcpProxy(ctx, \"target_proxy\", \u0026compute.RegionTargetTcpProxyArgs{\n\t\t\tName: pulumi.String(\"my-target-proxy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBackendService: backendService.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfwRuleTargetProxy, err := compute.NewForwardingRule(ctx, \"fw_rule_target_proxy\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fw-rule-target-proxy\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"INTERNAL_MANAGED\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tPortRange: pulumi.String(\"443\"),\n\t\t\tTarget: targetProxy.ID(),\n\t\t\tNetwork: network.ID(),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t\tNetworkTier: pulumi.String(\"PREMIUM\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tproxySubnet,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateZone, err := dns.NewManagedZone(ctx, \"private_zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"my-dns-zone\"),\n\t\t\tDnsName: pulumi.String(\"p.sourcemanager.dev.\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_html_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Html), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_api_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Api), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_git_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].GitHttp), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleTargetProxy.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroup;\nimport com.pulumi.gcp.compute.RegionNetworkEndpointGroupArgs;\nimport com.pulumi.gcp.compute.RegionBackendService;\nimport com.pulumi.gcp.compute.RegionBackendServiceArgs;\nimport com.pulumi.gcp.compute.inputs.RegionBackendServiceBackendArgs;\nimport com.pulumi.gcp.compute.RegionTargetTcpProxy;\nimport com.pulumi.gcp.compute.RegionTargetTcpProxyArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait120Seconds)\n .build());\n\n // Connect SSM private instance with L4 proxy ILB.\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.1.0/24\")\n .privateIpGoogleAccess(true)\n .build());\n\n var pscNeg = new RegionNetworkEndpointGroup(\"pscNeg\", RegionNetworkEndpointGroupArgs.builder()\n .name(\"my-neg\")\n .region(\"us-central1\")\n .networkEndpointType(\"PRIVATE_SERVICE_CONNECT\")\n .pscTargetService(default_.privateConfig().applyValue(privateConfig -\u003e privateConfig.httpServiceAttachment()))\n .network(network.id())\n .subnetwork(subnet.id())\n .build());\n\n var backendService = new RegionBackendService(\"backendService\", RegionBackendServiceArgs.builder()\n .name(\"my-backend-service\")\n .region(\"us-central1\")\n .protocol(\"TCP\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .backends(RegionBackendServiceBackendArgs.builder()\n .group(pscNeg.id())\n .balancingMode(\"UTILIZATION\")\n .capacityScaler(1)\n .build())\n .build());\n\n var proxySubnet = new Subnetwork(\"proxySubnet\", SubnetworkArgs.builder()\n .name(\"my-proxy-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.2.0/24\")\n .purpose(\"REGIONAL_MANAGED_PROXY\")\n .role(\"ACTIVE\")\n .build());\n\n var targetProxy = new RegionTargetTcpProxy(\"targetProxy\", RegionTargetTcpProxyArgs.builder()\n .name(\"my-target-proxy\")\n .region(\"us-central1\")\n .backendService(backendService.id())\n .build());\n\n var fwRuleTargetProxy = new ForwardingRule(\"fwRuleTargetProxy\", ForwardingRuleArgs.builder()\n .name(\"fw-rule-target-proxy\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"INTERNAL_MANAGED\")\n .ipProtocol(\"TCP\")\n .portRange(\"443\")\n .target(targetProxy.id())\n .network(network.id())\n .subnetwork(subnet.id())\n .networkTier(\"PREMIUM\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(proxySubnet)\n .build());\n\n var privateZone = new ManagedZone(\"privateZone\", ManagedZoneArgs.builder()\n .name(\"my-dns-zone\")\n .dnsName(\"p.sourcemanager.dev.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build());\n\n var ssmInstanceHtmlRecord = new RecordSet(\"ssmInstanceHtmlRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].html())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n var ssmInstanceApiRecord = new RecordSet(\"ssmInstanceApiRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].api())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n var ssmInstanceGitRecord = new RecordSet(\"ssmInstanceGitRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].gitHttp())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleTargetProxy.ipAddress())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n # See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependsOn:\n - ${rootCa}\n - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${caPoolBinding}\n # Connect SSM private instance with L4 proxy ILB.\n network:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.1.0/24\n privateIpGoogleAccess: true\n pscNeg:\n type: gcp:compute:RegionNetworkEndpointGroup\n name: psc_neg\n properties:\n name: my-neg\n region: us-central1\n networkEndpointType: PRIVATE_SERVICE_CONNECT\n pscTargetService: ${default.privateConfig.httpServiceAttachment}\n network: ${network.id}\n subnetwork: ${subnet.id}\n backendService:\n type: gcp:compute:RegionBackendService\n name: backend_service\n properties:\n name: my-backend-service\n region: us-central1\n protocol: TCP\n loadBalancingScheme: INTERNAL_MANAGED\n backends:\n - group: ${pscNeg.id}\n balancingMode: UTILIZATION\n capacityScaler: 1\n proxySubnet:\n type: gcp:compute:Subnetwork\n name: proxy_subnet\n properties:\n name: my-proxy-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.2.0/24\n purpose: REGIONAL_MANAGED_PROXY\n role: ACTIVE\n targetProxy:\n type: gcp:compute:RegionTargetTcpProxy\n name: target_proxy\n properties:\n name: my-target-proxy\n region: us-central1\n backendService: ${backendService.id}\n fwRuleTargetProxy:\n type: gcp:compute:ForwardingRule\n name: fw_rule_target_proxy\n properties:\n name: fw-rule-target-proxy\n region: us-central1\n loadBalancingScheme: INTERNAL_MANAGED\n ipProtocol: TCP\n portRange: '443'\n target: ${targetProxy.id}\n network: ${network.id}\n subnetwork: ${subnet.id}\n networkTier: PREMIUM\n options:\n dependsOn:\n - ${proxySubnet}\n privateZone:\n type: gcp:dns:ManagedZone\n name: private_zone\n properties:\n name: my-dns-zone\n dnsName: p.sourcemanager.dev.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n ssmInstanceHtmlRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_html_record\n properties:\n name: ${default.hostConfigs[0].html}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\n ssmInstanceApiRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_api_record\n properties:\n name: ${default.hostConfigs[0].api}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\n ssmInstanceGitRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_git_record\n properties:\n name: ${default.hostConfigs[0].gitHttp}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleTargetProxy.ipAddress}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private Psc Endpoint\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = gcp.organizations.getProject({});\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\n// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait120Seconds,\n ],\n});\n// Connect SSM private instance with endpoint.\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.60.0/24\",\n privateIpGoogleAccess: true,\n});\nconst address = new gcp.compute.Address(\"address\", {\n name: \"my-address\",\n region: \"us-central1\",\n address: \"10.0.60.100\",\n addressType: \"INTERNAL\",\n subnetwork: subnet.id,\n});\nconst fwRuleServiceAttachment = new gcp.compute.ForwardingRule(\"fw_rule_service_attachment\", {\n name: \"fw-rule-service-attachment\",\n region: \"us-central1\",\n loadBalancingScheme: \"\",\n ipAddress: address.id,\n network: network.id,\n target: _default.privateConfig.apply(privateConfig =\u003e privateConfig?.httpServiceAttachment),\n});\nconst privateZone = new gcp.dns.ManagedZone(\"private_zone\", {\n name: \"my-dns-zone\",\n dnsName: \"p.sourcemanager.dev.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n});\nconst ssmInstanceHtmlRecord = new gcp.dns.RecordSet(\"ssm_instance_html_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].html}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\nconst ssmInstanceApiRecord = new gcp.dns.RecordSet(\"ssm_instance_api_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].api}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\nconst ssmInstanceGitRecord = new gcp.dns.RecordSet(\"ssm_instance_git_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].gitHttp}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleServiceAttachment.ipAddress],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = gcp.organizations.get_project()\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"google\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\n# See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"is_private\": True,\n \"ca_pool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait120_seconds,\n ]))\n# Connect SSM private instance with endpoint.\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.60.0/24\",\n private_ip_google_access=True)\naddress = gcp.compute.Address(\"address\",\n name=\"my-address\",\n region=\"us-central1\",\n address=\"10.0.60.100\",\n address_type=\"INTERNAL\",\n subnetwork=subnet.id)\nfw_rule_service_attachment = gcp.compute.ForwardingRule(\"fw_rule_service_attachment\",\n name=\"fw-rule-service-attachment\",\n region=\"us-central1\",\n load_balancing_scheme=\"\",\n ip_address=address.id,\n network=network.id,\n target=default.private_config.http_service_attachment)\nprivate_zone = gcp.dns.ManagedZone(\"private_zone\",\n name=\"my-dns-zone\",\n dns_name=\"p.sourcemanager.dev.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n })\nssm_instance_html_record = gcp.dns.RecordSet(\"ssm_instance_html_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].html}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\nssm_instance_api_record = gcp.dns.RecordSet(\"ssm_instance_api_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].api}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\nssm_instance_git_record = gcp.dns.RecordSet(\"ssm_instance_git_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].git_http}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_service_attachment.ip_address])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"google\",\n CommonName = \"my-certificate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait120Seconds,\n },\n });\n\n // Connect SSM private instance with endpoint.\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.60.0/24\",\n PrivateIpGoogleAccess = true,\n });\n\n var address = new Gcp.Compute.Address(\"address\", new()\n {\n Name = \"my-address\",\n Region = \"us-central1\",\n IPAddress = \"10.0.60.100\",\n AddressType = \"INTERNAL\",\n Subnetwork = subnet.Id,\n });\n\n var fwRuleServiceAttachment = new Gcp.Compute.ForwardingRule(\"fw_rule_service_attachment\", new()\n {\n Name = \"fw-rule-service-attachment\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"\",\n IpAddress = address.Id,\n Network = network.Id,\n Target = @default.PrivateConfig.Apply(privateConfig =\u003e privateConfig?.HttpServiceAttachment),\n });\n\n var privateZone = new Gcp.Dns.ManagedZone(\"private_zone\", new()\n {\n Name = \"my-dns-zone\",\n DnsName = \"p.sourcemanager.dev.\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network.Id,\n },\n },\n },\n });\n\n var ssmInstanceHtmlRecord = new Gcp.Dns.RecordSet(\"ssm_instance_html_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Html}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n var ssmInstanceApiRecord = new Gcp.Dns.RecordSet(\"ssm_instance_api_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Api}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n var ssmInstanceGitRecord = new Gcp.Dns.RecordSet(\"ssm_instance_git_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].GitHttp}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleServiceAttachment.IpAddress,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Connect SSM private instance with endpoint.\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.60.0/24\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddress, err := compute.NewAddress(ctx, \"address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-address\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAddress: pulumi.String(\"10.0.60.100\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfwRuleServiceAttachment, err := compute.NewForwardingRule(ctx, \"fw_rule_service_attachment\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fw-rule-service-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tIpAddress: address.ID(),\n\t\t\tNetwork: network.ID(),\n\t\t\tTarget: pulumi.String(_default.PrivateConfig.ApplyT(func(privateConfig securesourcemanager.InstancePrivateConfig) (*string, error) {\n\t\t\t\treturn \u0026privateConfig.HttpServiceAttachment, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateZone, err := dns.NewManagedZone(ctx, \"private_zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"my-dns-zone\"),\n\t\t\tDnsName: pulumi.String(\"p.sourcemanager.dev.\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_html_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Html), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_api_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Api), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_git_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].GitHttp), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait120Seconds)\n .build());\n\n // Connect SSM private instance with endpoint.\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.60.0/24\")\n .privateIpGoogleAccess(true)\n .build());\n\n var address = new Address(\"address\", AddressArgs.builder()\n .name(\"my-address\")\n .region(\"us-central1\")\n .address(\"10.0.60.100\")\n .addressType(\"INTERNAL\")\n .subnetwork(subnet.id())\n .build());\n\n var fwRuleServiceAttachment = new ForwardingRule(\"fwRuleServiceAttachment\", ForwardingRuleArgs.builder()\n .name(\"fw-rule-service-attachment\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"\")\n .ipAddress(address.id())\n .network(network.id())\n .target(default_.privateConfig().applyValue(privateConfig -\u003e privateConfig.httpServiceAttachment()))\n .build());\n\n var privateZone = new ManagedZone(\"privateZone\", ManagedZoneArgs.builder()\n .name(\"my-dns-zone\")\n .dnsName(\"p.sourcemanager.dev.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build());\n\n var ssmInstanceHtmlRecord = new RecordSet(\"ssmInstanceHtmlRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].html())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n var ssmInstanceApiRecord = new RecordSet(\"ssmInstanceApiRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].api())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n var ssmInstanceGitRecord = new RecordSet(\"ssmInstanceGitRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].gitHttp())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n # See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependsOn:\n - ${rootCa}\n - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${caPoolBinding}\n # Connect SSM private instance with endpoint.\n network:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.60.0/24\n privateIpGoogleAccess: true\n address:\n type: gcp:compute:Address\n properties:\n name: my-address\n region: us-central1\n address: 10.0.60.100\n addressType: INTERNAL\n subnetwork: ${subnet.id}\n fwRuleServiceAttachment:\n type: gcp:compute:ForwardingRule\n name: fw_rule_service_attachment\n properties:\n name: fw-rule-service-attachment\n region: us-central1\n loadBalancingScheme: \"\"\n ipAddress: ${address.id}\n network: ${network.id}\n target: ${default.privateConfig.httpServiceAttachment}\n privateZone:\n type: gcp:dns:ManagedZone\n name: private_zone\n properties:\n name: my-dns-zone\n dnsName: p.sourcemanager.dev.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n ssmInstanceHtmlRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_html_record\n properties:\n name: ${default.hostConfigs[0].html}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\n ssmInstanceApiRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_api_record\n properties:\n name: ${default.hostConfigs[0].api}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\n ssmInstanceGitRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_git_record\n properties:\n name: ${default.hostConfigs[0].gitHttp}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Workforce Identity Federation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n workforceIdentityFederationConfig: {\n enabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\n workforce_identity_federation_config={\n \"enabled\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n WorkforceIdentityFederationConfig = new Gcp.SecureSourceManager.Inputs.InstanceWorkforceIdentityFederationConfigArgs\n {\n Enabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tWorkforceIdentityFederationConfig: \u0026securesourcemanager.InstanceWorkforceIdentityFederationConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstanceWorkforceIdentityFederationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .workforceIdentityFederationConfig(InstanceWorkforceIdentityFederationConfigArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n workforceIdentityFederationConfig:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{instance_id}}`\n\n* `{{location}}/{{instance_id}}`\n\n* `{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{project}}/{{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{instance_id}}\n```\n\n", + "description": "Instances are deployed to an available Google Cloud region and are accessible via their web interface.\n\n\nTo get more information about Instance, see:\n\n* [API documentation](https://cloud.google.com/secure-source-manager/docs/reference/rest/v1/projects.locations.instances)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/secure-source-manager/docs/create-instance)\n\n## Example Usage\n\n### Secure Source Manager Instance Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n labels: {\n foo: \"bar\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\n labels={\n \"foo\": \"bar\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .labels(Map.of(\"foo\", \"bar\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n labels:\n foo: bar\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Cmek\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst project = gcp.organizations.getProject({});\nconst cryptoKeyBinding = new gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\", {\n cryptoKeyId: \"my-key\",\n role: \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member: project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`),\n});\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n kmsKey: \"my-key\",\n}, {\n dependsOn: [cryptoKeyBinding],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject = gcp.organizations.get_project()\ncrypto_key_binding = gcp.kms.CryptoKeyIAMMember(\"crypto_key_binding\",\n crypto_key_id=\"my-key\",\n role=\"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n member=f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\")\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\n kms_key=\"my-key\",\n opts = pulumi.ResourceOptions(depends_on=[crypto_key_binding]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var cryptoKeyBinding = new Gcp.Kms.CryptoKeyIAMMember(\"crypto_key_binding\", new()\n {\n CryptoKeyId = \"my-key\",\n Role = \"roles/cloudkms.cryptoKeyEncrypterDecrypter\",\n Member = $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n });\n\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n KmsKey = \"my-key\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n cryptoKeyBinding,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/kms\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcryptoKeyBinding, err := kms.NewCryptoKeyIAMMember(ctx, \"crypto_key_binding\", \u0026kms.CryptoKeyIAMMemberArgs{\n\t\t\tCryptoKeyId: pulumi.String(\"my-key\"),\n\t\t\tRole: pulumi.String(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tKmsKey: pulumi.String(\"my-key\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcryptoKeyBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMember;\nimport com.pulumi.gcp.kms.CryptoKeyIAMMemberArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var cryptoKeyBinding = new CryptoKeyIAMMember(\"cryptoKeyBinding\", CryptoKeyIAMMemberArgs.builder()\n .cryptoKeyId(\"my-key\")\n .role(\"roles/cloudkms.cryptoKeyEncrypterDecrypter\")\n .member(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .kmsKey(\"my-key\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(cryptoKeyBinding)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n cryptoKeyBinding:\n type: gcp:kms:CryptoKeyIAMMember\n name: crypto_key_binding\n properties:\n cryptoKeyId: my-key\n role: roles/cloudkms.cryptoKeyEncrypterDecrypter\n member: serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n kmsKey: my-key\n options:\n dependsOn:\n - ${cryptoKeyBinding}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst project = gcp.organizations.getProject({});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait120Seconds,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"google\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nproject = gcp.organizations.get_project()\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"is_private\": True,\n \"ca_pool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait120_seconds,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"google\",\n CommonName = \"my-certificate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait120Seconds,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait120Seconds)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependsOn:\n - ${rootCa}\n - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${caPoolBinding}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Private Psc Backend\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst project = gcp.organizations.getProject({});\nconst caPool = new gcp.certificateauthority.CaPool(\"ca_pool\", {\n name: \"ca-pool\",\n location: \"us-central1\",\n tier: \"ENTERPRISE\",\n publishingOptions: {\n publishCaCert: true,\n publishCrl: true,\n },\n});\nconst rootCa = new gcp.certificateauthority.Authority(\"root_ca\", {\n pool: caPool.name,\n certificateAuthorityId: \"root-ca\",\n location: \"us-central1\",\n config: {\n subjectConfig: {\n subject: {\n organization: \"google\",\n commonName: \"my-certificate-authority\",\n },\n },\n x509Config: {\n caOptions: {\n isCa: true,\n },\n keyUsage: {\n baseKeyUsage: {\n certSign: true,\n crlSign: true,\n },\n extendedKeyUsage: {\n serverAuth: true,\n },\n },\n },\n },\n keySpec: {\n algorithm: \"RSA_PKCS1_4096_SHA256\",\n },\n deletionProtection: false,\n ignoreActiveCertificatesOnDeletion: true,\n skipGracePeriod: true,\n});\nconst caPoolBinding = new gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\", {\n caPool: caPool.id,\n role: \"roles/privateca.certificateRequester\",\n members: [project.then(project =\u003e `serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com`)],\n});\n// ca pool IAM permissions can take time to propagate\nconst wait120Seconds = new time.index.Sleep(\"wait_120_seconds\", {createDuration: \"120s\"}, {\n dependsOn: [caPoolBinding],\n});\n// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n instanceId: \"my-instance\",\n location: \"us-central1\",\n privateConfig: {\n isPrivate: true,\n caPool: caPool.id,\n },\n}, {\n dependsOn: [\n rootCa,\n wait120Seconds,\n ],\n});\n// Connect SSM private instance with L4 proxy ILB.\nconst network = new gcp.compute.Network(\"network\", {\n name: \"my-network\",\n autoCreateSubnetworks: false,\n});\nconst subnet = new gcp.compute.Subnetwork(\"subnet\", {\n name: \"my-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.1.0/24\",\n privateIpGoogleAccess: true,\n});\nconst pscNeg = new gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\", {\n name: \"my-neg\",\n region: \"us-central1\",\n networkEndpointType: \"PRIVATE_SERVICE_CONNECT\",\n pscTargetService: _default.privateConfig.apply(privateConfig =\u003e privateConfig?.httpServiceAttachment),\n network: network.id,\n subnetwork: subnet.id,\n});\nconst backendService = new gcp.compute.RegionBackendService(\"backend_service\", {\n name: \"my-backend-service\",\n region: \"us-central1\",\n protocol: \"TCP\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n backends: [{\n group: pscNeg.id,\n balancingMode: \"UTILIZATION\",\n capacityScaler: 1,\n }],\n});\nconst proxySubnet = new gcp.compute.Subnetwork(\"proxy_subnet\", {\n name: \"my-proxy-subnet\",\n region: \"us-central1\",\n network: network.id,\n ipCidrRange: \"10.0.2.0/24\",\n purpose: \"REGIONAL_MANAGED_PROXY\",\n role: \"ACTIVE\",\n});\nconst targetProxy = new gcp.compute.RegionTargetTcpProxy(\"target_proxy\", {\n name: \"my-target-proxy\",\n region: \"us-central1\",\n backendService: backendService.id,\n});\nconst fwRuleTargetProxy = new gcp.compute.ForwardingRule(\"fw_rule_target_proxy\", {\n name: \"fw-rule-target-proxy\",\n region: \"us-central1\",\n loadBalancingScheme: \"INTERNAL_MANAGED\",\n ipProtocol: \"TCP\",\n portRange: \"443\",\n target: targetProxy.id,\n network: network.id,\n subnetwork: subnet.id,\n networkTier: \"PREMIUM\",\n}, {\n dependsOn: [proxySubnet],\n});\nconst privateZone = new gcp.dns.ManagedZone(\"private_zone\", {\n name: \"my-dns-zone\",\n dnsName: \"p.sourcemanager.dev.\",\n visibility: \"private\",\n privateVisibilityConfig: {\n networks: [{\n networkUrl: network.id,\n }],\n },\n});\nconst ssmInstanceHtmlRecord = new gcp.dns.RecordSet(\"ssm_instance_html_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].html}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\nconst ssmInstanceApiRecord = new gcp.dns.RecordSet(\"ssm_instance_api_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].api}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\nconst ssmInstanceGitRecord = new gcp.dns.RecordSet(\"ssm_instance_git_record\", {\n name: _default.hostConfigs.apply(hostConfigs =\u003e `${hostConfigs[0].gitHttp}.`),\n type: \"A\",\n ttl: 300,\n managedZone: privateZone.name,\n rrdatas: [fwRuleTargetProxy.ipAddress],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\nimport pulumi_time as time\n\nproject = gcp.organizations.get_project()\nca_pool = gcp.certificateauthority.CaPool(\"ca_pool\",\n name=\"ca-pool\",\n location=\"us-central1\",\n tier=\"ENTERPRISE\",\n publishing_options={\n \"publish_ca_cert\": True,\n \"publish_crl\": True,\n })\nroot_ca = gcp.certificateauthority.Authority(\"root_ca\",\n pool=ca_pool.name,\n certificate_authority_id=\"root-ca\",\n location=\"us-central1\",\n config={\n \"subject_config\": {\n \"subject\": {\n \"organization\": \"google\",\n \"common_name\": \"my-certificate-authority\",\n },\n },\n \"x509_config\": {\n \"ca_options\": {\n \"is_ca\": True,\n },\n \"key_usage\": {\n \"base_key_usage\": {\n \"cert_sign\": True,\n \"crl_sign\": True,\n },\n \"extended_key_usage\": {\n \"server_auth\": True,\n },\n },\n },\n },\n key_spec={\n \"algorithm\": \"RSA_PKCS1_4096_SHA256\",\n },\n deletion_protection=False,\n ignore_active_certificates_on_deletion=True,\n skip_grace_period=True)\nca_pool_binding = gcp.certificateauthority.CaPoolIamBinding(\"ca_pool_binding\",\n ca_pool=ca_pool.id,\n role=\"roles/privateca.certificateRequester\",\n members=[f\"serviceAccount:service-{project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\"])\n# ca pool IAM permissions can take time to propagate\nwait120_seconds = time.index.Sleep(\"wait_120_seconds\", create_duration=120s,\nopts = pulumi.ResourceOptions(depends_on=[ca_pool_binding]))\n# See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\ndefault = gcp.securesourcemanager.Instance(\"default\",\n instance_id=\"my-instance\",\n location=\"us-central1\",\n private_config={\n \"is_private\": True,\n \"ca_pool\": ca_pool.id,\n },\n opts = pulumi.ResourceOptions(depends_on=[\n root_ca,\n wait120_seconds,\n ]))\n# Connect SSM private instance with L4 proxy ILB.\nnetwork = gcp.compute.Network(\"network\",\n name=\"my-network\",\n auto_create_subnetworks=False)\nsubnet = gcp.compute.Subnetwork(\"subnet\",\n name=\"my-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.1.0/24\",\n private_ip_google_access=True)\npsc_neg = gcp.compute.RegionNetworkEndpointGroup(\"psc_neg\",\n name=\"my-neg\",\n region=\"us-central1\",\n network_endpoint_type=\"PRIVATE_SERVICE_CONNECT\",\n psc_target_service=default.private_config.http_service_attachment,\n network=network.id,\n subnetwork=subnet.id)\nbackend_service = gcp.compute.RegionBackendService(\"backend_service\",\n name=\"my-backend-service\",\n region=\"us-central1\",\n protocol=\"TCP\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n backends=[{\n \"group\": psc_neg.id,\n \"balancing_mode\": \"UTILIZATION\",\n \"capacity_scaler\": 1,\n }])\nproxy_subnet = gcp.compute.Subnetwork(\"proxy_subnet\",\n name=\"my-proxy-subnet\",\n region=\"us-central1\",\n network=network.id,\n ip_cidr_range=\"10.0.2.0/24\",\n purpose=\"REGIONAL_MANAGED_PROXY\",\n role=\"ACTIVE\")\ntarget_proxy = gcp.compute.RegionTargetTcpProxy(\"target_proxy\",\n name=\"my-target-proxy\",\n region=\"us-central1\",\n backend_service=backend_service.id)\nfw_rule_target_proxy = gcp.compute.ForwardingRule(\"fw_rule_target_proxy\",\n name=\"fw-rule-target-proxy\",\n region=\"us-central1\",\n load_balancing_scheme=\"INTERNAL_MANAGED\",\n ip_protocol=\"TCP\",\n port_range=\"443\",\n target=target_proxy.id,\n network=network.id,\n subnetwork=subnet.id,\n network_tier=\"PREMIUM\",\n opts = pulumi.ResourceOptions(depends_on=[proxy_subnet]))\nprivate_zone = gcp.dns.ManagedZone(\"private_zone\",\n name=\"my-dns-zone\",\n dns_name=\"p.sourcemanager.dev.\",\n visibility=\"private\",\n private_visibility_config={\n \"networks\": [{\n \"network_url\": network.id,\n }],\n })\nssm_instance_html_record = gcp.dns.RecordSet(\"ssm_instance_html_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].html}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\nssm_instance_api_record = gcp.dns.RecordSet(\"ssm_instance_api_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].api}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\nssm_instance_git_record = gcp.dns.RecordSet(\"ssm_instance_git_record\",\n name=default.host_configs.apply(lambda host_configs: f\"{host_configs[0].git_http}.\"),\n type=\"A\",\n ttl=300,\n managed_zone=private_zone.name,\n rrdatas=[fw_rule_target_proxy.ip_address])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\nusing Time = Pulumi.Time;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var project = Gcp.Organizations.GetProject.Invoke();\n\n var caPool = new Gcp.CertificateAuthority.CaPool(\"ca_pool\", new()\n {\n Name = \"ca-pool\",\n Location = \"us-central1\",\n Tier = \"ENTERPRISE\",\n PublishingOptions = new Gcp.CertificateAuthority.Inputs.CaPoolPublishingOptionsArgs\n {\n PublishCaCert = true,\n PublishCrl = true,\n },\n });\n\n var rootCa = new Gcp.CertificateAuthority.Authority(\"root_ca\", new()\n {\n Pool = caPool.Name,\n CertificateAuthorityId = \"root-ca\",\n Location = \"us-central1\",\n Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigArgs\n {\n SubjectConfig = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigArgs\n {\n Subject = new Gcp.CertificateAuthority.Inputs.AuthorityConfigSubjectConfigSubjectArgs\n {\n Organization = \"google\",\n CommonName = \"my-certificate-authority\",\n },\n },\n X509Config = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigArgs\n {\n CaOptions = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigCaOptionsArgs\n {\n IsCa = true,\n },\n KeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageArgs\n {\n BaseKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs\n {\n CertSign = true,\n CrlSign = true,\n },\n ExtendedKeyUsage = new Gcp.CertificateAuthority.Inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs\n {\n ServerAuth = true,\n },\n },\n },\n },\n KeySpec = new Gcp.CertificateAuthority.Inputs.AuthorityKeySpecArgs\n {\n Algorithm = \"RSA_PKCS1_4096_SHA256\",\n },\n DeletionProtection = false,\n IgnoreActiveCertificatesOnDeletion = true,\n SkipGracePeriod = true,\n });\n\n var caPoolBinding = new Gcp.CertificateAuthority.CaPoolIamBinding(\"ca_pool_binding\", new()\n {\n CaPool = caPool.Id,\n Role = \"roles/privateca.certificateRequester\",\n Members = new[]\n {\n $\"serviceAccount:service-{project.Apply(getProjectResult =\u003e getProjectResult.Number)}@gcp-sa-sourcemanager.iam.gserviceaccount.com\",\n },\n });\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Time.Index.Sleep(\"wait_120_seconds\", new()\n {\n CreateDuration = \"120s\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n caPoolBinding,\n },\n });\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n InstanceId = \"my-instance\",\n Location = \"us-central1\",\n PrivateConfig = new Gcp.SecureSourceManager.Inputs.InstancePrivateConfigArgs\n {\n IsPrivate = true,\n CaPool = caPool.Id,\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n rootCa,\n wait120Seconds,\n },\n });\n\n // Connect SSM private instance with L4 proxy ILB.\n var network = new Gcp.Compute.Network(\"network\", new()\n {\n Name = \"my-network\",\n AutoCreateSubnetworks = false,\n });\n\n var subnet = new Gcp.Compute.Subnetwork(\"subnet\", new()\n {\n Name = \"my-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.1.0/24\",\n PrivateIpGoogleAccess = true,\n });\n\n var pscNeg = new Gcp.Compute.RegionNetworkEndpointGroup(\"psc_neg\", new()\n {\n Name = \"my-neg\",\n Region = \"us-central1\",\n NetworkEndpointType = \"PRIVATE_SERVICE_CONNECT\",\n PscTargetService = @default.PrivateConfig.Apply(privateConfig =\u003e privateConfig?.HttpServiceAttachment),\n Network = network.Id,\n Subnetwork = subnet.Id,\n });\n\n var backendService = new Gcp.Compute.RegionBackendService(\"backend_service\", new()\n {\n Name = \"my-backend-service\",\n Region = \"us-central1\",\n Protocol = \"TCP\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n Backends = new[]\n {\n new Gcp.Compute.Inputs.RegionBackendServiceBackendArgs\n {\n Group = pscNeg.Id,\n BalancingMode = \"UTILIZATION\",\n CapacityScaler = 1,\n },\n },\n });\n\n var proxySubnet = new Gcp.Compute.Subnetwork(\"proxy_subnet\", new()\n {\n Name = \"my-proxy-subnet\",\n Region = \"us-central1\",\n Network = network.Id,\n IpCidrRange = \"10.0.2.0/24\",\n Purpose = \"REGIONAL_MANAGED_PROXY\",\n Role = \"ACTIVE\",\n });\n\n var targetProxy = new Gcp.Compute.RegionTargetTcpProxy(\"target_proxy\", new()\n {\n Name = \"my-target-proxy\",\n Region = \"us-central1\",\n BackendService = backendService.Id,\n });\n\n var fwRuleTargetProxy = new Gcp.Compute.ForwardingRule(\"fw_rule_target_proxy\", new()\n {\n Name = \"fw-rule-target-proxy\",\n Region = \"us-central1\",\n LoadBalancingScheme = \"INTERNAL_MANAGED\",\n IpProtocol = \"TCP\",\n PortRange = \"443\",\n Target = targetProxy.Id,\n Network = network.Id,\n Subnetwork = subnet.Id,\n NetworkTier = \"PREMIUM\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n proxySubnet,\n },\n });\n\n var privateZone = new Gcp.Dns.ManagedZone(\"private_zone\", new()\n {\n Name = \"my-dns-zone\",\n DnsName = \"p.sourcemanager.dev.\",\n Visibility = \"private\",\n PrivateVisibilityConfig = new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigArgs\n {\n Networks = new[]\n {\n new Gcp.Dns.Inputs.ManagedZonePrivateVisibilityConfigNetworkArgs\n {\n NetworkUrl = network.Id,\n },\n },\n },\n });\n\n var ssmInstanceHtmlRecord = new Gcp.Dns.RecordSet(\"ssm_instance_html_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Html}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n var ssmInstanceApiRecord = new Gcp.Dns.RecordSet(\"ssm_instance_api_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].Api}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n var ssmInstanceGitRecord = new Gcp.Dns.RecordSet(\"ssm_instance_git_record\", new()\n {\n Name = @default.HostConfigs.Apply(hostConfigs =\u003e $\"{hostConfigs[0].GitHttp}.\"),\n Type = \"A\",\n Ttl = 300,\n ManagedZone = privateZone.Name,\n Rrdatas = new[]\n {\n fwRuleTargetProxy.IpAddress,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/certificateauthority\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/dns\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi-time/sdk/go/time\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tproject, err := organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPool, err := certificateauthority.NewCaPool(ctx, \"ca_pool\", \u0026certificateauthority.CaPoolArgs{\n\t\t\tName: pulumi.String(\"ca-pool\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tTier: pulumi.String(\"ENTERPRISE\"),\n\t\t\tPublishingOptions: \u0026certificateauthority.CaPoolPublishingOptionsArgs{\n\t\t\t\tPublishCaCert: pulumi.Bool(true),\n\t\t\t\tPublishCrl: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\trootCa, err := certificateauthority.NewAuthority(ctx, \"root_ca\", \u0026certificateauthority.AuthorityArgs{\n\t\t\tPool: caPool.Name,\n\t\t\tCertificateAuthorityId: pulumi.String(\"root-ca\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026certificateauthority.AuthorityConfigArgs{\n\t\t\t\tSubjectConfig: \u0026certificateauthority.AuthorityConfigSubjectConfigArgs{\n\t\t\t\t\tSubject: \u0026certificateauthority.AuthorityConfigSubjectConfigSubjectArgs{\n\t\t\t\t\t\tOrganization: pulumi.String(\"google\"),\n\t\t\t\t\t\tCommonName: pulumi.String(\"my-certificate-authority\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tX509Config: \u0026certificateauthority.AuthorityConfigX509ConfigArgs{\n\t\t\t\t\tCaOptions: \u0026certificateauthority.AuthorityConfigX509ConfigCaOptionsArgs{\n\t\t\t\t\t\tIsCa: pulumi.Bool(true),\n\t\t\t\t\t},\n\t\t\t\t\tKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageArgs{\n\t\t\t\t\t\tBaseKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs{\n\t\t\t\t\t\t\tCertSign: pulumi.Bool(true),\n\t\t\t\t\t\t\tCrlSign: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tExtendedKeyUsage: \u0026certificateauthority.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs{\n\t\t\t\t\t\t\tServerAuth: pulumi.Bool(true),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tKeySpec: \u0026certificateauthority.AuthorityKeySpecArgs{\n\t\t\t\tAlgorithm: pulumi.String(\"RSA_PKCS1_4096_SHA256\"),\n\t\t\t},\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tIgnoreActiveCertificatesOnDeletion: pulumi.Bool(true),\n\t\t\tSkipGracePeriod: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcaPoolBinding, err := certificateauthority.NewCaPoolIamBinding(ctx, \"ca_pool_binding\", \u0026certificateauthority.CaPoolIamBindingArgs{\n\t\t\tCaPool: caPool.ID(),\n\t\t\tRole: pulumi.String(\"roles/privateca.certificateRequester\"),\n\t\t\tMembers: pulumi.StringArray{\n\t\t\t\tpulumi.Sprintf(\"serviceAccount:service-%v@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.Number),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// ca pool IAM permissions can take time to propagate\n\t\twait120Seconds, err := time.NewSleep(ctx, \"wait_120_seconds\", \u0026time.SleepArgs{\n\t\t\tCreateDuration: \"120s\",\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tcaPoolBinding,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n\t\t_default, 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_default, err := securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tPrivateConfig: \u0026securesourcemanager.InstancePrivateConfigArgs{\n\t\t\t\tIsPrivate: pulumi.Bool(true),\n\t\t\t\tCaPool: caPool.ID(),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\trootCa,\n\t\t\twait120Seconds,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Connect SSM private instance with endpoint.\n\t\tnetwork, err := compute.NewNetwork(ctx, \"network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"my-network\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet, err := compute.NewSubnetwork(ctx, \"subnet\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"my-subnet\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: network.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.60.0/24\"),\n\t\t\tPrivateIpGoogleAccess: pulumi.Bool(true),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\taddress, err := compute.NewAddress(ctx, \"address\", \u0026compute.AddressArgs{\n\t\t\tName: pulumi.String(\"my-address\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tAddress: pulumi.String(\"10.0.60.100\"),\n\t\t\tAddressType: pulumi.String(\"INTERNAL\"),\n\t\t\tSubnetwork: subnet.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tfwRuleServiceAttachment, err := compute.NewForwardingRule(ctx, \"fw_rule_service_attachment\", \u0026compute.ForwardingRuleArgs{\n\t\t\tName: pulumi.String(\"fw-rule-service-attachment\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLoadBalancingScheme: pulumi.String(\"\"),\n\t\t\tIpAddress: address.ID(),\n\t\t\tNetwork: network.ID(),\n\t\t\tTarget: pulumi.String(_default.PrivateConfig.ApplyT(func(privateConfig securesourcemanager.InstancePrivateConfig) (*string, error) {\n\t\t\t\treturn \u0026privateConfig.HttpServiceAttachment, nil\n\t\t\t}).(pulumi.StringPtrOutput)),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tprivateZone, err := dns.NewManagedZone(ctx, \"private_zone\", \u0026dns.ManagedZoneArgs{\n\t\t\tName: pulumi.String(\"my-dns-zone\"),\n\t\t\tDnsName: pulumi.String(\"p.sourcemanager.dev.\"),\n\t\t\tVisibility: pulumi.String(\"private\"),\n\t\t\tPrivateVisibilityConfig: \u0026dns.ManagedZonePrivateVisibilityConfigArgs{\n\t\t\t\tNetworks: dns.ManagedZonePrivateVisibilityConfigNetworkArray{\n\t\t\t\t\t\u0026dns.ManagedZonePrivateVisibilityConfigNetworkArgs{\n\t\t\t\t\t\tNetworkUrl: network.ID(),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_html_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Html), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_api_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].Api), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = dns.NewRecordSet(ctx, \"ssm_instance_git_record\", \u0026dns.RecordSetArgs{\n\t\t\tName: _default.HostConfigs.ApplyT(func(hostConfigs []securesourcemanager.InstanceHostConfig) (string, error) {\n\t\t\t\treturn fmt.Sprintf(\"%v.\", hostConfigs[0].GitHttp), nil\n\t\t\t}).(pulumi.StringOutput),\n\t\t\tType: pulumi.String(\"A\"),\n\t\t\tTtl: pulumi.Int(300),\n\t\t\tManagedZone: privateZone.Name,\n\t\t\tRrdatas: pulumi.StringArray{\n\t\t\t\tfwRuleServiceAttachment.IpAddress,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport com.pulumi.gcp.certificateauthority.CaPool;\nimport com.pulumi.gcp.certificateauthority.CaPoolArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.CaPoolPublishingOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.Authority;\nimport com.pulumi.gcp.certificateauthority.AuthorityArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigSubjectConfigSubjectArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigCaOptionsArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs;\nimport com.pulumi.gcp.certificateauthority.inputs.AuthorityKeySpecArgs;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBinding;\nimport com.pulumi.gcp.certificateauthority.CaPoolIamBindingArgs;\nimport com.pulumi.time.sleep;\nimport com.pulumi.time.SleepArgs;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstancePrivateConfigArgs;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.compute.Address;\nimport com.pulumi.gcp.compute.AddressArgs;\nimport com.pulumi.gcp.compute.ForwardingRule;\nimport com.pulumi.gcp.compute.ForwardingRuleArgs;\nimport com.pulumi.gcp.dns.ManagedZone;\nimport com.pulumi.gcp.dns.ManagedZoneArgs;\nimport com.pulumi.gcp.dns.inputs.ManagedZonePrivateVisibilityConfigArgs;\nimport com.pulumi.gcp.dns.RecordSet;\nimport com.pulumi.gcp.dns.RecordSetArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project = OrganizationsFunctions.getProject();\n\n var caPool = new CaPool(\"caPool\", CaPoolArgs.builder()\n .name(\"ca-pool\")\n .location(\"us-central1\")\n .tier(\"ENTERPRISE\")\n .publishingOptions(CaPoolPublishingOptionsArgs.builder()\n .publishCaCert(true)\n .publishCrl(true)\n .build())\n .build());\n\n var rootCa = new Authority(\"rootCa\", AuthorityArgs.builder()\n .pool(caPool.name())\n .certificateAuthorityId(\"root-ca\")\n .location(\"us-central1\")\n .config(AuthorityConfigArgs.builder()\n .subjectConfig(AuthorityConfigSubjectConfigArgs.builder()\n .subject(AuthorityConfigSubjectConfigSubjectArgs.builder()\n .organization(\"google\")\n .commonName(\"my-certificate-authority\")\n .build())\n .build())\n .x509Config(AuthorityConfigX509ConfigArgs.builder()\n .caOptions(AuthorityConfigX509ConfigCaOptionsArgs.builder()\n .isCa(true)\n .build())\n .keyUsage(AuthorityConfigX509ConfigKeyUsageArgs.builder()\n .baseKeyUsage(AuthorityConfigX509ConfigKeyUsageBaseKeyUsageArgs.builder()\n .certSign(true)\n .crlSign(true)\n .build())\n .extendedKeyUsage(AuthorityConfigX509ConfigKeyUsageExtendedKeyUsageArgs.builder()\n .serverAuth(true)\n .build())\n .build())\n .build())\n .build())\n .keySpec(AuthorityKeySpecArgs.builder()\n .algorithm(\"RSA_PKCS1_4096_SHA256\")\n .build())\n .deletionProtection(false)\n .ignoreActiveCertificatesOnDeletion(true)\n .skipGracePeriod(true)\n .build());\n\n var caPoolBinding = new CaPoolIamBinding(\"caPoolBinding\", CaPoolIamBindingArgs.builder()\n .caPool(caPool.id())\n .role(\"roles/privateca.certificateRequester\")\n .members(String.format(\"serviceAccount:service-%s@gcp-sa-sourcemanager.iam.gserviceaccount.com\", project.applyValue(getProjectResult -\u003e getProjectResult.number())))\n .build());\n\n // ca pool IAM permissions can take time to propagate\n var wait120Seconds = new Sleep(\"wait120Seconds\", SleepArgs.builder()\n .createDuration(\"120s\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(caPoolBinding)\n .build());\n\n // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .instanceId(\"my-instance\")\n .location(\"us-central1\")\n .privateConfig(InstancePrivateConfigArgs.builder()\n .isPrivate(true)\n .caPool(caPool.id())\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n rootCa,\n wait120Seconds)\n .build());\n\n // Connect SSM private instance with endpoint.\n var network = new Network(\"network\", NetworkArgs.builder()\n .name(\"my-network\")\n .autoCreateSubnetworks(false)\n .build());\n\n var subnet = new Subnetwork(\"subnet\", SubnetworkArgs.builder()\n .name(\"my-subnet\")\n .region(\"us-central1\")\n .network(network.id())\n .ipCidrRange(\"10.0.60.0/24\")\n .privateIpGoogleAccess(true)\n .build());\n\n var address = new Address(\"address\", AddressArgs.builder()\n .name(\"my-address\")\n .region(\"us-central1\")\n .address(\"10.0.60.100\")\n .addressType(\"INTERNAL\")\n .subnetwork(subnet.id())\n .build());\n\n var fwRuleServiceAttachment = new ForwardingRule(\"fwRuleServiceAttachment\", ForwardingRuleArgs.builder()\n .name(\"fw-rule-service-attachment\")\n .region(\"us-central1\")\n .loadBalancingScheme(\"\")\n .ipAddress(address.id())\n .network(network.id())\n .target(default_.privateConfig().applyValue(privateConfig -\u003e privateConfig.httpServiceAttachment()))\n .build());\n\n var privateZone = new ManagedZone(\"privateZone\", ManagedZoneArgs.builder()\n .name(\"my-dns-zone\")\n .dnsName(\"p.sourcemanager.dev.\")\n .visibility(\"private\")\n .privateVisibilityConfig(ManagedZonePrivateVisibilityConfigArgs.builder()\n .networks(ManagedZonePrivateVisibilityConfigNetworkArgs.builder()\n .networkUrl(network.id())\n .build())\n .build())\n .build());\n\n var ssmInstanceHtmlRecord = new RecordSet(\"ssmInstanceHtmlRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].html())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n var ssmInstanceApiRecord = new RecordSet(\"ssmInstanceApiRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].api())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n var ssmInstanceGitRecord = new RecordSet(\"ssmInstanceGitRecord\", RecordSetArgs.builder()\n .name(default_.hostConfigs().applyValue(hostConfigs -\u003e String.format(\"%s.\", hostConfigs[0].gitHttp())))\n .type(\"A\")\n .ttl(300)\n .managedZone(privateZone.name())\n .rrdatas(fwRuleServiceAttachment.ipAddress())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n caPool:\n type: gcp:certificateauthority:CaPool\n name: ca_pool\n properties:\n name: ca-pool\n location: us-central1\n tier: ENTERPRISE\n publishingOptions:\n publishCaCert: true\n publishCrl: true\n rootCa:\n type: gcp:certificateauthority:Authority\n name: root_ca\n properties:\n pool: ${caPool.name}\n certificateAuthorityId: root-ca\n location: us-central1\n config:\n subjectConfig:\n subject:\n organization: google\n commonName: my-certificate-authority\n x509Config:\n caOptions:\n isCa: true\n keyUsage:\n baseKeyUsage:\n certSign: true\n crlSign: true\n extendedKeyUsage:\n serverAuth: true\n keySpec:\n algorithm: RSA_PKCS1_4096_SHA256\n deletionProtection: false\n ignoreActiveCertificatesOnDeletion: true\n skipGracePeriod: true\n caPoolBinding:\n type: gcp:certificateauthority:CaPoolIamBinding\n name: ca_pool_binding\n properties:\n caPool: ${caPool.id}\n role: roles/privateca.certificateRequester\n members:\n - serviceAccount:service-${project.number}@gcp-sa-sourcemanager.iam.gserviceaccount.com\n # See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n instanceId: my-instance\n location: us-central1\n privateConfig:\n isPrivate: true\n caPool: ${caPool.id}\n options:\n dependsOn:\n - ${rootCa}\n - ${wait120Seconds}\n # ca pool IAM permissions can take time to propagate\n wait120Seconds:\n type: time:sleep\n name: wait_120_seconds\n properties:\n createDuration: 120s\n options:\n dependsOn:\n - ${caPoolBinding}\n # Connect SSM private instance with endpoint.\n network:\n type: gcp:compute:Network\n properties:\n name: my-network\n autoCreateSubnetworks: false\n subnet:\n type: gcp:compute:Subnetwork\n properties:\n name: my-subnet\n region: us-central1\n network: ${network.id}\n ipCidrRange: 10.0.60.0/24\n privateIpGoogleAccess: true\n address:\n type: gcp:compute:Address\n properties:\n name: my-address\n region: us-central1\n address: 10.0.60.100\n addressType: INTERNAL\n subnetwork: ${subnet.id}\n fwRuleServiceAttachment:\n type: gcp:compute:ForwardingRule\n name: fw_rule_service_attachment\n properties:\n name: fw-rule-service-attachment\n region: us-central1\n loadBalancingScheme: \"\"\n ipAddress: ${address.id}\n network: ${network.id}\n target: ${default.privateConfig.httpServiceAttachment}\n privateZone:\n type: gcp:dns:ManagedZone\n name: private_zone\n properties:\n name: my-dns-zone\n dnsName: p.sourcemanager.dev.\n visibility: private\n privateVisibilityConfig:\n networks:\n - networkUrl: ${network.id}\n ssmInstanceHtmlRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_html_record\n properties:\n name: ${default.hostConfigs[0].html}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\n ssmInstanceApiRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_api_record\n properties:\n name: ${default.hostConfigs[0].api}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\n ssmInstanceGitRecord:\n type: gcp:dns:RecordSet\n name: ssm_instance_git_record\n properties:\n name: ${default.hostConfigs[0].gitHttp}.\n type: A\n ttl: 300\n managedZone: ${privateZone.name}\n rrdatas:\n - ${fwRuleServiceAttachment.ipAddress}\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Secure Source Manager Instance Workforce Identity Federation\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.securesourcemanager.Instance(\"default\", {\n location: \"us-central1\",\n instanceId: \"my-instance\",\n workforceIdentityFederationConfig: {\n enabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.securesourcemanager.Instance(\"default\",\n location=\"us-central1\",\n instance_id=\"my-instance\",\n workforce_identity_federation_config={\n \"enabled\": True,\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.SecureSourceManager.Instance(\"default\", new()\n {\n Location = \"us-central1\",\n InstanceId = \"my-instance\",\n WorkforceIdentityFederationConfig = new Gcp.SecureSourceManager.Inputs.InstanceWorkforceIdentityFederationConfigArgs\n {\n Enabled = true,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/securesourcemanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := securesourcemanager.NewInstance(ctx, \"default\", \u0026securesourcemanager.InstanceArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tInstanceId: pulumi.String(\"my-instance\"),\n\t\t\tWorkforceIdentityFederationConfig: \u0026securesourcemanager.InstanceWorkforceIdentityFederationConfigArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.securesourcemanager.Instance;\nimport com.pulumi.gcp.securesourcemanager.InstanceArgs;\nimport com.pulumi.gcp.securesourcemanager.inputs.InstanceWorkforceIdentityFederationConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .location(\"us-central1\")\n .instanceId(\"my-instance\")\n .workforceIdentityFederationConfig(InstanceWorkforceIdentityFederationConfigArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:securesourcemanager:Instance\n properties:\n location: us-central1\n instanceId: my-instance\n workforceIdentityFederationConfig:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nInstance can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/instances/{{instance_id}}`\n\n* `{{project}}/{{location}}/{{instance_id}}`\n\n* `{{location}}/{{instance_id}}`\n\n* `{{instance_id}}`\n\nWhen using the `pulumi import` command, Instance can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default projects/{{project}}/locations/{{location}}/instances/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{project}}/{{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{location}}/{{instance_id}}\n```\n\n```sh\n$ pulumi import gcp:securesourcemanager/instance:Instance default {{instance_id}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -271680,7 +271680,7 @@ } }, "gcp:securitycenter/folderSccBigQueryExport:FolderSccBigQueryExport": { - "description": "A Cloud Security Command Center (Cloud SCC) Big Query Export Config.\nIt represents exporting Security Command Center data, including assets, findings, and security marks\nto a BigQuery instance.\n\n\u003e **Note:** In order to use Cloud SCC resources, your organization must be enrolled\nin [SCC Standard/Premium](https://cloud.google.com/security-command-center/docs/quickstart-security-command-center).\nWithout doing so, you may run into errors during resource creation.\n\n\nTo get more information about FolderSccBigQueryExport, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.bigQueryExports)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query)\n\n## Example Usage\n\n### Scc Folder Big Query Export 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 folder = new gcp.organizations.Folder(\"folder\", {\n parent: \"organizations/123456789\",\n displayName: \"folder-name\",\n deletionProtection: false,\n});\nconst _default = new gcp.bigquery.Dataset(\"default\", {\n datasetId: \"my_dataset_id\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultPartitionExpirationMs: undefined,\n labels: {\n env: \"default\",\n },\n});\nconst customBigQueryExportConfig = new gcp.securitycenter.FolderSccBigQueryExport(\"custom_big_query_export_config\", {\n bigQueryExportId: \"my-export\",\n folder: folder.folderId,\n dataset: _default.id,\n description: \"Cloud Security Command Center Findings Big Query Export Config\",\n filter: \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n parent=\"organizations/123456789\",\n display_name=\"folder-name\",\n deletion_protection=False)\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"my_dataset_id\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_partition_expiration_ms=None,\n labels={\n \"env\": \"default\",\n })\ncustom_big_query_export_config = gcp.securitycenter.FolderSccBigQueryExport(\"custom_big_query_export_config\",\n big_query_export_id=\"my-export\",\n folder=folder.folder_id,\n dataset=default.id,\n description=\"Cloud Security Command Center Findings Big Query Export Config\",\n filter=\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder-name\",\n DeletionProtection = false,\n });\n\n var @default = new Gcp.BigQuery.Dataset(\"default\", new()\n {\n DatasetId = \"my_dataset_id\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultPartitionExpirationMs = null,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var customBigQueryExportConfig = new Gcp.SecurityCenter.FolderSccBigQueryExport(\"custom_big_query_export_config\", new()\n {\n BigQueryExportId = \"my-export\",\n Folder = folder.FolderId,\n Dataset = @default.Id,\n Description = \"Cloud Security Command Center Findings Big Query Export Config\",\n Filter = \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\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-gcp/sdk/v8/go/gcp/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder-name\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_dataset_id\"),\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\tDefaultPartitionExpirationMs: nil,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewFolderSccBigQueryExport(ctx, \"custom_big_query_export_config\", \u0026securitycenter.FolderSccBigQueryExportArgs{\n\t\t\tBigQueryExportId: pulumi.String(\"my-export\"),\n\t\t\tFolder: folder.FolderId,\n\t\t\tDataset: _default.ID(),\n\t\t\tDescription: pulumi.String(\"Cloud Security Command Center Findings Big Query Export Config\"),\n\t\t\tFilter: pulumi.String(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.securitycenter.FolderSccBigQueryExport;\nimport com.pulumi.gcp.securitycenter.FolderSccBigQueryExportArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var folder = new Folder(\"folder\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder-name\")\n .deletionProtection(false)\n .build());\n\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .datasetId(\"my_dataset_id\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultPartitionExpirationMs(null)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var customBigQueryExportConfig = new FolderSccBigQueryExport(\"customBigQueryExportConfig\", FolderSccBigQueryExportArgs.builder()\n .bigQueryExportId(\"my-export\")\n .folder(folder.folderId())\n .dataset(default_.id())\n .description(\"Cloud Security Command Center Findings Big Query Export Config\")\n .filter(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder-name\n deletionProtection: false\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: my_dataset_id\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultPartitionExpirationMs: null\n labels:\n env: default\n customBigQueryExportConfig:\n type: gcp:securitycenter:FolderSccBigQueryExport\n name: custom_big_query_export_config\n properties:\n bigQueryExportId: my-export\n folder: ${folder.folderId}\n dataset: ${default.id}\n description: Cloud Security Command Center Findings Big Query Export Config\n filter: state=\"ACTIVE\" AND NOT mute=\"MUTED\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolderSccBigQueryExport can be imported using any of these accepted formats:\n\n* `folders/{{folder}}/bigQueryExports/{{big_query_export_id}}`\n\n* `{{folder}}/{{big_query_export_id}}`\n\nWhen using the `pulumi import` command, FolderSccBigQueryExport can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/folderSccBigQueryExport:FolderSccBigQueryExport default folders/{{folder}}/bigQueryExports/{{big_query_export_id}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/folderSccBigQueryExport:FolderSccBigQueryExport default {{folder}}/{{big_query_export_id}}\n```\n\n", + "description": "A Cloud Security Command Center (Cloud SCC) Big Query Export Config.\nIt represents exporting Security Command Center data, including assets, findings, and security marks\nto a BigQuery instance.\n\n\u003e **Note:** In order to use Cloud SCC resources, your organization must be enrolled\nin [SCC Standard/Premium](https://cloud.google.com/security-command-center/docs/quickstart-security-command-center).\nWithout doing so, you may run into errors during resource creation.\n\n\nTo get more information about FolderSccBigQueryExport, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v1/folders.bigQueryExports)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query)\n\n## Example Usage\n\n### Scc Folder Big Query Export 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 folder = new gcp.organizations.Folder(\"folder\", {\n parent: \"organizations/123456789\",\n displayName: \"folder-name\",\n deletionProtection: false,\n});\nconst _default = new gcp.bigquery.Dataset(\"default\", {\n datasetId: \"my_dataset_id\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultPartitionExpirationMs: undefined,\n labels: {\n env: \"default\",\n },\n});\nconst customBigQueryExportConfig = new gcp.securitycenter.FolderSccBigQueryExport(\"custom_big_query_export_config\", {\n bigQueryExportId: \"my-export\",\n folder: folder.folderId,\n dataset: _default.id,\n description: \"Cloud Security Command Center Findings Big Query Export Config\",\n filter: \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n parent=\"organizations/123456789\",\n display_name=\"folder-name\",\n deletion_protection=False)\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"my_dataset_id\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_partition_expiration_ms=None,\n labels={\n \"env\": \"default\",\n })\ncustom_big_query_export_config = gcp.securitycenter.FolderSccBigQueryExport(\"custom_big_query_export_config\",\n big_query_export_id=\"my-export\",\n folder=folder.folder_id,\n dataset=default.id,\n description=\"Cloud Security Command Center Findings Big Query Export Config\",\n filter=\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder-name\",\n DeletionProtection = false,\n });\n\n var @default = new Gcp.BigQuery.Dataset(\"default\", new()\n {\n DatasetId = \"my_dataset_id\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultPartitionExpirationMs = null,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var customBigQueryExportConfig = new Gcp.SecurityCenter.FolderSccBigQueryExport(\"custom_big_query_export_config\", new()\n {\n BigQueryExportId = \"my-export\",\n Folder = folder.FolderId,\n Dataset = @default.Id,\n Description = \"Cloud Security Command Center Findings Big Query Export Config\",\n Filter = \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\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-gcp/sdk/v8/go/gcp/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder-name\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_dataset_id\"),\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\tDefaultPartitionExpirationMs: nil,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewFolderSccBigQueryExport(ctx, \"custom_big_query_export_config\", \u0026securitycenter.FolderSccBigQueryExportArgs{\n\t\t\tBigQueryExportId: pulumi.String(\"my-export\"),\n\t\t\tFolder: folder.FolderId,\n\t\t\tDataset: _default.ID(),\n\t\t\tDescription: pulumi.String(\"Cloud Security Command Center Findings Big Query Export Config\"),\n\t\t\tFilter: pulumi.String(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.securitycenter.FolderSccBigQueryExport;\nimport com.pulumi.gcp.securitycenter.FolderSccBigQueryExportArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var folder = new Folder(\"folder\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder-name\")\n .deletionProtection(false)\n .build());\n\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .datasetId(\"my_dataset_id\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultPartitionExpirationMs(null)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var customBigQueryExportConfig = new FolderSccBigQueryExport(\"customBigQueryExportConfig\", FolderSccBigQueryExportArgs.builder()\n .bigQueryExportId(\"my-export\")\n .folder(folder.folderId())\n .dataset(default_.id())\n .description(\"Cloud Security Command Center Findings Big Query Export Config\")\n .filter(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder-name\n deletionProtection: false\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: my_dataset_id\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultPartitionExpirationMs: null\n labels:\n env: default\n customBigQueryExportConfig:\n type: gcp:securitycenter:FolderSccBigQueryExport\n name: custom_big_query_export_config\n properties:\n bigQueryExportId: my-export\n folder: ${folder.folderId}\n dataset: ${default.id}\n description: Cloud Security Command Center Findings Big Query Export Config\n filter: state=\"ACTIVE\" AND NOT mute=\"MUTED\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolderSccBigQueryExport can be imported using any of these accepted formats:\n\n* `folders/{{folder}}/bigQueryExports/{{big_query_export_id}}`\n\n* `{{folder}}/{{big_query_export_id}}`\n\nWhen using the `pulumi import` command, FolderSccBigQueryExport can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/folderSccBigQueryExport:FolderSccBigQueryExport default folders/{{folder}}/bigQueryExports/{{big_query_export_id}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/folderSccBigQueryExport:FolderSccBigQueryExport default {{folder}}/{{big_query_export_id}}\n```\n\n", "properties": { "bigQueryExportId": { "type": "string", @@ -271816,7 +271816,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, \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", + "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" @@ -271929,7 +271929,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, \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", + "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" @@ -272035,7 +272035,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, \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", + "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" @@ -273980,7 +273980,7 @@ } }, "gcp:securitycenter/v2FolderSccBigQueryExport:V2FolderSccBigQueryExport": { - "description": "A Cloud Security Command Center (Cloud SCC) Big Query Export Config.\nIt represents exporting Security Command Center data, including assets, findings, and security marks\nusing gcloud scc bqexports\n\u003e **Note:** In order to use Cloud SCC resources, your organization must be enrolled\nin [SCC Standard/Premium](https://cloud.google.com/security-command-center/docs/quickstart-security-command-center).\nWithout doing so, you may run into errors during resource creation.\n\n\nTo get more information about FolderSccBigQueryExport, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v2/folders.locations.bigQueryExports)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query)\n\n## Example Usage\n\n### Scc V2 Folder Big Query Export 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 folder = new gcp.organizations.Folder(\"folder\", {\n parent: \"organizations/123456789\",\n displayName: \"folder-name\",\n deletionProtection: false,\n});\nconst _default = new gcp.bigquery.Dataset(\"default\", {\n datasetId: \"my_dataset_id\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultPartitionExpirationMs: undefined,\n labels: {\n env: \"default\",\n },\n});\nconst customBigQueryExportConfig = new gcp.securitycenter.V2FolderSccBigQueryExport(\"custom_big_query_export_config\", {\n bigQueryExportId: \"my-export\",\n folder: folder.folderId,\n dataset: _default.id,\n location: \"global\",\n description: \"Cloud Security Command Center Findings Big Query Export Config\",\n filter: \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n parent=\"organizations/123456789\",\n display_name=\"folder-name\",\n deletion_protection=False)\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"my_dataset_id\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_partition_expiration_ms=None,\n labels={\n \"env\": \"default\",\n })\ncustom_big_query_export_config = gcp.securitycenter.V2FolderSccBigQueryExport(\"custom_big_query_export_config\",\n big_query_export_id=\"my-export\",\n folder=folder.folder_id,\n dataset=default.id,\n location=\"global\",\n description=\"Cloud Security Command Center Findings Big Query Export Config\",\n filter=\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder-name\",\n DeletionProtection = false,\n });\n\n var @default = new Gcp.BigQuery.Dataset(\"default\", new()\n {\n DatasetId = \"my_dataset_id\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultPartitionExpirationMs = null,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var customBigQueryExportConfig = new Gcp.SecurityCenter.V2FolderSccBigQueryExport(\"custom_big_query_export_config\", new()\n {\n BigQueryExportId = \"my-export\",\n Folder = folder.FolderId,\n Dataset = @default.Id,\n Location = \"global\",\n Description = \"Cloud Security Command Center Findings Big Query Export Config\",\n Filter = \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\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-gcp/sdk/v8/go/gcp/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder-name\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_dataset_id\"),\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\tDefaultPartitionExpirationMs: nil,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewV2FolderSccBigQueryExport(ctx, \"custom_big_query_export_config\", \u0026securitycenter.V2FolderSccBigQueryExportArgs{\n\t\t\tBigQueryExportId: pulumi.String(\"my-export\"),\n\t\t\tFolder: folder.FolderId,\n\t\t\tDataset: _default.ID(),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"Cloud Security Command Center Findings Big Query Export Config\"),\n\t\t\tFilter: pulumi.String(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.securitycenter.V2FolderSccBigQueryExport;\nimport com.pulumi.gcp.securitycenter.V2FolderSccBigQueryExportArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var folder = new Folder(\"folder\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder-name\")\n .deletionProtection(false)\n .build());\n\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .datasetId(\"my_dataset_id\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultPartitionExpirationMs(null)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var customBigQueryExportConfig = new V2FolderSccBigQueryExport(\"customBigQueryExportConfig\", V2FolderSccBigQueryExportArgs.builder()\n .bigQueryExportId(\"my-export\")\n .folder(folder.folderId())\n .dataset(default_.id())\n .location(\"global\")\n .description(\"Cloud Security Command Center Findings Big Query Export Config\")\n .filter(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder-name\n deletionProtection: false\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: my_dataset_id\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultPartitionExpirationMs: null\n labels:\n env: default\n customBigQueryExportConfig:\n type: gcp:securitycenter:V2FolderSccBigQueryExport\n name: custom_big_query_export_config\n properties:\n bigQueryExportId: my-export\n folder: ${folder.folderId}\n dataset: ${default.id}\n location: global\n description: Cloud Security Command Center Findings Big Query Export Config\n filter: state=\"ACTIVE\" AND NOT mute=\"MUTED\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolderSccBigQueryExport can be imported using any of these accepted formats:\n\n* `folders/{{folder}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}`\n\n* `{{folder}}/{{location}}/{{big_query_export_id}}`\n\nWhen using the `pulumi import` command, FolderSccBigQueryExport can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/v2FolderSccBigQueryExport:V2FolderSccBigQueryExport default folders/{{folder}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/v2FolderSccBigQueryExport:V2FolderSccBigQueryExport default {{folder}}/{{location}}/{{big_query_export_id}}\n```\n\n", + "description": "A Cloud Security Command Center (Cloud SCC) Big Query Export Config.\nIt represents exporting Security Command Center data, including assets, findings, and security marks\nusing gcloud scc bqexports\n\u003e **Note:** In order to use Cloud SCC resources, your organization must be enrolled\nin [SCC Standard/Premium](https://cloud.google.com/security-command-center/docs/quickstart-security-command-center).\nWithout doing so, you may run into errors during resource creation.\n\n\nTo get more information about FolderSccBigQueryExport, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v2/folders.locations.bigQueryExports)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query)\n\n## Example Usage\n\n### Scc V2 Folder Big Query Export 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 folder = new gcp.organizations.Folder(\"folder\", {\n parent: \"organizations/123456789\",\n displayName: \"folder-name\",\n deletionProtection: false,\n});\nconst _default = new gcp.bigquery.Dataset(\"default\", {\n datasetId: \"my_dataset_id\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultPartitionExpirationMs: undefined,\n labels: {\n env: \"default\",\n },\n});\nconst customBigQueryExportConfig = new gcp.securitycenter.V2FolderSccBigQueryExport(\"custom_big_query_export_config\", {\n bigQueryExportId: \"my-export\",\n folder: folder.folderId,\n dataset: _default.id,\n location: \"global\",\n description: \"Cloud Security Command Center Findings Big Query Export Config\",\n filter: \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfolder = gcp.organizations.Folder(\"folder\",\n parent=\"organizations/123456789\",\n display_name=\"folder-name\",\n deletion_protection=False)\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"my_dataset_id\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_partition_expiration_ms=None,\n labels={\n \"env\": \"default\",\n })\ncustom_big_query_export_config = gcp.securitycenter.V2FolderSccBigQueryExport(\"custom_big_query_export_config\",\n big_query_export_id=\"my-export\",\n folder=folder.folder_id,\n dataset=default.id,\n location=\"global\",\n description=\"Cloud Security Command Center Findings Big Query Export Config\",\n filter=\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var folder = new Gcp.Organizations.Folder(\"folder\", new()\n {\n Parent = \"organizations/123456789\",\n DisplayName = \"folder-name\",\n DeletionProtection = false,\n });\n\n var @default = new Gcp.BigQuery.Dataset(\"default\", new()\n {\n DatasetId = \"my_dataset_id\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultPartitionExpirationMs = null,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var customBigQueryExportConfig = new Gcp.SecurityCenter.V2FolderSccBigQueryExport(\"custom_big_query_export_config\", new()\n {\n BigQueryExportId = \"my-export\",\n Folder = folder.FolderId,\n Dataset = @default.Id,\n Location = \"global\",\n Description = \"Cloud Security Command Center Findings Big Query Export Config\",\n Filter = \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\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-gcp/sdk/v8/go/gcp/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfolder, err := organizations.NewFolder(ctx, \"folder\", \u0026organizations.FolderArgs{\n\t\t\tParent: pulumi.String(\"organizations/123456789\"),\n\t\t\tDisplayName: pulumi.String(\"folder-name\"),\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_default, err := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"my_dataset_id\"),\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\tDefaultPartitionExpirationMs: nil,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewV2FolderSccBigQueryExport(ctx, \"custom_big_query_export_config\", \u0026securitycenter.V2FolderSccBigQueryExportArgs{\n\t\t\tBigQueryExportId: pulumi.String(\"my-export\"),\n\t\t\tFolder: folder.FolderId,\n\t\t\tDataset: _default.ID(),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"Cloud Security Command Center Findings Big Query Export Config\"),\n\t\t\tFilter: pulumi.String(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.organizations.Folder;\nimport com.pulumi.gcp.organizations.FolderArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.securitycenter.V2FolderSccBigQueryExport;\nimport com.pulumi.gcp.securitycenter.V2FolderSccBigQueryExportArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var folder = new Folder(\"folder\", FolderArgs.builder()\n .parent(\"organizations/123456789\")\n .displayName(\"folder-name\")\n .deletionProtection(false)\n .build());\n\n var default_ = new Dataset(\"default\", DatasetArgs.builder()\n .datasetId(\"my_dataset_id\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultPartitionExpirationMs(null)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var customBigQueryExportConfig = new V2FolderSccBigQueryExport(\"customBigQueryExportConfig\", V2FolderSccBigQueryExportArgs.builder()\n .bigQueryExportId(\"my-export\")\n .folder(folder.folderId())\n .dataset(default_.id())\n .location(\"global\")\n .description(\"Cloud Security Command Center Findings Big Query Export Config\")\n .filter(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n folder:\n type: gcp:organizations:Folder\n properties:\n parent: organizations/123456789\n displayName: folder-name\n deletionProtection: false\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: my_dataset_id\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultPartitionExpirationMs: null\n labels:\n env: default\n customBigQueryExportConfig:\n type: gcp:securitycenter:V2FolderSccBigQueryExport\n name: custom_big_query_export_config\n properties:\n bigQueryExportId: my-export\n folder: ${folder.folderId}\n dataset: ${default.id}\n location: global\n description: Cloud Security Command Center Findings Big Query Export Config\n filter: state=\"ACTIVE\" AND NOT mute=\"MUTED\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFolderSccBigQueryExport can be imported using any of these accepted formats:\n\n* `folders/{{folder}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}`\n\n* `{{folder}}/{{location}}/{{big_query_export_id}}`\n\nWhen using the `pulumi import` command, FolderSccBigQueryExport can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/v2FolderSccBigQueryExport:V2FolderSccBigQueryExport default folders/{{folder}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/v2FolderSccBigQueryExport:V2FolderSccBigQueryExport default {{folder}}/{{location}}/{{big_query_export_id}}\n```\n\n", "properties": { "bigQueryExportId": { "type": "string", @@ -274384,7 +274384,7 @@ } }, "gcp:securitycenter/v2OrganizationSccBigQueryExport:V2OrganizationSccBigQueryExport": { - "description": "A Cloud Security Command Center (Cloud SCC) Big Query Export Config.\nIt represents exporting Security Command Center data, including assets, findings, and security marks\nusing gcloud scc bqexports\n\u003e **Note:** In order to use Cloud SCC resources, your organization must be enrolled\nin [SCC Standard/Premium](https://cloud.google.com/security-command-center/docs/quickstart-security-command-center).\nWithout doing so, you may run into errors during resource creation.\n\n\nTo get more information about OrganizationSccBigQueryExport, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v2/organizations.locations.bigQueryExports)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query)\n\n## Example Usage\n\n### Scc V2 Organization Big Query Export 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.bigquery.Dataset(\"default\", {\n datasetId: \"\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultPartitionExpirationMs: undefined,\n labels: {\n env: \"default\",\n },\n});\nconst customBigQueryExportConfig = new gcp.securitycenter.V2OrganizationSccBigQueryExport(\"custom_big_query_export_config\", {\n name: \"my-export\",\n bigQueryExportId: \"my-export\",\n organization: \"123456789\",\n dataset: _default.id,\n location: \"global\",\n description: \"Cloud Security Command Center Findings Big Query Export Config\",\n filter: \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_partition_expiration_ms=None,\n labels={\n \"env\": \"default\",\n })\ncustom_big_query_export_config = gcp.securitycenter.V2OrganizationSccBigQueryExport(\"custom_big_query_export_config\",\n name=\"my-export\",\n big_query_export_id=\"my-export\",\n organization=\"123456789\",\n dataset=default.id,\n location=\"global\",\n description=\"Cloud Security Command Center Findings Big Query Export Config\",\n filter=\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n```\n```csharp\nusing 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 = \"\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultPartitionExpirationMs = null,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var customBigQueryExportConfig = new Gcp.SecurityCenter.V2OrganizationSccBigQueryExport(\"custom_big_query_export_config\", new()\n {\n Name = \"my-export\",\n BigQueryExportId = \"my-export\",\n Organization = \"123456789\",\n Dataset = @default.Id,\n Location = \"global\",\n Description = \"Cloud Security Command Center Findings Big Query Export Config\",\n Filter = \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\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/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"\"),\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\tDefaultPartitionExpirationMs: nil,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewV2OrganizationSccBigQueryExport(ctx, \"custom_big_query_export_config\", \u0026securitycenter.V2OrganizationSccBigQueryExportArgs{\n\t\t\tName: pulumi.String(\"my-export\"),\n\t\t\tBigQueryExportId: pulumi.String(\"my-export\"),\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tDataset: _default.ID(),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"Cloud Security Command Center Findings Big Query Export Config\"),\n\t\t\tFilter: pulumi.String(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.securitycenter.V2OrganizationSccBigQueryExport;\nimport com.pulumi.gcp.securitycenter.V2OrganizationSccBigQueryExportArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultPartitionExpirationMs(null)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var customBigQueryExportConfig = new V2OrganizationSccBigQueryExport(\"customBigQueryExportConfig\", V2OrganizationSccBigQueryExportArgs.builder()\n .name(\"my-export\")\n .bigQueryExportId(\"my-export\")\n .organization(\"123456789\")\n .dataset(default_.id())\n .location(\"global\")\n .description(\"Cloud Security Command Center Findings Big Query Export Config\")\n .filter(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: \"\"\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultPartitionExpirationMs: null\n labels:\n env: default\n customBigQueryExportConfig:\n type: gcp:securitycenter:V2OrganizationSccBigQueryExport\n name: custom_big_query_export_config\n properties:\n name: my-export\n bigQueryExportId: my-export\n organization: '123456789'\n dataset: ${default.id}\n location: global\n description: Cloud Security Command Center Findings Big Query Export Config\n filter: state=\"ACTIVE\" AND NOT mute=\"MUTED\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationSccBigQueryExport can be imported using any of these accepted formats:\n\n* `organizations/{{organization}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}`\n\n* `{{organization}}/{{location}}/{{big_query_export_id}}`\n\nWhen using the `pulumi import` command, OrganizationSccBigQueryExport can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/v2OrganizationSccBigQueryExport:V2OrganizationSccBigQueryExport default organizations/{{organization}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/v2OrganizationSccBigQueryExport:V2OrganizationSccBigQueryExport default {{organization}}/{{location}}/{{big_query_export_id}}\n```\n\n", + "description": "A Cloud Security Command Center (Cloud SCC) Big Query Export Config.\nIt represents exporting Security Command Center data, including assets, findings, and security marks\nusing gcloud scc bqexports\n\u003e **Note:** In order to use Cloud SCC resources, your organization must be enrolled\nin [SCC Standard/Premium](https://cloud.google.com/security-command-center/docs/quickstart-security-command-center).\nWithout doing so, you may run into errors during resource creation.\n\n\nTo get more information about OrganizationSccBigQueryExport, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v2/organizations.locations.bigQueryExports)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query)\n\n## Example Usage\n\n### Scc V2 Organization Big Query Export 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.bigquery.Dataset(\"default\", {\n datasetId: \"\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultPartitionExpirationMs: undefined,\n labels: {\n env: \"default\",\n },\n});\nconst customBigQueryExportConfig = new gcp.securitycenter.V2OrganizationSccBigQueryExport(\"custom_big_query_export_config\", {\n name: \"my-export\",\n bigQueryExportId: \"my-export\",\n organization: \"123456789\",\n dataset: _default.id,\n location: \"global\",\n description: \"Cloud Security Command Center Findings Big Query Export Config\",\n filter: \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_partition_expiration_ms=None,\n labels={\n \"env\": \"default\",\n })\ncustom_big_query_export_config = gcp.securitycenter.V2OrganizationSccBigQueryExport(\"custom_big_query_export_config\",\n name=\"my-export\",\n big_query_export_id=\"my-export\",\n organization=\"123456789\",\n dataset=default.id,\n location=\"global\",\n description=\"Cloud Security Command Center Findings Big Query Export Config\",\n filter=\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n```\n```csharp\nusing 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 = \"\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultPartitionExpirationMs = null,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var customBigQueryExportConfig = new Gcp.SecurityCenter.V2OrganizationSccBigQueryExport(\"custom_big_query_export_config\", new()\n {\n Name = \"my-export\",\n BigQueryExportId = \"my-export\",\n Organization = \"123456789\",\n Dataset = @default.Id,\n Location = \"global\",\n Description = \"Cloud Security Command Center Findings Big Query Export Config\",\n Filter = \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\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/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"\"),\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\tDefaultPartitionExpirationMs: nil,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewV2OrganizationSccBigQueryExport(ctx, \"custom_big_query_export_config\", \u0026securitycenter.V2OrganizationSccBigQueryExportArgs{\n\t\t\tName: pulumi.String(\"my-export\"),\n\t\t\tBigQueryExportId: pulumi.String(\"my-export\"),\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tDataset: _default.ID(),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"Cloud Security Command Center Findings Big Query Export Config\"),\n\t\t\tFilter: pulumi.String(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.securitycenter.V2OrganizationSccBigQueryExport;\nimport com.pulumi.gcp.securitycenter.V2OrganizationSccBigQueryExportArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultPartitionExpirationMs(null)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var customBigQueryExportConfig = new V2OrganizationSccBigQueryExport(\"customBigQueryExportConfig\", V2OrganizationSccBigQueryExportArgs.builder()\n .name(\"my-export\")\n .bigQueryExportId(\"my-export\")\n .organization(\"123456789\")\n .dataset(default_.id())\n .location(\"global\")\n .description(\"Cloud Security Command Center Findings Big Query Export Config\")\n .filter(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: \"\"\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultPartitionExpirationMs: null\n labels:\n env: default\n customBigQueryExportConfig:\n type: gcp:securitycenter:V2OrganizationSccBigQueryExport\n name: custom_big_query_export_config\n properties:\n name: my-export\n bigQueryExportId: my-export\n organization: '123456789'\n dataset: ${default.id}\n location: global\n description: Cloud Security Command Center Findings Big Query Export Config\n filter: state=\"ACTIVE\" AND NOT mute=\"MUTED\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationSccBigQueryExport can be imported using any of these accepted formats:\n\n* `organizations/{{organization}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}`\n\n* `{{organization}}/{{location}}/{{big_query_export_id}}`\n\nWhen using the `pulumi import` command, OrganizationSccBigQueryExport can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/v2OrganizationSccBigQueryExport:V2OrganizationSccBigQueryExport default organizations/{{organization}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/v2OrganizationSccBigQueryExport:V2OrganizationSccBigQueryExport default {{organization}}/{{location}}/{{big_query_export_id}}\n```\n\n", "properties": { "bigQueryExportId": { "type": "string", @@ -274532,7 +274532,7 @@ } }, "gcp:securitycenter/v2OrganizationSccBigQueryExports:V2OrganizationSccBigQueryExports": { - "description": "\u003e **Warning:** `gcp.securitycenter.V2OrganizationSccBigQueryExports` is deprecated and will be removed in a future major release. Use `gcp.securitycenter.V2OrganizationSccBigQueryExport` instead.\n\nA Cloud Security Command Center (Cloud SCC) Big Query Export Config.\nIt represents exporting Security Command Center data, including assets, findings, and security marks\nusing gcloud scc bqexports\n\u003e **Note:** In order to use Cloud SCC resources, your organization must be enrolled\nin [SCC Standard/Premium](https://cloud.google.com/security-command-center/docs/quickstart-security-command-center).\nWithout doing so, you may run into errors during resource creation.\n\n\nTo get more information about OrganizationSccBigQueryExports, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v2/organizations.locations.bigQueryExports)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query)\n\n## Example Usage\n\n### Scc V2 Organization Big Query Exports 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.bigquery.Dataset(\"default\", {\n datasetId: \"\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultPartitionExpirationMs: undefined,\n labels: {\n env: \"default\",\n },\n});\nconst customBigQueryExportConfig = new gcp.securitycenter.V2OrganizationSccBigQueryExports(\"custom_big_query_export_config\", {\n name: \"my-export\",\n bigQueryExportId: \"my-export\",\n organization: \"123456789\",\n dataset: _default.id,\n location: \"global\",\n description: \"Cloud Security Command Center Findings Big Query Export Config\",\n filter: \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_partition_expiration_ms=None,\n labels={\n \"env\": \"default\",\n })\ncustom_big_query_export_config = gcp.securitycenter.V2OrganizationSccBigQueryExports(\"custom_big_query_export_config\",\n name=\"my-export\",\n big_query_export_id=\"my-export\",\n organization=\"123456789\",\n dataset=default.id,\n location=\"global\",\n description=\"Cloud Security Command Center Findings Big Query Export Config\",\n filter=\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n```\n```csharp\nusing 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 = \"\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultPartitionExpirationMs = null,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var customBigQueryExportConfig = new Gcp.SecurityCenter.V2OrganizationSccBigQueryExports(\"custom_big_query_export_config\", new()\n {\n Name = \"my-export\",\n BigQueryExportId = \"my-export\",\n Organization = \"123456789\",\n Dataset = @default.Id,\n Location = \"global\",\n Description = \"Cloud Security Command Center Findings Big Query Export Config\",\n Filter = \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\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/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"\"),\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\tDefaultPartitionExpirationMs: nil,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewV2OrganizationSccBigQueryExports(ctx, \"custom_big_query_export_config\", \u0026securitycenter.V2OrganizationSccBigQueryExportsArgs{\n\t\t\tName: pulumi.String(\"my-export\"),\n\t\t\tBigQueryExportId: pulumi.String(\"my-export\"),\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tDataset: _default.ID(),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"Cloud Security Command Center Findings Big Query Export Config\"),\n\t\t\tFilter: pulumi.String(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.securitycenter.V2OrganizationSccBigQueryExports;\nimport com.pulumi.gcp.securitycenter.V2OrganizationSccBigQueryExportsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultPartitionExpirationMs(null)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var customBigQueryExportConfig = new V2OrganizationSccBigQueryExports(\"customBigQueryExportConfig\", V2OrganizationSccBigQueryExportsArgs.builder()\n .name(\"my-export\")\n .bigQueryExportId(\"my-export\")\n .organization(\"123456789\")\n .dataset(default_.id())\n .location(\"global\")\n .description(\"Cloud Security Command Center Findings Big Query Export Config\")\n .filter(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: \"\"\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultPartitionExpirationMs: null\n labels:\n env: default\n customBigQueryExportConfig:\n type: gcp:securitycenter:V2OrganizationSccBigQueryExports\n name: custom_big_query_export_config\n properties:\n name: my-export\n bigQueryExportId: my-export\n organization: '123456789'\n dataset: ${default.id}\n location: global\n description: Cloud Security Command Center Findings Big Query Export Config\n filter: state=\"ACTIVE\" AND NOT mute=\"MUTED\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationSccBigQueryExports can be imported using any of these accepted formats:\n\n* `organizations/{{organization}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}`\n\n* `{{organization}}/{{location}}/{{big_query_export_id}}`\n\nWhen using the `pulumi import` command, OrganizationSccBigQueryExports can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/v2OrganizationSccBigQueryExports:V2OrganizationSccBigQueryExports default organizations/{{organization}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/v2OrganizationSccBigQueryExports:V2OrganizationSccBigQueryExports default {{organization}}/{{location}}/{{big_query_export_id}}\n```\n\n", + "description": "\u003e **Warning:** `gcp.securitycenter.V2OrganizationSccBigQueryExports` is deprecated and will be removed in a future major release. Use `gcp.securitycenter.V2OrganizationSccBigQueryExport` instead.\n\nA Cloud Security Command Center (Cloud SCC) Big Query Export Config.\nIt represents exporting Security Command Center data, including assets, findings, and security marks\nusing gcloud scc bqexports\n\u003e **Note:** In order to use Cloud SCC resources, your organization must be enrolled\nin [SCC Standard/Premium](https://cloud.google.com/security-command-center/docs/quickstart-security-command-center).\nWithout doing so, you may run into errors during resource creation.\n\n\nTo get more information about OrganizationSccBigQueryExports, see:\n\n* [API documentation](https://cloud.google.com/security-command-center/docs/reference/rest/v2/organizations.locations.bigQueryExports)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query)\n\n## Example Usage\n\n### Scc V2 Organization Big Query Exports 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.bigquery.Dataset(\"default\", {\n datasetId: \"\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n defaultTableExpirationMs: 3600000,\n defaultPartitionExpirationMs: undefined,\n labels: {\n env: \"default\",\n },\n});\nconst customBigQueryExportConfig = new gcp.securitycenter.V2OrganizationSccBigQueryExports(\"custom_big_query_export_config\", {\n name: \"my-export\",\n bigQueryExportId: \"my-export\",\n organization: \"123456789\",\n dataset: _default.id,\n location: \"global\",\n description: \"Cloud Security Command Center Findings Big Query Export Config\",\n filter: \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.bigquery.Dataset(\"default\",\n dataset_id=\"\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\",\n default_table_expiration_ms=3600000,\n default_partition_expiration_ms=None,\n labels={\n \"env\": \"default\",\n })\ncustom_big_query_export_config = gcp.securitycenter.V2OrganizationSccBigQueryExports(\"custom_big_query_export_config\",\n name=\"my-export\",\n big_query_export_id=\"my-export\",\n organization=\"123456789\",\n dataset=default.id,\n location=\"global\",\n description=\"Cloud Security Command Center Findings Big Query Export Config\",\n filter=\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n```\n```csharp\nusing 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 = \"\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n DefaultTableExpirationMs = 3600000,\n DefaultPartitionExpirationMs = null,\n Labels = \n {\n { \"env\", \"default\" },\n },\n });\n\n var customBigQueryExportConfig = new Gcp.SecurityCenter.V2OrganizationSccBigQueryExports(\"custom_big_query_export_config\", new()\n {\n Name = \"my-export\",\n BigQueryExportId = \"my-export\",\n Organization = \"123456789\",\n Dataset = @default.Id,\n Location = \"global\",\n Description = \"Cloud Security Command Center Findings Big Query Export Config\",\n Filter = \"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\",\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/securitycenter\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := bigquery.NewDataset(ctx, \"default\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"\"),\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\tDefaultPartitionExpirationMs: nil,\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"env\": pulumi.String(\"default\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = securitycenter.NewV2OrganizationSccBigQueryExports(ctx, \"custom_big_query_export_config\", \u0026securitycenter.V2OrganizationSccBigQueryExportsArgs{\n\t\t\tName: pulumi.String(\"my-export\"),\n\t\t\tBigQueryExportId: pulumi.String(\"my-export\"),\n\t\t\tOrganization: pulumi.String(\"123456789\"),\n\t\t\tDataset: _default.ID(),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"Cloud Security Command Center Findings Big Query Export Config\"),\n\t\t\tFilter: pulumi.String(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.securitycenter.V2OrganizationSccBigQueryExports;\nimport com.pulumi.gcp.securitycenter.V2OrganizationSccBigQueryExportsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .defaultTableExpirationMs(3600000)\n .defaultPartitionExpirationMs(null)\n .labels(Map.of(\"env\", \"default\"))\n .build());\n\n var customBigQueryExportConfig = new V2OrganizationSccBigQueryExports(\"customBigQueryExportConfig\", V2OrganizationSccBigQueryExportsArgs.builder()\n .name(\"my-export\")\n .bigQueryExportId(\"my-export\")\n .organization(\"123456789\")\n .dataset(default_.id())\n .location(\"global\")\n .description(\"Cloud Security Command Center Findings Big Query Export Config\")\n .filter(\"state=\\\"ACTIVE\\\" AND NOT mute=\\\"MUTED\\\"\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: \"\"\n friendlyName: test\n description: This is a test description\n location: US\n defaultTableExpirationMs: 3.6e+06\n defaultPartitionExpirationMs: null\n labels:\n env: default\n customBigQueryExportConfig:\n type: gcp:securitycenter:V2OrganizationSccBigQueryExports\n name: custom_big_query_export_config\n properties:\n name: my-export\n bigQueryExportId: my-export\n organization: '123456789'\n dataset: ${default.id}\n location: global\n description: Cloud Security Command Center Findings Big Query Export Config\n filter: state=\"ACTIVE\" AND NOT mute=\"MUTED\"\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nOrganizationSccBigQueryExports can be imported using any of these accepted formats:\n\n* `organizations/{{organization}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}`\n\n* `{{organization}}/{{location}}/{{big_query_export_id}}`\n\nWhen using the `pulumi import` command, OrganizationSccBigQueryExports can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:securitycenter/v2OrganizationSccBigQueryExports:V2OrganizationSccBigQueryExports default organizations/{{organization}}/locations/{{location}}/bigQueryExports/{{big_query_export_id}}\n```\n\n```sh\n$ pulumi import gcp:securitycenter/v2OrganizationSccBigQueryExports:V2OrganizationSccBigQueryExports default {{organization}}/{{location}}/{{big_query_export_id}}\n```\n\n", "properties": { "bigQueryExportId": { "type": "string", @@ -275920,7 +275920,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, \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", + "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", @@ -276020,7 +276020,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, \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", + "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", @@ -276113,7 +276113,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, \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", + "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", @@ -277122,7 +277122,7 @@ } }, "gcp:servicenetworking/connection:Connection": { - "description": "Manages a private VPC connection with a GCP service provider. For more information see\n[the official documentation](https://cloud.google.com/vpc/docs/configure-private-services-access#creating-connection)\nand\n[API](https://cloud.google.com/service-infrastructure/docs/service-networking/reference/rest/v1/services.connections).\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// Create a VPC network\nconst peeringNetwork = new gcp.compute.Network(\"peering_network\", {name: \"peering-network\"});\n// Create an IP address\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: peeringNetwork.id,\n});\n// Create a private connection\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: peeringNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\n// (Optional) Import or export custom routes\nconst peeringRoutes = new gcp.compute.NetworkPeeringRoutesConfig(\"peering_routes\", {\n peering: _default.peering,\n network: peeringNetwork.name,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Create a VPC network\npeering_network = gcp.compute.Network(\"peering_network\", name=\"peering-network\")\n# Create an IP address\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=peering_network.id)\n# Create a private connection\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=peering_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\n# (Optional) Import or export custom routes\npeering_routes = gcp.compute.NetworkPeeringRoutesConfig(\"peering_routes\",\n peering=default.peering,\n network=peering_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 // Create a VPC network\n var peeringNetwork = new Gcp.Compute.Network(\"peering_network\", new()\n {\n Name = \"peering-network\",\n });\n\n // Create an IP address\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 = peeringNetwork.Id,\n });\n\n // Create a private connection\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = peeringNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n // (Optional) Import or export custom routes\n var peeringRoutes = new Gcp.Compute.NetworkPeeringRoutesConfig(\"peering_routes\", new()\n {\n Peering = @default.Peering,\n Network = peeringNetwork.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/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// Create a VPC network\n\t\tpeeringNetwork, err := compute.NewNetwork(ctx, \"peering_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"peering-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create an IP address\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"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: peeringNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a private connection\n\t\t_, err = servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: peeringNetwork.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// (Optional) Import or export custom routes\n\t\t_, err = compute.NewNetworkPeeringRoutesConfig(ctx, \"peering_routes\", \u0026compute.NetworkPeeringRoutesConfigArgs{\n\t\t\tPeering: _default.Peering,\n\t\t\tNetwork: peeringNetwork.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.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\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 // Create a VPC network\n var peeringNetwork = new Network(\"peeringNetwork\", NetworkArgs.builder()\n .name(\"peering-network\")\n .build());\n\n // Create an IP address\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(peeringNetwork.id())\n .build());\n\n // Create a private connection\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(peeringNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n // (Optional) Import or export custom routes\n var peeringRoutes = new NetworkPeeringRoutesConfig(\"peeringRoutes\", NetworkPeeringRoutesConfigArgs.builder()\n .peering(default_.peering())\n .network(peeringNetwork.name())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a VPC network\n peeringNetwork:\n type: gcp:compute:Network\n name: peering_network\n properties:\n name: peering-network\n # Create an IP address\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: ${peeringNetwork.id}\n # Create a private connection\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${peeringNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n # (Optional) Import or export custom routes\n peeringRoutes:\n type: gcp:compute:NetworkPeeringRoutesConfig\n name: peering_routes\n properties:\n peering: ${default.peering}\n network: ${peeringNetwork.name}\n importCustomRoutes: true\n exportCustomRoutes: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceNetworkingConnection can be imported using any of these accepted formats\n\n* `{{peering-network}}:{{service}}`\n\n* `projects/{{project}}/global/networks/{{peering-network}}:{{service}}`\n\nWhen using the `pulumi import` command, NAME_HERE can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:servicenetworking/connection:Connection default {{peering-network}}:{{service}}\n```\n\n```sh\n$ pulumi import gcp:servicenetworking/connection:Connection default /projects/{{project}}/global/networks/{{peering-network}}:{{service}}\n```\n\n", + "description": "Manages a private VPC connection with a GCP service provider. For more information see\n[the official documentation](https://cloud.google.com/vpc/docs/configure-private-services-access#creating-connection)\nand\n[API](https://cloud.google.com/service-infrastructure/docs/service-networking/reference/rest/v1/services.connections).\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// Create a VPC network\nconst peeringNetwork = new gcp.compute.Network(\"peering_network\", {name: \"peering-network\"});\n// Create an IP address\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: peeringNetwork.id,\n});\n// Create a private connection\nconst _default = new gcp.servicenetworking.Connection(\"default\", {\n network: peeringNetwork.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [privateIpAlloc.name],\n});\n// (Optional) Import or export custom routes\nconst peeringRoutes = new gcp.compute.NetworkPeeringRoutesConfig(\"peering_routes\", {\n peering: _default.peering,\n network: peeringNetwork.name,\n importCustomRoutes: true,\n exportCustomRoutes: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Create a VPC network\npeering_network = gcp.compute.Network(\"peering_network\", name=\"peering-network\")\n# Create an IP address\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=peering_network.id)\n# Create a private connection\ndefault = gcp.servicenetworking.Connection(\"default\",\n network=peering_network.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[private_ip_alloc.name])\n# (Optional) Import or export custom routes\npeering_routes = gcp.compute.NetworkPeeringRoutesConfig(\"peering_routes\",\n peering=default.peering,\n network=peering_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 // Create a VPC network\n var peeringNetwork = new Gcp.Compute.Network(\"peering_network\", new()\n {\n Name = \"peering-network\",\n });\n\n // Create an IP address\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 = peeringNetwork.Id,\n });\n\n // Create a private connection\n var @default = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = peeringNetwork.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n privateIpAlloc.Name,\n },\n });\n\n // (Optional) Import or export custom routes\n var peeringRoutes = new Gcp.Compute.NetworkPeeringRoutesConfig(\"peering_routes\", new()\n {\n Peering = @default.Peering,\n Network = peeringNetwork.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/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// Create a VPC network\n\t\tpeeringNetwork, err := compute.NewNetwork(ctx, \"peering_network\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"peering-network\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create an IP address\n\t\tprivateIpAlloc, err := compute.NewGlobalAddress(ctx, \"private_ip_alloc\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"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: peeringNetwork.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a private connection\n\t\t_default, err := servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: peeringNetwork.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// (Optional) Import or export custom routes\n\t\t_, err = compute.NewNetworkPeeringRoutesConfig(ctx, \"peering_routes\", \u0026compute.NetworkPeeringRoutesConfigArgs{\n\t\t\tPeering: _default.Peering,\n\t\t\tNetwork: peeringNetwork.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.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\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 // Create a VPC network\n var peeringNetwork = new Network(\"peeringNetwork\", NetworkArgs.builder()\n .name(\"peering-network\")\n .build());\n\n // Create an IP address\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(peeringNetwork.id())\n .build());\n\n // Create a private connection\n var default_ = new Connection(\"default\", ConnectionArgs.builder()\n .network(peeringNetwork.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(privateIpAlloc.name())\n .build());\n\n // (Optional) Import or export custom routes\n var peeringRoutes = new NetworkPeeringRoutesConfig(\"peeringRoutes\", NetworkPeeringRoutesConfigArgs.builder()\n .peering(default_.peering())\n .network(peeringNetwork.name())\n .importCustomRoutes(true)\n .exportCustomRoutes(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a VPC network\n peeringNetwork:\n type: gcp:compute:Network\n name: peering_network\n properties:\n name: peering-network\n # Create an IP address\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: ${peeringNetwork.id}\n # Create a private connection\n default:\n type: gcp:servicenetworking:Connection\n properties:\n network: ${peeringNetwork.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${privateIpAlloc.name}\n # (Optional) Import or export custom routes\n peeringRoutes:\n type: gcp:compute:NetworkPeeringRoutesConfig\n name: peering_routes\n properties:\n peering: ${default.peering}\n network: ${peeringNetwork.name}\n importCustomRoutes: true\n exportCustomRoutes: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nServiceNetworkingConnection can be imported using any of these accepted formats\n\n* `{{peering-network}}:{{service}}`\n\n* `projects/{{project}}/global/networks/{{peering-network}}:{{service}}`\n\nWhen using the `pulumi import` command, NAME_HERE can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:servicenetworking/connection:Connection default {{peering-network}}:{{service}}\n```\n\n```sh\n$ pulumi import gcp:servicenetworking/connection:Connection default /projects/{{project}}/global/networks/{{peering-network}}:{{service}}\n```\n\n", "properties": { "deletionPolicy": { "type": "string" @@ -277326,7 +277326,7 @@ } }, "gcp:servicenetworking/vpcServiceControls:VpcServiceControls": { - "description": "Manages the VPC Service Controls configuration for a service\nnetworking connection\n\nWhen enabled, Google Cloud makes the following\nroute configuration changes in the service producer VPC network:\n- Removes the IPv4 default route (destination 0.0.0.0/0,\n next hop default internet gateway), Google Cloud then creates an\n IPv4 route for destination 199.36.153.4/30 using the default\n internet gateway next hop.\n- Creates Cloud DNS managed private zones and authorizes those zones\n for the service producer VPC network. The zones include\n googleapis.com, gcr.io, pkg.dev, notebooks.cloud.google.com,\n kernels.googleusercontent.com, backupdr.cloud.google.com, and\n backupdr.googleusercontent.com as necessary domains or host names\n for Google APIs and services that are compatible with VPC Service\n Controls. Record data in the zones resolves all host names to\n 199.36.153.4, 199.36.153.5, 199.36.153.6, and 199.36.153.7.\n\nWhen disabled, Google Cloud makes the following route configuration\nchanges in the service producer VPC network:\n- Restores a default route (destination 0.0.0.0/0, next hop default\n internet gateway)\n- Deletes the Cloud DNS managed private zones that provided the host\n name overrides.\n\n\nTo get more information about VPCServiceControls, see:\n\n* [API documentation](https://cloud.google.com/service-infrastructure/docs/service-networking/reference/rest/v1/services)\n* How-to Guides\n * [Enable VPC Service Controls for service networking](https://cloud.google.com/sdk/gcloud/reference/services/vpc-peerings/enable-vpc-service-controls)\n * [Private Google Access with VPC Service Controls](https://cloud.google.com/vpc-service-controls/docs/private-connectivity)\n * [Set up private connectivity to Google APIs and services](https://cloud.google.com/vpc-service-controls/docs/set-up-private-connectivity)\n\n\u003e **Note:** Destroying a `gcp.servicenetworking.VpcServiceControls`\nresource will remove it from state, but will not change the\nunderlying VPC Service Controls configuration for the service\nproducer network.\n\n## Example Usage\n\n### Service Networking Vpc Service Controls Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Create a VPC\nconst _default = new gcp.compute.Network(\"default\", {name: \"example-network\"});\n// Create an IP address\nconst defaultGlobalAddress = new gcp.compute.GlobalAddress(\"default\", {\n name: \"psa-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: _default.id,\n});\n// Create a private connection\nconst defaultConnection = new gcp.servicenetworking.Connection(\"default\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [defaultGlobalAddress.name],\n});\n// Enable VPC-SC on the producer network\nconst defaultVpcServiceControls = new gcp.servicenetworking.VpcServiceControls(\"default\", {\n network: _default.name,\n service: \"servicenetworking.googleapis.com\",\n enabled: true,\n}, {\n dependsOn: [defaultConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Create a VPC\ndefault = gcp.compute.Network(\"default\", name=\"example-network\")\n# Create an IP address\ndefault_global_address = gcp.compute.GlobalAddress(\"default\",\n name=\"psa-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=default.id)\n# Create a private connection\ndefault_connection = gcp.servicenetworking.Connection(\"default\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[default_global_address.name])\n# Enable VPC-SC on the producer network\ndefault_vpc_service_controls = gcp.servicenetworking.VpcServiceControls(\"default\",\n network=default.name,\n service=\"servicenetworking.googleapis.com\",\n enabled=True,\n opts = pulumi.ResourceOptions(depends_on=[default_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Create a VPC\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"example-network\",\n });\n\n // Create an IP address\n var defaultGlobalAddress = new Gcp.Compute.GlobalAddress(\"default\", new()\n {\n Name = \"psa-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n // Create a private connection\n var defaultConnection = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n defaultGlobalAddress.Name,\n },\n });\n\n // Enable VPC-SC on the producer network\n var defaultVpcServiceControls = new Gcp.ServiceNetworking.VpcServiceControls(\"default\", new()\n {\n Network = @default.Name,\n Service = \"servicenetworking.googleapis.com\",\n Enabled = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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// Create a VPC\n\t\t_, err := compute.NewNetwork(ctx, \"default\", \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\t// Create an IP address\n\t\tdefaultGlobalAddress, err := compute.NewGlobalAddress(ctx, \"default\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"psa-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: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a private connection\n\t\tdefaultConnection, err := servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tdefaultGlobalAddress.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Enable VPC-SC on the producer network\n\t\t_, err = servicenetworking.NewVpcServiceControls(ctx, \"default\", \u0026servicenetworking.VpcServiceControlsArgs{\n\t\t\tNetwork: _default.Name,\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.servicenetworking.VpcServiceControls;\nimport com.pulumi.gcp.servicenetworking.VpcServiceControlsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Create a VPC\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"example-network\")\n .build());\n\n // Create an IP address\n var defaultGlobalAddress = new GlobalAddress(\"defaultGlobalAddress\", GlobalAddressArgs.builder()\n .name(\"psa-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n // Create a private connection\n var defaultConnection = new Connection(\"defaultConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(defaultGlobalAddress.name())\n .build());\n\n // Enable VPC-SC on the producer network\n var defaultVpcServiceControls = new VpcServiceControls(\"defaultVpcServiceControls\", VpcServiceControlsArgs.builder()\n .network(default_.name())\n .service(\"servicenetworking.googleapis.com\")\n .enabled(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a VPC\n default:\n type: gcp:compute:Network\n properties:\n name: example-network\n # Create an IP address\n defaultGlobalAddress:\n type: gcp:compute:GlobalAddress\n name: default\n properties:\n name: psa-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${default.id}\n # Create a private connection\n defaultConnection:\n type: gcp:servicenetworking:Connection\n name: default\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${defaultGlobalAddress.name}\n # Enable VPC-SC on the producer network\n defaultVpcServiceControls:\n type: gcp:servicenetworking:VpcServiceControls\n name: default\n properties:\n network: ${default.name}\n service: servicenetworking.googleapis.com\n enabled: true\n options:\n dependsOn:\n - ${defaultConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVPCServiceControls can be imported using any of these accepted formats:\n\n* `services/{{service}}/projects/{{project}}/networks/{{network}}`\n\n* `{{service}}/{{project}}/{{network}}`\n\n* `{{service}}/{{network}}`\n\nWhen using the `pulumi import` command, VPCServiceControls can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:servicenetworking/vpcServiceControls:VpcServiceControls default services/{{service}}/projects/{{project}}/networks/{{network}}\n```\n\n```sh\n$ pulumi import gcp:servicenetworking/vpcServiceControls:VpcServiceControls default {{service}}/{{project}}/{{network}}\n```\n\n```sh\n$ pulumi import gcp:servicenetworking/vpcServiceControls:VpcServiceControls default {{service}}/{{network}}\n```\n\n", + "description": "Manages the VPC Service Controls configuration for a service\nnetworking connection\n\nWhen enabled, Google Cloud makes the following\nroute configuration changes in the service producer VPC network:\n- Removes the IPv4 default route (destination 0.0.0.0/0,\n next hop default internet gateway), Google Cloud then creates an\n IPv4 route for destination 199.36.153.4/30 using the default\n internet gateway next hop.\n- Creates Cloud DNS managed private zones and authorizes those zones\n for the service producer VPC network. The zones include\n googleapis.com, gcr.io, pkg.dev, notebooks.cloud.google.com,\n kernels.googleusercontent.com, backupdr.cloud.google.com, and\n backupdr.googleusercontent.com as necessary domains or host names\n for Google APIs and services that are compatible with VPC Service\n Controls. Record data in the zones resolves all host names to\n 199.36.153.4, 199.36.153.5, 199.36.153.6, and 199.36.153.7.\n\nWhen disabled, Google Cloud makes the following route configuration\nchanges in the service producer VPC network:\n- Restores a default route (destination 0.0.0.0/0, next hop default\n internet gateway)\n- Deletes the Cloud DNS managed private zones that provided the host\n name overrides.\n\n\nTo get more information about VPCServiceControls, see:\n\n* [API documentation](https://cloud.google.com/service-infrastructure/docs/service-networking/reference/rest/v1/services)\n* How-to Guides\n * [Enable VPC Service Controls for service networking](https://cloud.google.com/sdk/gcloud/reference/services/vpc-peerings/enable-vpc-service-controls)\n * [Private Google Access with VPC Service Controls](https://cloud.google.com/vpc-service-controls/docs/private-connectivity)\n * [Set up private connectivity to Google APIs and services](https://cloud.google.com/vpc-service-controls/docs/set-up-private-connectivity)\n\n\u003e **Note:** Destroying a `gcp.servicenetworking.VpcServiceControls`\nresource will remove it from state, but will not change the\nunderlying VPC Service Controls configuration for the service\nproducer network.\n\n## Example Usage\n\n### Service Networking Vpc Service Controls Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Create a VPC\nconst _default = new gcp.compute.Network(\"default\", {name: \"example-network\"});\n// Create an IP address\nconst defaultGlobalAddress = new gcp.compute.GlobalAddress(\"default\", {\n name: \"psa-range\",\n purpose: \"VPC_PEERING\",\n addressType: \"INTERNAL\",\n prefixLength: 16,\n network: _default.id,\n});\n// Create a private connection\nconst defaultConnection = new gcp.servicenetworking.Connection(\"default\", {\n network: _default.id,\n service: \"servicenetworking.googleapis.com\",\n reservedPeeringRanges: [defaultGlobalAddress.name],\n});\n// Enable VPC-SC on the producer network\nconst defaultVpcServiceControls = new gcp.servicenetworking.VpcServiceControls(\"default\", {\n network: _default.name,\n service: \"servicenetworking.googleapis.com\",\n enabled: true,\n}, {\n dependsOn: [defaultConnection],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Create a VPC\ndefault = gcp.compute.Network(\"default\", name=\"example-network\")\n# Create an IP address\ndefault_global_address = gcp.compute.GlobalAddress(\"default\",\n name=\"psa-range\",\n purpose=\"VPC_PEERING\",\n address_type=\"INTERNAL\",\n prefix_length=16,\n network=default.id)\n# Create a private connection\ndefault_connection = gcp.servicenetworking.Connection(\"default\",\n network=default.id,\n service=\"servicenetworking.googleapis.com\",\n reserved_peering_ranges=[default_global_address.name])\n# Enable VPC-SC on the producer network\ndefault_vpc_service_controls = gcp.servicenetworking.VpcServiceControls(\"default\",\n network=default.name,\n service=\"servicenetworking.googleapis.com\",\n enabled=True,\n opts = pulumi.ResourceOptions(depends_on=[default_connection]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Create a VPC\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"example-network\",\n });\n\n // Create an IP address\n var defaultGlobalAddress = new Gcp.Compute.GlobalAddress(\"default\", new()\n {\n Name = \"psa-range\",\n Purpose = \"VPC_PEERING\",\n AddressType = \"INTERNAL\",\n PrefixLength = 16,\n Network = @default.Id,\n });\n\n // Create a private connection\n var defaultConnection = new Gcp.ServiceNetworking.Connection(\"default\", new()\n {\n Network = @default.Id,\n Service = \"servicenetworking.googleapis.com\",\n ReservedPeeringRanges = new[]\n {\n defaultGlobalAddress.Name,\n },\n });\n\n // Enable VPC-SC on the producer network\n var defaultVpcServiceControls = new Gcp.ServiceNetworking.VpcServiceControls(\"default\", new()\n {\n Network = @default.Name,\n Service = \"servicenetworking.googleapis.com\",\n Enabled = true,\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n defaultConnection,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\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// Create a VPC\n\t\t_default, err := compute.NewNetwork(ctx, \"default\", \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\t// Create an IP address\n\t\tdefaultGlobalAddress, err := compute.NewGlobalAddress(ctx, \"default\", \u0026compute.GlobalAddressArgs{\n\t\t\tName: pulumi.String(\"psa-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: _default.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Create a private connection\n\t\tdefaultConnection, err := servicenetworking.NewConnection(ctx, \"default\", \u0026servicenetworking.ConnectionArgs{\n\t\t\tNetwork: _default.ID(),\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tReservedPeeringRanges: pulumi.StringArray{\n\t\t\t\tdefaultGlobalAddress.Name,\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// Enable VPC-SC on the producer network\n\t\t_, err = servicenetworking.NewVpcServiceControls(ctx, \"default\", \u0026servicenetworking.VpcServiceControlsArgs{\n\t\t\tNetwork: _default.Name,\n\t\t\tService: pulumi.String(\"servicenetworking.googleapis.com\"),\n\t\t\tEnabled: pulumi.Bool(true),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tdefaultConnection,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.GlobalAddress;\nimport com.pulumi.gcp.compute.GlobalAddressArgs;\nimport com.pulumi.gcp.servicenetworking.Connection;\nimport com.pulumi.gcp.servicenetworking.ConnectionArgs;\nimport com.pulumi.gcp.servicenetworking.VpcServiceControls;\nimport com.pulumi.gcp.servicenetworking.VpcServiceControlsArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Create a VPC\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"example-network\")\n .build());\n\n // Create an IP address\n var defaultGlobalAddress = new GlobalAddress(\"defaultGlobalAddress\", GlobalAddressArgs.builder()\n .name(\"psa-range\")\n .purpose(\"VPC_PEERING\")\n .addressType(\"INTERNAL\")\n .prefixLength(16)\n .network(default_.id())\n .build());\n\n // Create a private connection\n var defaultConnection = new Connection(\"defaultConnection\", ConnectionArgs.builder()\n .network(default_.id())\n .service(\"servicenetworking.googleapis.com\")\n .reservedPeeringRanges(defaultGlobalAddress.name())\n .build());\n\n // Enable VPC-SC on the producer network\n var defaultVpcServiceControls = new VpcServiceControls(\"defaultVpcServiceControls\", VpcServiceControlsArgs.builder()\n .network(default_.name())\n .service(\"servicenetworking.googleapis.com\")\n .enabled(true)\n .build(), CustomResourceOptions.builder()\n .dependsOn(defaultConnection)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n # Create a VPC\n default:\n type: gcp:compute:Network\n properties:\n name: example-network\n # Create an IP address\n defaultGlobalAddress:\n type: gcp:compute:GlobalAddress\n name: default\n properties:\n name: psa-range\n purpose: VPC_PEERING\n addressType: INTERNAL\n prefixLength: 16\n network: ${default.id}\n # Create a private connection\n defaultConnection:\n type: gcp:servicenetworking:Connection\n name: default\n properties:\n network: ${default.id}\n service: servicenetworking.googleapis.com\n reservedPeeringRanges:\n - ${defaultGlobalAddress.name}\n # Enable VPC-SC on the producer network\n defaultVpcServiceControls:\n type: gcp:servicenetworking:VpcServiceControls\n name: default\n properties:\n network: ${default.name}\n service: servicenetworking.googleapis.com\n enabled: true\n options:\n dependsOn:\n - ${defaultConnection}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nVPCServiceControls can be imported using any of these accepted formats:\n\n* `services/{{service}}/projects/{{project}}/networks/{{network}}`\n\n* `{{service}}/{{project}}/{{network}}`\n\n* `{{service}}/{{network}}`\n\nWhen using the `pulumi import` command, VPCServiceControls can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:servicenetworking/vpcServiceControls:VpcServiceControls default services/{{service}}/projects/{{project}}/networks/{{network}}\n```\n\n```sh\n$ pulumi import gcp:servicenetworking/vpcServiceControls:VpcServiceControls default {{service}}/{{project}}/{{network}}\n```\n\n```sh\n$ pulumi import gcp:servicenetworking/vpcServiceControls:VpcServiceControls default {{service}}/{{network}}\n```\n\n", "properties": { "enabled": { "type": "boolean", @@ -280647,7 +280647,7 @@ } }, "gcp:storage/bucketACL:BucketACL": { - "description": "Authoritatively manages a bucket's ACLs in Google cloud storage service (GCS). For more information see\n[the official documentation](https://cloud.google.com/storage/docs/access-control/lists)\nand\n[API](https://cloud.google.com/storage/docs/json_api/v1/bucketAccessControls).\n\nBucket ACLs can be managed non authoritatively using the `storage_bucket_access_control` resource. Do not use these two resources in conjunction to manage the same bucket.\n\nPermissions can be granted either by ACLs or Cloud IAM policies. In general, permissions granted by Cloud IAM policies do not appear in ACLs, and permissions granted by ACLs do not appear in Cloud IAM policies. The only exception is for ACLs applied directly on a bucket and certain bucket-level Cloud IAM policies, as described in [Cloud IAM relation to ACLs](https://cloud.google.com/storage/docs/access-control/iam#acls).\n\n**NOTE** This resource will not remove the `project-owners-\u003cproject_id\u003e` entity from the `OWNER` role.\n\n## Example Usage\n\nExample creating an ACL on a bucket with one owner, and one reader.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst image_store = new gcp.storage.Bucket(\"image-store\", {\n name: \"image-store-bucket\",\n location: \"EU\",\n});\nconst image_store_acl = new gcp.storage.BucketACL(\"image-store-acl\", {\n bucket: image_store.name,\n roleEntities: [\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_store = gcp.storage.Bucket(\"image-store\",\n name=\"image-store-bucket\",\n location=\"EU\")\nimage_store_acl = gcp.storage.BucketACL(\"image-store-acl\",\n bucket=image_store.name,\n role_entities=[\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var image_store = new Gcp.Storage.Bucket(\"image-store\", new()\n {\n Name = \"image-store-bucket\",\n Location = \"EU\",\n });\n\n var image_store_acl = new Gcp.Storage.BucketACL(\"image-store-acl\", new()\n {\n Bucket = image_store.Name,\n RoleEntities = new[]\n {\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n },\n });\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_, err := storage.NewBucket(ctx, \"image-store\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-store-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketACL(ctx, \"image-store-acl\", \u0026storage.BucketACLArgs{\n\t\t\tBucket: image_store.Name,\n\t\t\tRoleEntities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"OWNER:user-my.email@gmail.com\"),\n\t\t\t\tpulumi.String(\"READER:group-mygroup\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.BucketACL;\nimport com.pulumi.gcp.storage.BucketACLArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image_store = new Bucket(\"image-store\", BucketArgs.builder()\n .name(\"image-store-bucket\")\n .location(\"EU\")\n .build());\n\n var image_store_acl = new BucketACL(\"image-store-acl\", BucketACLArgs.builder()\n .bucket(image_store.name())\n .roleEntities( \n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n image-store:\n type: gcp:storage:Bucket\n properties:\n name: image-store-bucket\n location: EU\n image-store-acl:\n type: gcp:storage:BucketACL\n properties:\n bucket: ${[\"image-store\"].name}\n roleEntities:\n - OWNER:user-my.email@gmail.com\n - READER:group-mygroup\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Authoritatively manages a bucket's ACLs in Google cloud storage service (GCS). For more information see\n[the official documentation](https://cloud.google.com/storage/docs/access-control/lists)\nand\n[API](https://cloud.google.com/storage/docs/json_api/v1/bucketAccessControls).\n\nBucket ACLs can be managed non authoritatively using the `storage_bucket_access_control` resource. Do not use these two resources in conjunction to manage the same bucket.\n\nPermissions can be granted either by ACLs or Cloud IAM policies. In general, permissions granted by Cloud IAM policies do not appear in ACLs, and permissions granted by ACLs do not appear in Cloud IAM policies. The only exception is for ACLs applied directly on a bucket and certain bucket-level Cloud IAM policies, as described in [Cloud IAM relation to ACLs](https://cloud.google.com/storage/docs/access-control/iam#acls).\n\n**NOTE** This resource will not remove the `project-owners-\u003cproject_id\u003e` entity from the `OWNER` role.\n\n## Example Usage\n\nExample creating an ACL on a bucket with one owner, and one reader.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst image_store = new gcp.storage.Bucket(\"image-store\", {\n name: \"image-store-bucket\",\n location: \"EU\",\n});\nconst image_store_acl = new gcp.storage.BucketACL(\"image-store-acl\", {\n bucket: image_store.name,\n roleEntities: [\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_store = gcp.storage.Bucket(\"image-store\",\n name=\"image-store-bucket\",\n location=\"EU\")\nimage_store_acl = gcp.storage.BucketACL(\"image-store-acl\",\n bucket=image_store.name,\n role_entities=[\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var image_store = new Gcp.Storage.Bucket(\"image-store\", new()\n {\n Name = \"image-store-bucket\",\n Location = \"EU\",\n });\n\n var image_store_acl = new Gcp.Storage.BucketACL(\"image-store-acl\", new()\n {\n Bucket = image_store.Name,\n RoleEntities = new[]\n {\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n },\n });\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\timage_store, err := storage.NewBucket(ctx, \"image-store\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-store-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketACL(ctx, \"image-store-acl\", \u0026storage.BucketACLArgs{\n\t\t\tBucket: image_store.Name,\n\t\t\tRoleEntities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"OWNER:user-my.email@gmail.com\"),\n\t\t\t\tpulumi.String(\"READER:group-mygroup\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.BucketACL;\nimport com.pulumi.gcp.storage.BucketACLArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image_store = new Bucket(\"image-store\", BucketArgs.builder()\n .name(\"image-store-bucket\")\n .location(\"EU\")\n .build());\n\n var image_store_acl = new BucketACL(\"image-store-acl\", BucketACLArgs.builder()\n .bucket(image_store.name())\n .roleEntities( \n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n image-store:\n type: gcp:storage:Bucket\n properties:\n name: image-store-bucket\n location: EU\n image-store-acl:\n type: gcp:storage:BucketACL\n properties:\n bucket: ${[\"image-store\"].name}\n roleEntities:\n - OWNER:user-my.email@gmail.com\n - READER:group-mygroup\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "bucket": { "type": "string", @@ -281362,7 +281362,7 @@ } }, "gcp:storage/defaultObjectACL:DefaultObjectACL": { - "description": "Authoritatively manages the default object ACLs for a Google Cloud Storage bucket\nwithout managing the bucket itself.\n\n\u003e Note that for each object, its creator will have the `\"OWNER\"` role in addition\nto the default ACL that has been defined.\n\nFor more information see\n[the official documentation](https://cloud.google.com/storage/docs/access-control/lists) \nand \n[API](https://cloud.google.com/storage/docs/json_api/v1/defaultObjectAccessControls).\n\n\u003e Want fine-grained control over default object ACLs? Use `gcp.storage.DefaultObjectAccessControl`\nto control individual role entity pairs.\n\n## Example Usage\n\nExample creating a default object ACL on a bucket with one owner, and one reader.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst image_store = new gcp.storage.Bucket(\"image-store\", {\n name: \"image-store-bucket\",\n location: \"EU\",\n});\nconst image_store_default_acl = new gcp.storage.DefaultObjectACL(\"image-store-default-acl\", {\n bucket: image_store.name,\n roleEntities: [\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_store = gcp.storage.Bucket(\"image-store\",\n name=\"image-store-bucket\",\n location=\"EU\")\nimage_store_default_acl = gcp.storage.DefaultObjectACL(\"image-store-default-acl\",\n bucket=image_store.name,\n role_entities=[\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var image_store = new Gcp.Storage.Bucket(\"image-store\", new()\n {\n Name = \"image-store-bucket\",\n Location = \"EU\",\n });\n\n var image_store_default_acl = new Gcp.Storage.DefaultObjectACL(\"image-store-default-acl\", new()\n {\n Bucket = image_store.Name,\n RoleEntities = new[]\n {\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n },\n });\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_, err := storage.NewBucket(ctx, \"image-store\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-store-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewDefaultObjectACL(ctx, \"image-store-default-acl\", \u0026storage.DefaultObjectACLArgs{\n\t\t\tBucket: image_store.Name,\n\t\t\tRoleEntities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"OWNER:user-my.email@gmail.com\"),\n\t\t\t\tpulumi.String(\"READER:group-mygroup\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.DefaultObjectACL;\nimport com.pulumi.gcp.storage.DefaultObjectACLArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image_store = new Bucket(\"image-store\", BucketArgs.builder()\n .name(\"image-store-bucket\")\n .location(\"EU\")\n .build());\n\n var image_store_default_acl = new DefaultObjectACL(\"image-store-default-acl\", DefaultObjectACLArgs.builder()\n .bucket(image_store.name())\n .roleEntities( \n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n image-store:\n type: gcp:storage:Bucket\n properties:\n name: image-store-bucket\n location: EU\n image-store-default-acl:\n type: gcp:storage:DefaultObjectACL\n properties:\n bucket: ${[\"image-store\"].name}\n roleEntities:\n - OWNER:user-my.email@gmail.com\n - READER:group-mygroup\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Authoritatively manages the default object ACLs for a Google Cloud Storage bucket\nwithout managing the bucket itself.\n\n\u003e Note that for each object, its creator will have the `\"OWNER\"` role in addition\nto the default ACL that has been defined.\n\nFor more information see\n[the official documentation](https://cloud.google.com/storage/docs/access-control/lists) \nand \n[API](https://cloud.google.com/storage/docs/json_api/v1/defaultObjectAccessControls).\n\n\u003e Want fine-grained control over default object ACLs? Use `gcp.storage.DefaultObjectAccessControl`\nto control individual role entity pairs.\n\n## Example Usage\n\nExample creating a default object ACL on a bucket with one owner, and one reader.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst image_store = new gcp.storage.Bucket(\"image-store\", {\n name: \"image-store-bucket\",\n location: \"EU\",\n});\nconst image_store_default_acl = new gcp.storage.DefaultObjectACL(\"image-store-default-acl\", {\n bucket: image_store.name,\n roleEntities: [\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_store = gcp.storage.Bucket(\"image-store\",\n name=\"image-store-bucket\",\n location=\"EU\")\nimage_store_default_acl = gcp.storage.DefaultObjectACL(\"image-store-default-acl\",\n bucket=image_store.name,\n role_entities=[\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var image_store = new Gcp.Storage.Bucket(\"image-store\", new()\n {\n Name = \"image-store-bucket\",\n Location = \"EU\",\n });\n\n var image_store_default_acl = new Gcp.Storage.DefaultObjectACL(\"image-store-default-acl\", new()\n {\n Bucket = image_store.Name,\n RoleEntities = new[]\n {\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n },\n });\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\timage_store, err := storage.NewBucket(ctx, \"image-store\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-store-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewDefaultObjectACL(ctx, \"image-store-default-acl\", \u0026storage.DefaultObjectACLArgs{\n\t\t\tBucket: image_store.Name,\n\t\t\tRoleEntities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"OWNER:user-my.email@gmail.com\"),\n\t\t\t\tpulumi.String(\"READER:group-mygroup\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.DefaultObjectACL;\nimport com.pulumi.gcp.storage.DefaultObjectACLArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var image_store = new Bucket(\"image-store\", BucketArgs.builder()\n .name(\"image-store-bucket\")\n .location(\"EU\")\n .build());\n\n var image_store_default_acl = new DefaultObjectACL(\"image-store-default-acl\", DefaultObjectACLArgs.builder()\n .bucket(image_store.name())\n .roleEntities( \n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n image-store:\n type: gcp:storage:Bucket\n properties:\n name: image-store-bucket\n location: EU\n image-store-default-acl:\n type: gcp:storage:DefaultObjectACL\n properties:\n bucket: ${[\"image-store\"].name}\n roleEntities:\n - OWNER:user-my.email@gmail.com\n - READER:group-mygroup\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "bucket": { "type": "string", @@ -282363,7 +282363,7 @@ } }, "gcp:storage/objectACL:ObjectACL": { - "description": "Authoritatively manages the access control list (ACL) for an object in a Google\nCloud Storage (GCS) bucket. Removing a `gcp.storage.ObjectACL` sets the\nacl to the `private` [predefined ACL](https://cloud.google.com/storage/docs/access-control#predefined-acl).\n\nFor more information see\n[the official documentation](https://cloud.google.com/storage/docs/access-control/lists) \nand \n[API](https://cloud.google.com/storage/docs/json_api/v1/objectAccessControls).\n\n\u003e Want fine-grained control over object ACLs? Use `gcp.storage.ObjectAccessControl` to control individual\nrole entity pairs.\n\n## Example Usage\n\nCreate an object ACL with one owner and one reader.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst image_store = new gcp.storage.Bucket(\"image-store\", {\n name: \"image-store-bucket\",\n location: \"EU\",\n});\nconst image = new gcp.storage.BucketObject(\"image\", {\n name: \"image1\",\n bucket: image_store.name,\n source: new pulumi.asset.FileAsset(\"image1.jpg\"),\n});\nconst image_store_acl = new gcp.storage.ObjectACL(\"image-store-acl\", {\n bucket: image_store.name,\n object: image.outputName,\n roleEntities: [\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_store = gcp.storage.Bucket(\"image-store\",\n name=\"image-store-bucket\",\n location=\"EU\")\nimage = gcp.storage.BucketObject(\"image\",\n name=\"image1\",\n bucket=image_store.name,\n source=pulumi.FileAsset(\"image1.jpg\"))\nimage_store_acl = gcp.storage.ObjectACL(\"image-store-acl\",\n bucket=image_store.name,\n object=image.output_name,\n role_entities=[\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var image_store = new Gcp.Storage.Bucket(\"image-store\", new()\n {\n Name = \"image-store-bucket\",\n Location = \"EU\",\n });\n\n var image = new Gcp.Storage.BucketObject(\"image\", new()\n {\n Name = \"image1\",\n Bucket = image_store.Name,\n Source = new FileAsset(\"image1.jpg\"),\n });\n\n var image_store_acl = new Gcp.Storage.ObjectACL(\"image-store-acl\", new()\n {\n Bucket = image_store.Name,\n Object = image.OutputName,\n RoleEntities = new[]\n {\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n },\n });\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_, err := storage.NewBucket(ctx, \"image-store\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-store-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\timage, err := storage.NewBucketObject(ctx, \"image\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"image1\"),\n\t\t\tBucket: image_store.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"image1.jpg\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewObjectACL(ctx, \"image-store-acl\", \u0026storage.ObjectACLArgs{\n\t\t\tBucket: image_store.Name,\n\t\t\tObject: image.OutputName,\n\t\t\tRoleEntities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"OWNER:user-my.email@gmail.com\"),\n\t\t\t\tpulumi.String(\"READER:group-mygroup\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.ObjectACL;\nimport com.pulumi.gcp.storage.ObjectACLArgs;\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 image_store = new Bucket(\"image-store\", BucketArgs.builder()\n .name(\"image-store-bucket\")\n .location(\"EU\")\n .build());\n\n var image = new BucketObject(\"image\", BucketObjectArgs.builder()\n .name(\"image1\")\n .bucket(image_store.name())\n .source(new FileAsset(\"image1.jpg\"))\n .build());\n\n var image_store_acl = new ObjectACL(\"image-store-acl\", ObjectACLArgs.builder()\n .bucket(image_store.name())\n .object(image.outputName())\n .roleEntities( \n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n image-store:\n type: gcp:storage:Bucket\n properties:\n name: image-store-bucket\n location: EU\n image:\n type: gcp:storage:BucketObject\n properties:\n name: image1\n bucket: ${[\"image-store\"].name}\n source:\n fn::FileAsset: image1.jpg\n image-store-acl:\n type: gcp:storage:ObjectACL\n properties:\n bucket: ${[\"image-store\"].name}\n object: ${image.outputName}\n roleEntities:\n - OWNER:user-my.email@gmail.com\n - READER:group-mygroup\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", + "description": "Authoritatively manages the access control list (ACL) for an object in a Google\nCloud Storage (GCS) bucket. Removing a `gcp.storage.ObjectACL` sets the\nacl to the `private` [predefined ACL](https://cloud.google.com/storage/docs/access-control#predefined-acl).\n\nFor more information see\n[the official documentation](https://cloud.google.com/storage/docs/access-control/lists) \nand \n[API](https://cloud.google.com/storage/docs/json_api/v1/objectAccessControls).\n\n\u003e Want fine-grained control over object ACLs? Use `gcp.storage.ObjectAccessControl` to control individual\nrole entity pairs.\n\n## Example Usage\n\nCreate an object ACL with one owner and one reader.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst image_store = new gcp.storage.Bucket(\"image-store\", {\n name: \"image-store-bucket\",\n location: \"EU\",\n});\nconst image = new gcp.storage.BucketObject(\"image\", {\n name: \"image1\",\n bucket: image_store.name,\n source: new pulumi.asset.FileAsset(\"image1.jpg\"),\n});\nconst image_store_acl = new gcp.storage.ObjectACL(\"image-store-acl\", {\n bucket: image_store.name,\n object: image.outputName,\n roleEntities: [\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nimage_store = gcp.storage.Bucket(\"image-store\",\n name=\"image-store-bucket\",\n location=\"EU\")\nimage = gcp.storage.BucketObject(\"image\",\n name=\"image1\",\n bucket=image_store.name,\n source=pulumi.FileAsset(\"image1.jpg\"))\nimage_store_acl = gcp.storage.ObjectACL(\"image-store-acl\",\n bucket=image_store.name,\n object=image.output_name,\n role_entities=[\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var image_store = new Gcp.Storage.Bucket(\"image-store\", new()\n {\n Name = \"image-store-bucket\",\n Location = \"EU\",\n });\n\n var image = new Gcp.Storage.BucketObject(\"image\", new()\n {\n Name = \"image1\",\n Bucket = image_store.Name,\n Source = new FileAsset(\"image1.jpg\"),\n });\n\n var image_store_acl = new Gcp.Storage.ObjectACL(\"image-store-acl\", new()\n {\n Bucket = image_store.Name,\n Object = image.OutputName,\n RoleEntities = new[]\n {\n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\",\n },\n });\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\timage_store, err := storage.NewBucket(ctx, \"image-store\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"image-store-bucket\"),\n\t\t\tLocation: pulumi.String(\"EU\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\timage, err := storage.NewBucketObject(ctx, \"image\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"image1\"),\n\t\t\tBucket: image_store.Name,\n\t\t\tSource: pulumi.NewFileAsset(\"image1.jpg\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewObjectACL(ctx, \"image-store-acl\", \u0026storage.ObjectACLArgs{\n\t\t\tBucket: image_store.Name,\n\t\t\tObject: image.OutputName,\n\t\t\tRoleEntities: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"OWNER:user-my.email@gmail.com\"),\n\t\t\t\tpulumi.String(\"READER:group-mygroup\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.ObjectACL;\nimport com.pulumi.gcp.storage.ObjectACLArgs;\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 image_store = new Bucket(\"image-store\", BucketArgs.builder()\n .name(\"image-store-bucket\")\n .location(\"EU\")\n .build());\n\n var image = new BucketObject(\"image\", BucketObjectArgs.builder()\n .name(\"image1\")\n .bucket(image_store.name())\n .source(new FileAsset(\"image1.jpg\"))\n .build());\n\n var image_store_acl = new ObjectACL(\"image-store-acl\", ObjectACLArgs.builder()\n .bucket(image_store.name())\n .object(image.outputName())\n .roleEntities( \n \"OWNER:user-my.email@gmail.com\",\n \"READER:group-mygroup\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n image-store:\n type: gcp:storage:Bucket\n properties:\n name: image-store-bucket\n location: EU\n image:\n type: gcp:storage:BucketObject\n properties:\n name: image1\n bucket: ${[\"image-store\"].name}\n source:\n fn::FileAsset: image1.jpg\n image-store-acl:\n type: gcp:storage:ObjectACL\n properties:\n bucket: ${[\"image-store\"].name}\n object: ${image.outputName}\n roleEntities:\n - OWNER:user-my.email@gmail.com\n - READER:group-mygroup\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nThis resource does not support import.\n\n", "properties": { "bucket": { "type": "string", @@ -282570,7 +282570,7 @@ } }, "gcp:storage/transferAgentPool:TransferAgentPool": { - "description": "Represents an On-Premises Agent pool.\n\n\nTo get more information about AgentPool, see:\n\n* [API documentation](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/projects.agentPools)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/storage-transfer/docs/on-prem-agent-pools)\n\n## Example Usage\n\n### Agent Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.storage.getTransferProjectServiceAccount({\n project: \"my-project-name\",\n});\nconst pubsubEditorRole = new gcp.projects.IAMMember(\"pubsub_editor_role\", {\n project: \"my-project-name\",\n role: \"roles/pubsub.editor\",\n member: _default.then(_default =\u003e `serviceAccount:${_default.email}`),\n});\nconst example = new gcp.storage.TransferAgentPool(\"example\", {\n name: \"agent-pool-example\",\n displayName: \"Source A to destination Z\",\n bandwidthLimit: {\n limitMbps: \"120\",\n },\n}, {\n dependsOn: [pubsubEditorRole],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.get_transfer_project_service_account(project=\"my-project-name\")\npubsub_editor_role = gcp.projects.IAMMember(\"pubsub_editor_role\",\n project=\"my-project-name\",\n role=\"roles/pubsub.editor\",\n member=f\"serviceAccount:{default.email}\")\nexample = gcp.storage.TransferAgentPool(\"example\",\n name=\"agent-pool-example\",\n display_name=\"Source A to destination Z\",\n bandwidth_limit={\n \"limit_mbps\": \"120\",\n },\n opts = pulumi.ResourceOptions(depends_on=[pubsub_editor_role]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Storage.GetTransferProjectServiceAccount.Invoke(new()\n {\n Project = \"my-project-name\",\n });\n\n var pubsubEditorRole = new Gcp.Projects.IAMMember(\"pubsub_editor_role\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/pubsub.editor\",\n Member = @default.Apply(@default =\u003e $\"serviceAccount:{@default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)}\"),\n });\n\n var example = new Gcp.Storage.TransferAgentPool(\"example\", new()\n {\n Name = \"agent-pool-example\",\n DisplayName = \"Source A to destination Z\",\n BandwidthLimit = new Gcp.Storage.Inputs.TransferAgentPoolBandwidthLimitArgs\n {\n LimitMbps = \"120\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n pubsubEditorRole,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_default, err := storage.GetTransferProjectServiceAccount(ctx, \u0026storage.GetTransferProjectServiceAccountArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpubsubEditorRole, err := projects.NewIAMMember(ctx, \"pubsub_editor_role\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/pubsub.editor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", _default.Email),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewTransferAgentPool(ctx, \"example\", \u0026storage.TransferAgentPoolArgs{\n\t\t\tName: pulumi.String(\"agent-pool-example\"),\n\t\t\tDisplayName: pulumi.String(\"Source A to destination Z\"),\n\t\t\tBandwidthLimit: \u0026storage.TransferAgentPoolBandwidthLimitArgs{\n\t\t\t\tLimitMbps: pulumi.String(\"120\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpubsubEditorRole,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetTransferProjectServiceAccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.TransferAgentPool;\nimport com.pulumi.gcp.storage.TransferAgentPoolArgs;\nimport com.pulumi.gcp.storage.inputs.TransferAgentPoolBandwidthLimitArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = StorageFunctions.getTransferProjectServiceAccount(GetTransferProjectServiceAccountArgs.builder()\n .project(\"my-project-name\")\n .build());\n\n var pubsubEditorRole = new IAMMember(\"pubsubEditorRole\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/pubsub.editor\")\n .member(String.format(\"serviceAccount:%s\", default_.email()))\n .build());\n\n var example = new TransferAgentPool(\"example\", TransferAgentPoolArgs.builder()\n .name(\"agent-pool-example\")\n .displayName(\"Source A to destination Z\")\n .bandwidthLimit(TransferAgentPoolBandwidthLimitArgs.builder()\n .limitMbps(\"120\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(pubsubEditorRole)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pubsubEditorRole:\n type: gcp:projects:IAMMember\n name: pubsub_editor_role\n properties:\n project: my-project-name\n role: roles/pubsub.editor\n member: serviceAccount:${default.email}\n example:\n type: gcp:storage:TransferAgentPool\n properties:\n name: agent-pool-example\n displayName: Source A to destination Z\n bandwidthLimit:\n limitMbps: '120'\n options:\n dependsOn:\n - ${pubsubEditorRole}\nvariables:\n default:\n fn::invoke:\n function: gcp:storage:getTransferProjectServiceAccount\n arguments:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAgentPool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/agentPools/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AgentPool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/transferAgentPool:TransferAgentPool default projects/{{project}}/agentPools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/transferAgentPool:TransferAgentPool default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/transferAgentPool:TransferAgentPool default {{name}}\n```\n\n", + "description": "Represents an On-Premises Agent pool.\n\n\nTo get more information about AgentPool, see:\n\n* [API documentation](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/projects.agentPools)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/storage-transfer/docs/on-prem-agent-pools)\n\n## Example Usage\n\n### Agent Pool Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = gcp.storage.getTransferProjectServiceAccount({\n project: \"my-project-name\",\n});\nconst pubsubEditorRole = new gcp.projects.IAMMember(\"pubsub_editor_role\", {\n project: \"my-project-name\",\n role: \"roles/pubsub.editor\",\n member: _default.then(_default =\u003e `serviceAccount:${_default.email}`),\n});\nconst example = new gcp.storage.TransferAgentPool(\"example\", {\n name: \"agent-pool-example\",\n displayName: \"Source A to destination Z\",\n bandwidthLimit: {\n limitMbps: \"120\",\n },\n}, {\n dependsOn: [pubsubEditorRole],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.get_transfer_project_service_account(project=\"my-project-name\")\npubsub_editor_role = gcp.projects.IAMMember(\"pubsub_editor_role\",\n project=\"my-project-name\",\n role=\"roles/pubsub.editor\",\n member=f\"serviceAccount:{default.email}\")\nexample = gcp.storage.TransferAgentPool(\"example\",\n name=\"agent-pool-example\",\n display_name=\"Source A to destination Z\",\n bandwidth_limit={\n \"limit_mbps\": \"120\",\n },\n opts = pulumi.ResourceOptions(depends_on=[pubsub_editor_role]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Storage.GetTransferProjectServiceAccount.Invoke(new()\n {\n Project = \"my-project-name\",\n });\n\n var pubsubEditorRole = new Gcp.Projects.IAMMember(\"pubsub_editor_role\", new()\n {\n Project = \"my-project-name\",\n Role = \"roles/pubsub.editor\",\n Member = @default.Apply(@default =\u003e $\"serviceAccount:{@default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)}\"),\n });\n\n var example = new Gcp.Storage.TransferAgentPool(\"example\", new()\n {\n Name = \"agent-pool-example\",\n DisplayName = \"Source A to destination Z\",\n BandwidthLimit = new Gcp.Storage.Inputs.TransferAgentPoolBandwidthLimitArgs\n {\n LimitMbps = \"120\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n pubsubEditorRole,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\t_default, err := storage.GetTransferProjectServiceAccount(ctx, \u0026storage.GetTransferProjectServiceAccountArgs{\n\t\t\tProject: pulumi.StringRef(\"my-project-name\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpubsubEditorRole, err := projects.NewIAMMember(ctx, \"pubsub_editor_role\", \u0026projects.IAMMemberArgs{\n\t\t\tProject: pulumi.String(\"my-project-name\"),\n\t\t\tRole: pulumi.String(\"roles/pubsub.editor\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", _default.Email),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewTransferAgentPool(ctx, \"example\", \u0026storage.TransferAgentPoolArgs{\n\t\t\tName: pulumi.String(\"agent-pool-example\"),\n\t\t\tDisplayName: pulumi.String(\"Source A to destination Z\"),\n\t\t\tBandwidthLimit: \u0026storage.TransferAgentPoolBandwidthLimitArgs{\n\t\t\t\tLimitMbps: pulumi.String(\"120\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\tpubsubEditorRole,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetTransferProjectServiceAccountArgs;\nimport com.pulumi.gcp.projects.IAMMember;\nimport com.pulumi.gcp.projects.IAMMemberArgs;\nimport com.pulumi.gcp.storage.TransferAgentPool;\nimport com.pulumi.gcp.storage.TransferAgentPoolArgs;\nimport com.pulumi.gcp.storage.inputs.TransferAgentPoolBandwidthLimitArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = StorageFunctions.getTransferProjectServiceAccount(GetTransferProjectServiceAccountArgs.builder()\n .project(\"my-project-name\")\n .build());\n\n var pubsubEditorRole = new IAMMember(\"pubsubEditorRole\", IAMMemberArgs.builder()\n .project(\"my-project-name\")\n .role(\"roles/pubsub.editor\")\n .member(String.format(\"serviceAccount:%s\", default_.email()))\n .build());\n\n var example = new TransferAgentPool(\"example\", TransferAgentPoolArgs.builder()\n .name(\"agent-pool-example\")\n .displayName(\"Source A to destination Z\")\n .bandwidthLimit(TransferAgentPoolBandwidthLimitArgs.builder()\n .limitMbps(\"120\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn(pubsubEditorRole)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n pubsubEditorRole:\n type: gcp:projects:IAMMember\n name: pubsub_editor_role\n properties:\n project: my-project-name\n role: roles/pubsub.editor\n member: serviceAccount:${default.email}\n example:\n type: gcp:storage:TransferAgentPool\n properties:\n name: agent-pool-example\n displayName: Source A to destination Z\n bandwidthLimit:\n limitMbps: '120'\n options:\n dependsOn:\n - ${pubsubEditorRole}\nvariables:\n default:\n fn::invoke:\n function: gcp:storage:getTransferProjectServiceAccount\n arguments:\n project: my-project-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nAgentPool can be imported using any of these accepted formats:\n\n* `projects/{{project}}/agentPools/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, AgentPool can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/transferAgentPool:TransferAgentPool default projects/{{project}}/agentPools/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/transferAgentPool:TransferAgentPool default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:storage/transferAgentPool:TransferAgentPool default {{name}}\n```\n\n", "properties": { "bandwidthLimit": { "$ref": "#/types/gcp:storage/TransferAgentPoolBandwidthLimit:TransferAgentPoolBandwidthLimit", @@ -282648,7 +282648,7 @@ } }, "gcp:storage/transferJob:TransferJob": { - "description": "Creates a new Transfer Job in Google Cloud Storage Transfer.\n\nTo get more information about Google Cloud Storage Transfer, see:\n\n* [Overview](https://cloud.google.com/storage-transfer/docs/overview)\n* [API documentation](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/transferJobs)\n* How-to Guides\n * [Configuring Access to Data Sources and Sinks](https://cloud.google.com/storage-transfer/docs/configure-access)\n\n## Example Usage\n\nExample creating a nightly Transfer Job from an AWS S3 Bucket to a GCS bucket.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst default = gcp.storage.getTransferProjectServiceAccount({\n project: project,\n});\nconst s3_backup_bucket = new gcp.storage.Bucket(\"s3-backup-bucket\", {\n name: `${awsS3Bucket}-backup`,\n storageClass: \"NEARLINE\",\n project: project,\n location: \"US\",\n});\nconst s3_backup_bucketBucketIAMMember = new gcp.storage.BucketIAMMember(\"s3-backup-bucket\", {\n bucket: s3_backup_bucket.name,\n role: \"roles/storage.admin\",\n member: _default.then(_default =\u003e `serviceAccount:${_default.email}`),\n}, {\n dependsOn: [s3_backup_bucket],\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: pubsubTopicName});\nconst notificationConfig = new gcp.pubsub.TopicIAMMember(\"notification_config\", {\n topic: topic.id,\n role: \"roles/pubsub.publisher\",\n member: _default.then(_default =\u003e `serviceAccount:${_default.email}`),\n});\nconst s3_bucket_nightly_backup = new gcp.storage.TransferJob(\"s3-bucket-nightly-backup\", {\n description: \"Nightly backup of S3 bucket\",\n project: project,\n transferSpec: {\n objectConditions: {\n maxTimeElapsedSinceLastModification: \"600s\",\n excludePrefixes: [\"requests.gz\"],\n },\n transferOptions: {\n deleteObjectsUniqueInSink: false,\n },\n awsS3DataSource: {\n bucketName: awsS3Bucket,\n awsAccessKey: {\n accessKeyId: awsAccessKey,\n secretAccessKey: awsSecretKey,\n },\n },\n gcsDataSink: {\n bucketName: s3_backup_bucket.name,\n path: \"foo/bar/\",\n },\n },\n schedule: {\n scheduleStartDate: {\n year: 2018,\n month: 10,\n day: 1,\n },\n scheduleEndDate: {\n year: 2019,\n month: 1,\n day: 15,\n },\n startTimeOfDay: {\n hours: 23,\n minutes: 30,\n seconds: 0,\n nanos: 0,\n },\n repeatInterval: \"604800s\",\n },\n notificationConfig: {\n pubsubTopic: topic.id,\n eventTypes: [\n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\",\n ],\n payloadFormat: \"JSON\",\n },\n}, {\n dependsOn: [\n s3_backup_bucketBucketIAMMember,\n notificationConfig,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.get_transfer_project_service_account(project=project)\ns3_backup_bucket = gcp.storage.Bucket(\"s3-backup-bucket\",\n name=f\"{aws_s3_bucket}-backup\",\n storage_class=\"NEARLINE\",\n project=project,\n location=\"US\")\ns3_backup_bucket_bucket_iam_member = gcp.storage.BucketIAMMember(\"s3-backup-bucket\",\n bucket=s3_backup_bucket.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:{default.email}\",\n opts = pulumi.ResourceOptions(depends_on=[s3_backup_bucket]))\ntopic = gcp.pubsub.Topic(\"topic\", name=pubsub_topic_name)\nnotification_config = gcp.pubsub.TopicIAMMember(\"notification_config\",\n topic=topic.id,\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:{default.email}\")\ns3_bucket_nightly_backup = gcp.storage.TransferJob(\"s3-bucket-nightly-backup\",\n description=\"Nightly backup of S3 bucket\",\n project=project,\n transfer_spec={\n \"object_conditions\": {\n \"max_time_elapsed_since_last_modification\": \"600s\",\n \"exclude_prefixes\": [\"requests.gz\"],\n },\n \"transfer_options\": {\n \"delete_objects_unique_in_sink\": False,\n },\n \"aws_s3_data_source\": {\n \"bucket_name\": aws_s3_bucket,\n \"aws_access_key\": {\n \"access_key_id\": aws_access_key,\n \"secret_access_key\": aws_secret_key,\n },\n },\n \"gcs_data_sink\": {\n \"bucket_name\": s3_backup_bucket.name,\n \"path\": \"foo/bar/\",\n },\n },\n schedule={\n \"schedule_start_date\": {\n \"year\": 2018,\n \"month\": 10,\n \"day\": 1,\n },\n \"schedule_end_date\": {\n \"year\": 2019,\n \"month\": 1,\n \"day\": 15,\n },\n \"start_time_of_day\": {\n \"hours\": 23,\n \"minutes\": 30,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n \"repeat_interval\": \"604800s\",\n },\n notification_config={\n \"pubsub_topic\": topic.id,\n \"event_types\": [\n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\",\n ],\n \"payload_format\": \"JSON\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n s3_backup_bucket_bucket_iam_member,\n notification_config,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Storage.GetTransferProjectServiceAccount.Invoke(new()\n {\n Project = project,\n });\n\n var s3_backup_bucket = new Gcp.Storage.Bucket(\"s3-backup-bucket\", new()\n {\n Name = $\"{awsS3Bucket}-backup\",\n StorageClass = \"NEARLINE\",\n Project = project,\n Location = \"US\",\n });\n\n var s3_backup_bucketBucketIAMMember = new Gcp.Storage.BucketIAMMember(\"s3-backup-bucket\", new()\n {\n Bucket = s3_backup_bucket.Name,\n Role = \"roles/storage.admin\",\n Member = @default.Apply(@default =\u003e $\"serviceAccount:{@default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n s3_backup_bucket,\n },\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = pubsubTopicName,\n });\n\n var notificationConfig = new Gcp.PubSub.TopicIAMMember(\"notification_config\", new()\n {\n Topic = topic.Id,\n Role = \"roles/pubsub.publisher\",\n Member = @default.Apply(@default =\u003e $\"serviceAccount:{@default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)}\"),\n });\n\n var s3_bucket_nightly_backup = new Gcp.Storage.TransferJob(\"s3-bucket-nightly-backup\", new()\n {\n Description = \"Nightly backup of S3 bucket\",\n Project = project,\n TransferSpec = new Gcp.Storage.Inputs.TransferJobTransferSpecArgs\n {\n ObjectConditions = new Gcp.Storage.Inputs.TransferJobTransferSpecObjectConditionsArgs\n {\n MaxTimeElapsedSinceLastModification = \"600s\",\n ExcludePrefixes = new[]\n {\n \"requests.gz\",\n },\n },\n TransferOptions = new Gcp.Storage.Inputs.TransferJobTransferSpecTransferOptionsArgs\n {\n DeleteObjectsUniqueInSink = false,\n },\n AwsS3DataSource = new Gcp.Storage.Inputs.TransferJobTransferSpecAwsS3DataSourceArgs\n {\n BucketName = awsS3Bucket,\n AwsAccessKey = new Gcp.Storage.Inputs.TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs\n {\n AccessKeyId = awsAccessKey,\n SecretAccessKey = awsSecretKey,\n },\n },\n GcsDataSink = new Gcp.Storage.Inputs.TransferJobTransferSpecGcsDataSinkArgs\n {\n BucketName = s3_backup_bucket.Name,\n Path = \"foo/bar/\",\n },\n },\n Schedule = new Gcp.Storage.Inputs.TransferJobScheduleArgs\n {\n ScheduleStartDate = new Gcp.Storage.Inputs.TransferJobScheduleScheduleStartDateArgs\n {\n Year = 2018,\n Month = 10,\n Day = 1,\n },\n ScheduleEndDate = new Gcp.Storage.Inputs.TransferJobScheduleScheduleEndDateArgs\n {\n Year = 2019,\n Month = 1,\n Day = 15,\n },\n StartTimeOfDay = new Gcp.Storage.Inputs.TransferJobScheduleStartTimeOfDayArgs\n {\n Hours = 23,\n Minutes = 30,\n Seconds = 0,\n Nanos = 0,\n },\n RepeatInterval = \"604800s\",\n },\n NotificationConfig = new Gcp.Storage.Inputs.TransferJobNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n EventTypes = new[]\n {\n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\",\n },\n PayloadFormat = \"JSON\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n s3_backup_bucketBucketIAMMember,\n notificationConfig,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/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_default, err := storage.GetTransferProjectServiceAccount(ctx, \u0026storage.GetTransferProjectServiceAccountArgs{\n\t\t\tProject: pulumi.StringRef(project),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucket(ctx, \"s3-backup-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-backup\", awsS3Bucket),\n\t\t\tStorageClass: pulumi.String(\"NEARLINE\"),\n\t\t\tProject: pulumi.Any(project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewBucketIAMMember(ctx, \"s3-backup-bucket\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: s3_backup_bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", _default.Email),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ts3_backup_bucket,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.Any(pubsubTopicName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnotificationConfig, err := pubsub.NewTopicIAMMember(ctx, \"notification_config\", \u0026pubsub.TopicIAMMemberArgs{\n\t\t\tTopic: topic.ID(),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", _default.Email),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewTransferJob(ctx, \"s3-bucket-nightly-backup\", \u0026storage.TransferJobArgs{\n\t\t\tDescription: pulumi.String(\"Nightly backup of S3 bucket\"),\n\t\t\tProject: pulumi.Any(project),\n\t\t\tTransferSpec: \u0026storage.TransferJobTransferSpecArgs{\n\t\t\t\tObjectConditions: \u0026storage.TransferJobTransferSpecObjectConditionsArgs{\n\t\t\t\t\tMaxTimeElapsedSinceLastModification: pulumi.String(\"600s\"),\n\t\t\t\t\tExcludePrefixes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"requests.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTransferOptions: \u0026storage.TransferJobTransferSpecTransferOptionsArgs{\n\t\t\t\t\tDeleteObjectsUniqueInSink: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tAwsS3DataSource: \u0026storage.TransferJobTransferSpecAwsS3DataSourceArgs{\n\t\t\t\t\tBucketName: pulumi.Any(awsS3Bucket),\n\t\t\t\t\tAwsAccessKey: \u0026storage.TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs{\n\t\t\t\t\t\tAccessKeyId: pulumi.Any(awsAccessKey),\n\t\t\t\t\t\tSecretAccessKey: pulumi.Any(awsSecretKey),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGcsDataSink: \u0026storage.TransferJobTransferSpecGcsDataSinkArgs{\n\t\t\t\t\tBucketName: s3_backup_bucket.Name,\n\t\t\t\t\tPath: pulumi.String(\"foo/bar/\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSchedule: \u0026storage.TransferJobScheduleArgs{\n\t\t\t\tScheduleStartDate: \u0026storage.TransferJobScheduleScheduleStartDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2018),\n\t\t\t\t\tMonth: pulumi.Int(10),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tScheduleEndDate: \u0026storage.TransferJobScheduleScheduleEndDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2019),\n\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\tDay: pulumi.Int(15),\n\t\t\t\t},\n\t\t\t\tStartTimeOfDay: \u0026storage.TransferJobScheduleStartTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(23),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t\tRepeatInterval: pulumi.String(\"604800s\"),\n\t\t\t},\n\t\t\tNotificationConfig: \u0026storage.TransferJobNotificationConfigArgs{\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tEventTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"TRANSFER_OPERATION_SUCCESS\"),\n\t\t\t\t\tpulumi.String(\"TRANSFER_OPERATION_FAILED\"),\n\t\t\t\t},\n\t\t\t\tPayloadFormat: pulumi.String(\"JSON\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ts3_backup_bucketBucketIAMMember,\n\t\t\tnotificationConfig,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetTransferProjectServiceAccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.TopicIAMMember;\nimport com.pulumi.gcp.pubsub.TopicIAMMemberArgs;\nimport com.pulumi.gcp.storage.TransferJob;\nimport com.pulumi.gcp.storage.TransferJobArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecObjectConditionsArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecTransferOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecAwsS3DataSourceArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecGcsDataSinkArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleScheduleStartDateArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleScheduleEndDateArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleStartTimeOfDayArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobNotificationConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = StorageFunctions.getTransferProjectServiceAccount(GetTransferProjectServiceAccountArgs.builder()\n .project(project)\n .build());\n\n var s3_backup_bucket = new Bucket(\"s3-backup-bucket\", BucketArgs.builder()\n .name(String.format(\"%s-backup\", awsS3Bucket))\n .storageClass(\"NEARLINE\")\n .project(project)\n .location(\"US\")\n .build());\n\n var s3_backup_bucketBucketIAMMember = new BucketIAMMember(\"s3-backup-bucketBucketIAMMember\", BucketIAMMemberArgs.builder()\n .bucket(s3_backup_bucket.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:%s\", default_.email()))\n .build(), CustomResourceOptions.builder()\n .dependsOn(s3_backup_bucket)\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(pubsubTopicName)\n .build());\n\n var notificationConfig = new TopicIAMMember(\"notificationConfig\", TopicIAMMemberArgs.builder()\n .topic(topic.id())\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:%s\", default_.email()))\n .build());\n\n var s3_bucket_nightly_backup = new TransferJob(\"s3-bucket-nightly-backup\", TransferJobArgs.builder()\n .description(\"Nightly backup of S3 bucket\")\n .project(project)\n .transferSpec(TransferJobTransferSpecArgs.builder()\n .objectConditions(TransferJobTransferSpecObjectConditionsArgs.builder()\n .maxTimeElapsedSinceLastModification(\"600s\")\n .excludePrefixes(\"requests.gz\")\n .build())\n .transferOptions(TransferJobTransferSpecTransferOptionsArgs.builder()\n .deleteObjectsUniqueInSink(false)\n .build())\n .awsS3DataSource(TransferJobTransferSpecAwsS3DataSourceArgs.builder()\n .bucketName(awsS3Bucket)\n .awsAccessKey(TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs.builder()\n .accessKeyId(awsAccessKey)\n .secretAccessKey(awsSecretKey)\n .build())\n .build())\n .gcsDataSink(TransferJobTransferSpecGcsDataSinkArgs.builder()\n .bucketName(s3_backup_bucket.name())\n .path(\"foo/bar/\")\n .build())\n .build())\n .schedule(TransferJobScheduleArgs.builder()\n .scheduleStartDate(TransferJobScheduleScheduleStartDateArgs.builder()\n .year(2018)\n .month(10)\n .day(1)\n .build())\n .scheduleEndDate(TransferJobScheduleScheduleEndDateArgs.builder()\n .year(2019)\n .month(1)\n .day(15)\n .build())\n .startTimeOfDay(TransferJobScheduleStartTimeOfDayArgs.builder()\n .hours(23)\n .minutes(30)\n .seconds(0)\n .nanos(0)\n .build())\n .repeatInterval(\"604800s\")\n .build())\n .notificationConfig(TransferJobNotificationConfigArgs.builder()\n .pubsubTopic(topic.id())\n .eventTypes( \n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\")\n .payloadFormat(\"JSON\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n s3_backup_bucketBucketIAMMember,\n notificationConfig)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n s3-backup-bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${awsS3Bucket}-backup\n storageClass: NEARLINE\n project: ${project}\n location: US\n s3-backup-bucketBucketIAMMember:\n type: gcp:storage:BucketIAMMember\n name: s3-backup-bucket\n properties:\n bucket: ${[\"s3-backup-bucket\"].name}\n role: roles/storage.admin\n member: serviceAccount:${default.email}\n options:\n dependsOn:\n - ${[\"s3-backup-bucket\"]}\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: ${pubsubTopicName}\n notificationConfig:\n type: gcp:pubsub:TopicIAMMember\n name: notification_config\n properties:\n topic: ${topic.id}\n role: roles/pubsub.publisher\n member: serviceAccount:${default.email}\n s3-bucket-nightly-backup:\n type: gcp:storage:TransferJob\n properties:\n description: Nightly backup of S3 bucket\n project: ${project}\n transferSpec:\n objectConditions:\n maxTimeElapsedSinceLastModification: 600s\n excludePrefixes:\n - requests.gz\n transferOptions:\n deleteObjectsUniqueInSink: false\n awsS3DataSource:\n bucketName: ${awsS3Bucket}\n awsAccessKey:\n accessKeyId: ${awsAccessKey}\n secretAccessKey: ${awsSecretKey}\n gcsDataSink:\n bucketName: ${[\"s3-backup-bucket\"].name}\n path: foo/bar/\n schedule:\n scheduleStartDate:\n year: 2018\n month: 10\n day: 1\n scheduleEndDate:\n year: 2019\n month: 1\n day: 15\n startTimeOfDay:\n hours: 23\n minutes: 30\n seconds: 0\n nanos: 0\n repeatInterval: 604800s\n notificationConfig:\n pubsubTopic: ${topic.id}\n eventTypes:\n - TRANSFER_OPERATION_SUCCESS\n - TRANSFER_OPERATION_FAILED\n payloadFormat: JSON\n options:\n dependsOn:\n - ${[\"s3-backup-bucketBucketIAMMember\"]}\n - ${notificationConfig}\nvariables:\n default:\n fn::invoke:\n function: gcp:storage:getTransferProjectServiceAccount\n arguments:\n project: ${project}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStorage Transfer Jobs can be imported using the Transfer Job's `project` and `name` (without the `transferJob/` prefix), e.g.\n\n* `{{project_id}}/{{name}}`, where `name` is a numeric value.\n\nWhen using the `pulumi import` command, Storage Transfer Jobs can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/transferJob:TransferJob default {{project_id}}/123456789\n```\n\n", + "description": "Creates a new Transfer Job in Google Cloud Storage Transfer.\n\nTo get more information about Google Cloud Storage Transfer, see:\n\n* [Overview](https://cloud.google.com/storage-transfer/docs/overview)\n* [API documentation](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/transferJobs)\n* How-to Guides\n * [Configuring Access to Data Sources and Sinks](https://cloud.google.com/storage-transfer/docs/configure-access)\n\n## Example Usage\n\nExample creating a nightly Transfer Job from an AWS S3 Bucket to a GCS bucket.\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = gcp.storage.getTransferProjectServiceAccount({\n project: project,\n});\nconst s3_backup_bucket = new gcp.storage.Bucket(\"s3-backup-bucket\", {\n name: `${awsS3Bucket}-backup`,\n storageClass: \"NEARLINE\",\n project: project,\n location: \"US\",\n});\nconst s3_backup_bucketBucketIAMMember = new gcp.storage.BucketIAMMember(\"s3-backup-bucket\", {\n bucket: s3_backup_bucket.name,\n role: \"roles/storage.admin\",\n member: _default.then(_default =\u003e `serviceAccount:${_default.email}`),\n}, {\n dependsOn: [s3_backup_bucket],\n});\nconst topic = new gcp.pubsub.Topic(\"topic\", {name: pubsubTopicName});\nconst notificationConfig = new gcp.pubsub.TopicIAMMember(\"notification_config\", {\n topic: topic.id,\n role: \"roles/pubsub.publisher\",\n member: _default.then(_default =\u003e `serviceAccount:${_default.email}`),\n});\nconst s3_bucket_nightly_backup = new gcp.storage.TransferJob(\"s3-bucket-nightly-backup\", {\n description: \"Nightly backup of S3 bucket\",\n project: project,\n transferSpec: {\n objectConditions: {\n maxTimeElapsedSinceLastModification: \"600s\",\n excludePrefixes: [\"requests.gz\"],\n },\n transferOptions: {\n deleteObjectsUniqueInSink: false,\n },\n awsS3DataSource: {\n bucketName: awsS3Bucket,\n awsAccessKey: {\n accessKeyId: awsAccessKey,\n secretAccessKey: awsSecretKey,\n },\n },\n gcsDataSink: {\n bucketName: s3_backup_bucket.name,\n path: \"foo/bar/\",\n },\n },\n schedule: {\n scheduleStartDate: {\n year: 2018,\n month: 10,\n day: 1,\n },\n scheduleEndDate: {\n year: 2019,\n month: 1,\n day: 15,\n },\n startTimeOfDay: {\n hours: 23,\n minutes: 30,\n seconds: 0,\n nanos: 0,\n },\n repeatInterval: \"604800s\",\n },\n notificationConfig: {\n pubsubTopic: topic.id,\n eventTypes: [\n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\",\n ],\n payloadFormat: \"JSON\",\n },\n}, {\n dependsOn: [\n s3_backup_bucketBucketIAMMember,\n notificationConfig,\n ],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.get_transfer_project_service_account(project=project)\ns3_backup_bucket = gcp.storage.Bucket(\"s3-backup-bucket\",\n name=f\"{aws_s3_bucket}-backup\",\n storage_class=\"NEARLINE\",\n project=project,\n location=\"US\")\ns3_backup_bucket_bucket_iam_member = gcp.storage.BucketIAMMember(\"s3-backup-bucket\",\n bucket=s3_backup_bucket.name,\n role=\"roles/storage.admin\",\n member=f\"serviceAccount:{default.email}\",\n opts = pulumi.ResourceOptions(depends_on=[s3_backup_bucket]))\ntopic = gcp.pubsub.Topic(\"topic\", name=pubsub_topic_name)\nnotification_config = gcp.pubsub.TopicIAMMember(\"notification_config\",\n topic=topic.id,\n role=\"roles/pubsub.publisher\",\n member=f\"serviceAccount:{default.email}\")\ns3_bucket_nightly_backup = gcp.storage.TransferJob(\"s3-bucket-nightly-backup\",\n description=\"Nightly backup of S3 bucket\",\n project=project,\n transfer_spec={\n \"object_conditions\": {\n \"max_time_elapsed_since_last_modification\": \"600s\",\n \"exclude_prefixes\": [\"requests.gz\"],\n },\n \"transfer_options\": {\n \"delete_objects_unique_in_sink\": False,\n },\n \"aws_s3_data_source\": {\n \"bucket_name\": aws_s3_bucket,\n \"aws_access_key\": {\n \"access_key_id\": aws_access_key,\n \"secret_access_key\": aws_secret_key,\n },\n },\n \"gcs_data_sink\": {\n \"bucket_name\": s3_backup_bucket.name,\n \"path\": \"foo/bar/\",\n },\n },\n schedule={\n \"schedule_start_date\": {\n \"year\": 2018,\n \"month\": 10,\n \"day\": 1,\n },\n \"schedule_end_date\": {\n \"year\": 2019,\n \"month\": 1,\n \"day\": 15,\n },\n \"start_time_of_day\": {\n \"hours\": 23,\n \"minutes\": 30,\n \"seconds\": 0,\n \"nanos\": 0,\n },\n \"repeat_interval\": \"604800s\",\n },\n notification_config={\n \"pubsub_topic\": topic.id,\n \"event_types\": [\n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\",\n ],\n \"payload_format\": \"JSON\",\n },\n opts = pulumi.ResourceOptions(depends_on=[\n s3_backup_bucket_bucket_iam_member,\n notification_config,\n ]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Storage.GetTransferProjectServiceAccount.Invoke(new()\n {\n Project = project,\n });\n\n var s3_backup_bucket = new Gcp.Storage.Bucket(\"s3-backup-bucket\", new()\n {\n Name = $\"{awsS3Bucket}-backup\",\n StorageClass = \"NEARLINE\",\n Project = project,\n Location = \"US\",\n });\n\n var s3_backup_bucketBucketIAMMember = new Gcp.Storage.BucketIAMMember(\"s3-backup-bucket\", new()\n {\n Bucket = s3_backup_bucket.Name,\n Role = \"roles/storage.admin\",\n Member = @default.Apply(@default =\u003e $\"serviceAccount:{@default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)}\"),\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n s3_backup_bucket,\n },\n });\n\n var topic = new Gcp.PubSub.Topic(\"topic\", new()\n {\n Name = pubsubTopicName,\n });\n\n var notificationConfig = new Gcp.PubSub.TopicIAMMember(\"notification_config\", new()\n {\n Topic = topic.Id,\n Role = \"roles/pubsub.publisher\",\n Member = @default.Apply(@default =\u003e $\"serviceAccount:{@default.Apply(getTransferProjectServiceAccountResult =\u003e getTransferProjectServiceAccountResult.Email)}\"),\n });\n\n var s3_bucket_nightly_backup = new Gcp.Storage.TransferJob(\"s3-bucket-nightly-backup\", new()\n {\n Description = \"Nightly backup of S3 bucket\",\n Project = project,\n TransferSpec = new Gcp.Storage.Inputs.TransferJobTransferSpecArgs\n {\n ObjectConditions = new Gcp.Storage.Inputs.TransferJobTransferSpecObjectConditionsArgs\n {\n MaxTimeElapsedSinceLastModification = \"600s\",\n ExcludePrefixes = new[]\n {\n \"requests.gz\",\n },\n },\n TransferOptions = new Gcp.Storage.Inputs.TransferJobTransferSpecTransferOptionsArgs\n {\n DeleteObjectsUniqueInSink = false,\n },\n AwsS3DataSource = new Gcp.Storage.Inputs.TransferJobTransferSpecAwsS3DataSourceArgs\n {\n BucketName = awsS3Bucket,\n AwsAccessKey = new Gcp.Storage.Inputs.TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs\n {\n AccessKeyId = awsAccessKey,\n SecretAccessKey = awsSecretKey,\n },\n },\n GcsDataSink = new Gcp.Storage.Inputs.TransferJobTransferSpecGcsDataSinkArgs\n {\n BucketName = s3_backup_bucket.Name,\n Path = \"foo/bar/\",\n },\n },\n Schedule = new Gcp.Storage.Inputs.TransferJobScheduleArgs\n {\n ScheduleStartDate = new Gcp.Storage.Inputs.TransferJobScheduleScheduleStartDateArgs\n {\n Year = 2018,\n Month = 10,\n Day = 1,\n },\n ScheduleEndDate = new Gcp.Storage.Inputs.TransferJobScheduleScheduleEndDateArgs\n {\n Year = 2019,\n Month = 1,\n Day = 15,\n },\n StartTimeOfDay = new Gcp.Storage.Inputs.TransferJobScheduleStartTimeOfDayArgs\n {\n Hours = 23,\n Minutes = 30,\n Seconds = 0,\n Nanos = 0,\n },\n RepeatInterval = \"604800s\",\n },\n NotificationConfig = new Gcp.Storage.Inputs.TransferJobNotificationConfigArgs\n {\n PubsubTopic = topic.Id,\n EventTypes = new[]\n {\n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\",\n },\n PayloadFormat = \"JSON\",\n },\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n s3_backup_bucketBucketIAMMember,\n notificationConfig,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/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_default, err := storage.GetTransferProjectServiceAccount(ctx, \u0026storage.GetTransferProjectServiceAccountArgs{\n\t\t\tProject: pulumi.StringRef(project),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ts3_backup_bucket, err := storage.NewBucket(ctx, \"s3-backup-bucket\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.Sprintf(\"%v-backup\", awsS3Bucket),\n\t\t\tStorageClass: pulumi.String(\"NEARLINE\"),\n\t\t\tProject: pulumi.Any(project),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ts3_backup_bucketBucketIAMMember, err := storage.NewBucketIAMMember(ctx, \"s3-backup-bucket\", \u0026storage.BucketIAMMemberArgs{\n\t\t\tBucket: s3_backup_bucket.Name,\n\t\t\tRole: pulumi.String(\"roles/storage.admin\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", _default.Email),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ts3_backup_bucket,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttopic, err := pubsub.NewTopic(ctx, \"topic\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.Any(pubsubTopicName),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnotificationConfig, err := pubsub.NewTopicIAMMember(ctx, \"notification_config\", \u0026pubsub.TopicIAMMemberArgs{\n\t\t\tTopic: topic.ID(),\n\t\t\tRole: pulumi.String(\"roles/pubsub.publisher\"),\n\t\t\tMember: pulumi.Sprintf(\"serviceAccount:%v\", _default.Email),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = storage.NewTransferJob(ctx, \"s3-bucket-nightly-backup\", \u0026storage.TransferJobArgs{\n\t\t\tDescription: pulumi.String(\"Nightly backup of S3 bucket\"),\n\t\t\tProject: pulumi.Any(project),\n\t\t\tTransferSpec: \u0026storage.TransferJobTransferSpecArgs{\n\t\t\t\tObjectConditions: \u0026storage.TransferJobTransferSpecObjectConditionsArgs{\n\t\t\t\t\tMaxTimeElapsedSinceLastModification: pulumi.String(\"600s\"),\n\t\t\t\t\tExcludePrefixes: pulumi.StringArray{\n\t\t\t\t\t\tpulumi.String(\"requests.gz\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tTransferOptions: \u0026storage.TransferJobTransferSpecTransferOptionsArgs{\n\t\t\t\t\tDeleteObjectsUniqueInSink: pulumi.Bool(false),\n\t\t\t\t},\n\t\t\t\tAwsS3DataSource: \u0026storage.TransferJobTransferSpecAwsS3DataSourceArgs{\n\t\t\t\t\tBucketName: pulumi.Any(awsS3Bucket),\n\t\t\t\t\tAwsAccessKey: \u0026storage.TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs{\n\t\t\t\t\t\tAccessKeyId: pulumi.Any(awsAccessKey),\n\t\t\t\t\t\tSecretAccessKey: pulumi.Any(awsSecretKey),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tGcsDataSink: \u0026storage.TransferJobTransferSpecGcsDataSinkArgs{\n\t\t\t\t\tBucketName: s3_backup_bucket.Name,\n\t\t\t\t\tPath: pulumi.String(\"foo/bar/\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSchedule: \u0026storage.TransferJobScheduleArgs{\n\t\t\t\tScheduleStartDate: \u0026storage.TransferJobScheduleScheduleStartDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2018),\n\t\t\t\t\tMonth: pulumi.Int(10),\n\t\t\t\t\tDay: pulumi.Int(1),\n\t\t\t\t},\n\t\t\t\tScheduleEndDate: \u0026storage.TransferJobScheduleScheduleEndDateArgs{\n\t\t\t\t\tYear: pulumi.Int(2019),\n\t\t\t\t\tMonth: pulumi.Int(1),\n\t\t\t\t\tDay: pulumi.Int(15),\n\t\t\t\t},\n\t\t\t\tStartTimeOfDay: \u0026storage.TransferJobScheduleStartTimeOfDayArgs{\n\t\t\t\t\tHours: pulumi.Int(23),\n\t\t\t\t\tMinutes: pulumi.Int(30),\n\t\t\t\t\tSeconds: pulumi.Int(0),\n\t\t\t\t\tNanos: pulumi.Int(0),\n\t\t\t\t},\n\t\t\t\tRepeatInterval: pulumi.String(\"604800s\"),\n\t\t\t},\n\t\t\tNotificationConfig: \u0026storage.TransferJobNotificationConfigArgs{\n\t\t\t\tPubsubTopic: topic.ID(),\n\t\t\t\tEventTypes: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"TRANSFER_OPERATION_SUCCESS\"),\n\t\t\t\t\tpulumi.String(\"TRANSFER_OPERATION_FAILED\"),\n\t\t\t\t},\n\t\t\t\tPayloadFormat: pulumi.String(\"JSON\"),\n\t\t\t},\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\ts3_backup_bucketBucketIAMMember,\n\t\t\tnotificationConfig,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetTransferProjectServiceAccountArgs;\nimport com.pulumi.gcp.storage.Bucket;\nimport com.pulumi.gcp.storage.BucketArgs;\nimport com.pulumi.gcp.storage.BucketIAMMember;\nimport com.pulumi.gcp.storage.BucketIAMMemberArgs;\nimport com.pulumi.gcp.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.pubsub.TopicIAMMember;\nimport com.pulumi.gcp.pubsub.TopicIAMMemberArgs;\nimport com.pulumi.gcp.storage.TransferJob;\nimport com.pulumi.gcp.storage.TransferJobArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecObjectConditionsArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecTransferOptionsArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecAwsS3DataSourceArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobTransferSpecGcsDataSinkArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleScheduleStartDateArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleScheduleEndDateArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobScheduleStartTimeOfDayArgs;\nimport com.pulumi.gcp.storage.inputs.TransferJobNotificationConfigArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var default = StorageFunctions.getTransferProjectServiceAccount(GetTransferProjectServiceAccountArgs.builder()\n .project(project)\n .build());\n\n var s3_backup_bucket = new Bucket(\"s3-backup-bucket\", BucketArgs.builder()\n .name(String.format(\"%s-backup\", awsS3Bucket))\n .storageClass(\"NEARLINE\")\n .project(project)\n .location(\"US\")\n .build());\n\n var s3_backup_bucketBucketIAMMember = new BucketIAMMember(\"s3-backup-bucketBucketIAMMember\", BucketIAMMemberArgs.builder()\n .bucket(s3_backup_bucket.name())\n .role(\"roles/storage.admin\")\n .member(String.format(\"serviceAccount:%s\", default_.email()))\n .build(), CustomResourceOptions.builder()\n .dependsOn(s3_backup_bucket)\n .build());\n\n var topic = new Topic(\"topic\", TopicArgs.builder()\n .name(pubsubTopicName)\n .build());\n\n var notificationConfig = new TopicIAMMember(\"notificationConfig\", TopicIAMMemberArgs.builder()\n .topic(topic.id())\n .role(\"roles/pubsub.publisher\")\n .member(String.format(\"serviceAccount:%s\", default_.email()))\n .build());\n\n var s3_bucket_nightly_backup = new TransferJob(\"s3-bucket-nightly-backup\", TransferJobArgs.builder()\n .description(\"Nightly backup of S3 bucket\")\n .project(project)\n .transferSpec(TransferJobTransferSpecArgs.builder()\n .objectConditions(TransferJobTransferSpecObjectConditionsArgs.builder()\n .maxTimeElapsedSinceLastModification(\"600s\")\n .excludePrefixes(\"requests.gz\")\n .build())\n .transferOptions(TransferJobTransferSpecTransferOptionsArgs.builder()\n .deleteObjectsUniqueInSink(false)\n .build())\n .awsS3DataSource(TransferJobTransferSpecAwsS3DataSourceArgs.builder()\n .bucketName(awsS3Bucket)\n .awsAccessKey(TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs.builder()\n .accessKeyId(awsAccessKey)\n .secretAccessKey(awsSecretKey)\n .build())\n .build())\n .gcsDataSink(TransferJobTransferSpecGcsDataSinkArgs.builder()\n .bucketName(s3_backup_bucket.name())\n .path(\"foo/bar/\")\n .build())\n .build())\n .schedule(TransferJobScheduleArgs.builder()\n .scheduleStartDate(TransferJobScheduleScheduleStartDateArgs.builder()\n .year(2018)\n .month(10)\n .day(1)\n .build())\n .scheduleEndDate(TransferJobScheduleScheduleEndDateArgs.builder()\n .year(2019)\n .month(1)\n .day(15)\n .build())\n .startTimeOfDay(TransferJobScheduleStartTimeOfDayArgs.builder()\n .hours(23)\n .minutes(30)\n .seconds(0)\n .nanos(0)\n .build())\n .repeatInterval(\"604800s\")\n .build())\n .notificationConfig(TransferJobNotificationConfigArgs.builder()\n .pubsubTopic(topic.id())\n .eventTypes( \n \"TRANSFER_OPERATION_SUCCESS\",\n \"TRANSFER_OPERATION_FAILED\")\n .payloadFormat(\"JSON\")\n .build())\n .build(), CustomResourceOptions.builder()\n .dependsOn( \n s3_backup_bucketBucketIAMMember,\n notificationConfig)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n s3-backup-bucket:\n type: gcp:storage:Bucket\n properties:\n name: ${awsS3Bucket}-backup\n storageClass: NEARLINE\n project: ${project}\n location: US\n s3-backup-bucketBucketIAMMember:\n type: gcp:storage:BucketIAMMember\n name: s3-backup-bucket\n properties:\n bucket: ${[\"s3-backup-bucket\"].name}\n role: roles/storage.admin\n member: serviceAccount:${default.email}\n options:\n dependsOn:\n - ${[\"s3-backup-bucket\"]}\n topic:\n type: gcp:pubsub:Topic\n properties:\n name: ${pubsubTopicName}\n notificationConfig:\n type: gcp:pubsub:TopicIAMMember\n name: notification_config\n properties:\n topic: ${topic.id}\n role: roles/pubsub.publisher\n member: serviceAccount:${default.email}\n s3-bucket-nightly-backup:\n type: gcp:storage:TransferJob\n properties:\n description: Nightly backup of S3 bucket\n project: ${project}\n transferSpec:\n objectConditions:\n maxTimeElapsedSinceLastModification: 600s\n excludePrefixes:\n - requests.gz\n transferOptions:\n deleteObjectsUniqueInSink: false\n awsS3DataSource:\n bucketName: ${awsS3Bucket}\n awsAccessKey:\n accessKeyId: ${awsAccessKey}\n secretAccessKey: ${awsSecretKey}\n gcsDataSink:\n bucketName: ${[\"s3-backup-bucket\"].name}\n path: foo/bar/\n schedule:\n scheduleStartDate:\n year: 2018\n month: 10\n day: 1\n scheduleEndDate:\n year: 2019\n month: 1\n day: 15\n startTimeOfDay:\n hours: 23\n minutes: 30\n seconds: 0\n nanos: 0\n repeatInterval: 604800s\n notificationConfig:\n pubsubTopic: ${topic.id}\n eventTypes:\n - TRANSFER_OPERATION_SUCCESS\n - TRANSFER_OPERATION_FAILED\n payloadFormat: JSON\n options:\n dependsOn:\n - ${[\"s3-backup-bucketBucketIAMMember\"]}\n - ${notificationConfig}\nvariables:\n default:\n fn::invoke:\n function: gcp:storage:getTransferProjectServiceAccount\n arguments:\n project: ${project}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nStorage Transfer Jobs can be imported using the Transfer Job's `project` and `name` (without the `transferJob/` prefix), e.g.\n\n* `{{project_id}}/{{name}}`, where `name` is a numeric value.\n\nWhen using the `pulumi import` command, Storage Transfer Jobs can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:storage/transferJob:TransferJob default {{project_id}}/123456789\n```\n\n", "properties": { "creationTime": { "type": "string", @@ -284369,7 +284369,7 @@ } }, "gcp:transcoder/job:Job": { - "description": "Transcoding Job Resource\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/transcoder/docs/reference/rest/v1/projects.locations.jobs)\n* How-to Guides\n * [Transcoder](https://cloud.google.com/transcoder/docs/)\n\n## Example Usage\n\n### Transcoder 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.storage.Bucket(\"default\", {\n name: \"transcoder-job\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n publicAccessPrevention: \"enforced\",\n});\nconst exampleMp4 = new gcp.storage.BucketObject(\"example_mp4\", {\n name: \"example.mp4\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket: _default.name,\n});\nconst defaultJobTemplate = new gcp.transcoder.JobTemplate(\"default\", {\n jobTemplateId: \"example-job-template\",\n location: \"us-central1\",\n config: {\n inputs: [{\n key: \"input0\",\n uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,\n }],\n output: {\n uri: pulumi.interpolate`gs://${_default.name}/outputs/`,\n },\n editLists: [{\n key: \"atom0\",\n inputs: [\"input0\"],\n startTimeOffset: \"0s\",\n }],\n elementaryStreams: [\n {\n key: \"video-stream0\",\n videoStream: {\n h264: {\n widthPixels: 640,\n heightPixels: 360,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 550000,\n vbvFullnessBits: 495000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"video-stream1\",\n videoStream: {\n h264: {\n widthPixels: 1280,\n heightPixels: 720,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 2500000,\n vbvFullnessBits: 2250000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"audio-stream0\",\n audioStream: {\n codec: \"aac\",\n bitrateBps: 64000,\n channelCount: 2,\n channelLayouts: [\n \"fl\",\n \"fr\",\n ],\n sampleRateHertz: 48000,\n },\n },\n ],\n muxStreams: [\n {\n key: \"sd\",\n fileName: \"sd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"hd\",\n fileName: \"hd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n ],\n },\n labels: {\n label: \"key\",\n },\n});\nconst defaultJob = new gcp.transcoder.Job(\"default\", {\n templateId: defaultJobTemplate.name,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.Bucket(\"default\",\n name=\"transcoder-job\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True,\n public_access_prevention=\"enforced\")\nexample_mp4 = gcp.storage.BucketObject(\"example_mp4\",\n name=\"example.mp4\",\n source=pulumi.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket=default.name)\ndefault_job_template = gcp.transcoder.JobTemplate(\"default\",\n job_template_id=\"example-job-template\",\n location=\"us-central1\",\n config={\n \"inputs\": [{\n \"key\": \"input0\",\n \"uri\": pulumi.Output.all(\n defaultName=default.name,\n exampleMp4Name=example_mp4.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}\")\n,\n }],\n \"output\": {\n \"uri\": default.name.apply(lambda name: f\"gs://{name}/outputs/\"),\n },\n \"edit_lists\": [{\n \"key\": \"atom0\",\n \"inputs\": [\"input0\"],\n \"start_time_offset\": \"0s\",\n }],\n \"elementary_streams\": [\n {\n \"key\": \"video-stream0\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 640,\n \"height_pixels\": 360,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 550000,\n \"vbv_fullness_bits\": 495000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"video-stream1\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 1280,\n \"height_pixels\": 720,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 2500000,\n \"vbv_fullness_bits\": 2250000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"audio-stream0\",\n \"audio_stream\": {\n \"codec\": \"aac\",\n \"bitrate_bps\": 64000,\n \"channel_count\": 2,\n \"channel_layouts\": [\n \"fl\",\n \"fr\",\n ],\n \"sample_rate_hertz\": 48000,\n },\n },\n ],\n \"mux_streams\": [\n {\n \"key\": \"sd\",\n \"file_name\": \"sd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"hd\",\n \"file_name\": \"hd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n ],\n },\n labels={\n \"label\": \"key\",\n })\ndefault_job = gcp.transcoder.Job(\"default\",\n template_id=default_job_template.name,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"transcoder-job\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n PublicAccessPrevention = \"enforced\",\n });\n\n var exampleMp4 = new Gcp.Storage.BucketObject(\"example_mp4\", new()\n {\n Name = \"example.mp4\",\n Source = new FileAsset(\"./test-fixtures/example.mp4\"),\n Bucket = @default.Name,\n });\n\n var defaultJobTemplate = new Gcp.Transcoder.JobTemplate(\"default\", new()\n {\n JobTemplateId = \"example-job-template\",\n Location = \"us-central1\",\n Config = new Gcp.Transcoder.Inputs.JobTemplateConfigArgs\n {\n Inputs = new[]\n {\n new Gcp.Transcoder.Inputs.JobTemplateConfigInputArgs\n {\n Key = \"input0\",\n Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =\u003e\n {\n var defaultName = values.Item1;\n var exampleMp4Name = values.Item2;\n return $\"gs://{defaultName}/{exampleMp4Name}\";\n }),\n },\n },\n Output = new Gcp.Transcoder.Inputs.JobTemplateConfigOutputArgs\n {\n Uri = @default.Name.Apply(name =\u003e $\"gs://{name}/outputs/\"),\n },\n EditLists = new[]\n {\n new Gcp.Transcoder.Inputs.JobTemplateConfigEditListArgs\n {\n Key = \"atom0\",\n Inputs = new[]\n {\n \"input0\",\n },\n StartTimeOffset = \"0s\",\n },\n },\n ElementaryStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs\n {\n Key = \"video-stream0\",\n VideoStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 640,\n HeightPixels = 360,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 550000,\n VbvFullnessBits = 495000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs\n {\n Key = \"video-stream1\",\n VideoStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 1280,\n HeightPixels = 720,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 2500000,\n VbvFullnessBits = 2250000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs\n {\n Key = \"audio-stream0\",\n AudioStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamAudioStreamArgs\n {\n Codec = \"aac\",\n BitrateBps = 64000,\n ChannelCount = 2,\n ChannelLayouts = new[]\n {\n \"fl\",\n \"fr\",\n },\n SampleRateHertz = 48000,\n },\n },\n },\n MuxStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs\n {\n Key = \"sd\",\n FileName = \"sd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream0\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs\n {\n Key = \"hd\",\n FileName = \"hd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream1\",\n \"audio-stream0\",\n },\n },\n },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n });\n\n var defaultJob = new Gcp.Transcoder.Job(\"default\", new()\n {\n TemplateId = defaultJobTemplate.Name,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n });\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/transcoder\"\n\t\"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, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"transcoder-job\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tPublicAccessPrevention: pulumi.String(\"enforced\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMp4, err := storage.NewBucketObject(ctx, \"example_mp4\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"example.mp4\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/example.mp4\"),\n\t\t\tBucket: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultJobTemplate, err := transcoder.NewJobTemplate(ctx, \"default\", \u0026transcoder.JobTemplateArgs{\n\t\t\tJobTemplateId: pulumi.String(\"example-job-template\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026transcoder.JobTemplateConfigArgs{\n\t\t\t\tInputs: transcoder.JobTemplateConfigInputTypeArray{\n\t\t\t\t\t\u0026transcoder.JobTemplateConfigInputTypeArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"input0\"),\n\t\t\t\t\t\tUri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\tdefaultName := _args[0].(string)\n\t\t\t\t\t\t\texampleMp4Name := _args[1].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", defaultName, exampleMp4Name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOutput: \u0026transcoder.JobTemplateConfigOutputTypeArgs{\n\t\t\t\t\tUri: _default.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/outputs/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEditLists: transcoder.JobTemplateConfigEditListArray{\n\t\t\t\t\t\u0026transcoder.JobTemplateConfigEditListArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"atom0\"),\n\t\t\t\t\t\tInputs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"input0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"0s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tElementaryStreams: transcoder.JobTemplateConfigElementaryStreamArray{\n\t\t\t\t\t\u0026transcoder.JobTemplateConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream0\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobTemplateConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobTemplateConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(640),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(360),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(495000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobTemplateConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream1\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobTemplateConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobTemplateConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(1280),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(720),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(2500000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(2250000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobTemplateConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\tAudioStream: \u0026transcoder.JobTemplateConfigElementaryStreamAudioStreamArgs{\n\t\t\t\t\t\t\tCodec: pulumi.String(\"aac\"),\n\t\t\t\t\t\t\tBitrateBps: pulumi.Int(64000),\n\t\t\t\t\t\t\tChannelCount: pulumi.Int(2),\n\t\t\t\t\t\t\tChannelLayouts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fl\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSampleRateHertz: pulumi.Int(48000),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMuxStreams: transcoder.JobTemplateConfigMuxStreamArray{\n\t\t\t\t\t\u0026transcoder.JobTemplateConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"sd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream0\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobTemplateConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"hd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"hd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream1\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = transcoder.NewJob(ctx, \"default\", \u0026transcoder.JobArgs{\n\t\t\tTemplateId: defaultJobTemplate.Name,\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.transcoder.JobTemplate;\nimport com.pulumi.gcp.transcoder.JobTemplateArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobTemplateConfigArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobTemplateConfigOutputArgs;\nimport com.pulumi.gcp.transcoder.Job;\nimport com.pulumi.gcp.transcoder.JobArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Bucket(\"default\", BucketArgs.builder()\n .name(\"transcoder-job\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .publicAccessPrevention(\"enforced\")\n .build());\n\n var exampleMp4 = new BucketObject(\"exampleMp4\", BucketObjectArgs.builder()\n .name(\"example.mp4\")\n .source(new FileAsset(\"./test-fixtures/example.mp4\"))\n .bucket(default_.name())\n .build());\n\n var defaultJobTemplate = new JobTemplate(\"defaultJobTemplate\", JobTemplateArgs.builder()\n .jobTemplateId(\"example-job-template\")\n .location(\"us-central1\")\n .config(JobTemplateConfigArgs.builder()\n .inputs(JobTemplateConfigInputArgs.builder()\n .key(\"input0\")\n .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -\u003e {\n var defaultName = values.t1;\n var exampleMp4Name = values.t2;\n return String.format(\"gs://%s/%s\", defaultName,exampleMp4Name);\n }))\n .build())\n .output(JobTemplateConfigOutputArgs.builder()\n .uri(default_.name().applyValue(name -\u003e String.format(\"gs://%s/outputs/\", name)))\n .build())\n .editLists(JobTemplateConfigEditListArgs.builder()\n .key(\"atom0\")\n .inputs(\"input0\")\n .startTimeOffset(\"0s\")\n .build())\n .elementaryStreams( \n JobTemplateConfigElementaryStreamArgs.builder()\n .key(\"video-stream0\")\n .videoStream(JobTemplateConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobTemplateConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(640)\n .heightPixels(360)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(550000)\n .vbvFullnessBits(495000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobTemplateConfigElementaryStreamArgs.builder()\n .key(\"video-stream1\")\n .videoStream(JobTemplateConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobTemplateConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(1280)\n .heightPixels(720)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(2500000)\n .vbvFullnessBits(2250000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobTemplateConfigElementaryStreamArgs.builder()\n .key(\"audio-stream0\")\n .audioStream(JobTemplateConfigElementaryStreamAudioStreamArgs.builder()\n .codec(\"aac\")\n .bitrateBps(64000)\n .channelCount(2)\n .channelLayouts( \n \"fl\",\n \"fr\")\n .sampleRateHertz(48000)\n .build())\n .build())\n .muxStreams( \n JobTemplateConfigMuxStreamArgs.builder()\n .key(\"sd\")\n .fileName(\"sd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream0\",\n \"audio-stream0\")\n .build(),\n JobTemplateConfigMuxStreamArgs.builder()\n .key(\"hd\")\n .fileName(\"hd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream1\",\n \"audio-stream0\")\n .build())\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .build());\n\n var defaultJob = new Job(\"defaultJob\", JobArgs.builder()\n .templateId(defaultJobTemplate.name())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:storage:Bucket\n properties:\n name: transcoder-job\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n publicAccessPrevention: enforced\n exampleMp4:\n type: gcp:storage:BucketObject\n name: example_mp4\n properties:\n name: example.mp4\n source:\n fn::FileAsset: ./test-fixtures/example.mp4\n bucket: ${default.name}\n defaultJob:\n type: gcp:transcoder:Job\n name: default\n properties:\n templateId: ${defaultJobTemplate.name}\n location: us-central1\n labels:\n label: key\n defaultJobTemplate:\n type: gcp:transcoder:JobTemplate\n name: default\n properties:\n jobTemplateId: example-job-template\n location: us-central1\n config:\n inputs:\n - key: input0\n uri: gs://${default.name}/${exampleMp4.name}\n output:\n uri: gs://${default.name}/outputs/\n editLists:\n - key: atom0\n inputs:\n - input0\n startTimeOffset: 0s\n elementaryStreams:\n - key: video-stream0\n videoStream:\n h264:\n widthPixels: 640\n heightPixels: 360\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 550000\n vbvFullnessBits: 495000\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: video-stream1\n videoStream:\n h264:\n widthPixels: 1280\n heightPixels: 720\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 2.5e+06\n vbvFullnessBits: 2.25e+06\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: audio-stream0\n audioStream:\n codec: aac\n bitrateBps: 64000\n channelCount: 2\n channelLayouts:\n - fl\n - fr\n sampleRateHertz: 48000\n muxStreams:\n - key: sd\n fileName: sd.mp4\n container: mp4\n elementaryStreams:\n - video-stream0\n - audio-stream0\n - key: hd\n fileName: hd.mp4\n container: mp4\n elementaryStreams:\n - video-stream1\n - audio-stream0\n labels:\n label: key\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Transcoder Job 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.storage.Bucket(\"default\", {\n name: \"transcoder-job\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n publicAccessPrevention: \"enforced\",\n});\nconst exampleMp4 = new gcp.storage.BucketObject(\"example_mp4\", {\n name: \"example.mp4\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket: _default.name,\n});\nconst transcoderNotifications = new gcp.pubsub.Topic(\"transcoder_notifications\", {name: \"transcoder-notifications\"});\nconst defaultJob = new gcp.transcoder.Job(\"default\", {\n location: \"us-central1\",\n config: {\n inputs: [{\n key: \"input0\",\n uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,\n }],\n editLists: [{\n key: \"atom0\",\n inputs: [\"input0\"],\n startTimeOffset: \"0s\",\n }],\n adBreaks: [{\n startTimeOffset: \"3.500s\",\n }],\n elementaryStreams: [\n {\n key: \"video-stream0\",\n videoStream: {\n h264: {\n widthPixels: 640,\n heightPixels: 360,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 550000,\n vbvFullnessBits: 495000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"video-stream1\",\n videoStream: {\n h264: {\n widthPixels: 1280,\n heightPixels: 720,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 2500000,\n vbvFullnessBits: 2250000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"audio-stream0\",\n audioStream: {\n codec: \"aac\",\n bitrateBps: 64000,\n channelCount: 2,\n channelLayouts: [\n \"fl\",\n \"fr\",\n ],\n sampleRateHertz: 48000,\n },\n },\n ],\n muxStreams: [\n {\n key: \"sd\",\n fileName: \"sd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"hd\",\n fileName: \"hd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n ],\n pubsubDestination: {\n topic: transcoderNotifications.id,\n },\n output: {\n uri: pulumi.interpolate`gs://${_default.name}/outputs/`,\n },\n },\n labels: {\n label: \"key\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.Bucket(\"default\",\n name=\"transcoder-job\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True,\n public_access_prevention=\"enforced\")\nexample_mp4 = gcp.storage.BucketObject(\"example_mp4\",\n name=\"example.mp4\",\n source=pulumi.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket=default.name)\ntranscoder_notifications = gcp.pubsub.Topic(\"transcoder_notifications\", name=\"transcoder-notifications\")\ndefault_job = gcp.transcoder.Job(\"default\",\n location=\"us-central1\",\n config={\n \"inputs\": [{\n \"key\": \"input0\",\n \"uri\": pulumi.Output.all(\n defaultName=default.name,\n exampleMp4Name=example_mp4.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}\")\n,\n }],\n \"edit_lists\": [{\n \"key\": \"atom0\",\n \"inputs\": [\"input0\"],\n \"start_time_offset\": \"0s\",\n }],\n \"ad_breaks\": [{\n \"start_time_offset\": \"3.500s\",\n }],\n \"elementary_streams\": [\n {\n \"key\": \"video-stream0\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 640,\n \"height_pixels\": 360,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 550000,\n \"vbv_fullness_bits\": 495000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"video-stream1\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 1280,\n \"height_pixels\": 720,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 2500000,\n \"vbv_fullness_bits\": 2250000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"audio-stream0\",\n \"audio_stream\": {\n \"codec\": \"aac\",\n \"bitrate_bps\": 64000,\n \"channel_count\": 2,\n \"channel_layouts\": [\n \"fl\",\n \"fr\",\n ],\n \"sample_rate_hertz\": 48000,\n },\n },\n ],\n \"mux_streams\": [\n {\n \"key\": \"sd\",\n \"file_name\": \"sd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"hd\",\n \"file_name\": \"hd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n ],\n \"pubsub_destination\": {\n \"topic\": transcoder_notifications.id,\n },\n \"output\": {\n \"uri\": default.name.apply(lambda name: f\"gs://{name}/outputs/\"),\n },\n },\n labels={\n \"label\": \"key\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"transcoder-job\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n PublicAccessPrevention = \"enforced\",\n });\n\n var exampleMp4 = new Gcp.Storage.BucketObject(\"example_mp4\", new()\n {\n Name = \"example.mp4\",\n Source = new FileAsset(\"./test-fixtures/example.mp4\"),\n Bucket = @default.Name,\n });\n\n var transcoderNotifications = new Gcp.PubSub.Topic(\"transcoder_notifications\", new()\n {\n Name = \"transcoder-notifications\",\n });\n\n var defaultJob = new Gcp.Transcoder.Job(\"default\", new()\n {\n Location = \"us-central1\",\n Config = new Gcp.Transcoder.Inputs.JobConfigArgs\n {\n Inputs = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigInputArgs\n {\n Key = \"input0\",\n Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =\u003e\n {\n var defaultName = values.Item1;\n var exampleMp4Name = values.Item2;\n return $\"gs://{defaultName}/{exampleMp4Name}\";\n }),\n },\n },\n EditLists = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigEditListArgs\n {\n Key = \"atom0\",\n Inputs = new[]\n {\n \"input0\",\n },\n StartTimeOffset = \"0s\",\n },\n },\n AdBreaks = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigAdBreakArgs\n {\n StartTimeOffset = \"3.500s\",\n },\n },\n ElementaryStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"video-stream0\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 640,\n HeightPixels = 360,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 550000,\n VbvFullnessBits = 495000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"video-stream1\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 1280,\n HeightPixels = 720,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 2500000,\n VbvFullnessBits = 2250000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"audio-stream0\",\n AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs\n {\n Codec = \"aac\",\n BitrateBps = 64000,\n ChannelCount = 2,\n ChannelLayouts = new[]\n {\n \"fl\",\n \"fr\",\n },\n SampleRateHertz = 48000,\n },\n },\n },\n MuxStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"sd\",\n FileName = \"sd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream0\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"hd\",\n FileName = \"hd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream1\",\n \"audio-stream0\",\n },\n },\n },\n PubsubDestination = new Gcp.Transcoder.Inputs.JobConfigPubsubDestinationArgs\n {\n Topic = transcoderNotifications.Id,\n },\n Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs\n {\n Uri = @default.Name.Apply(name =\u003e $\"gs://{name}/outputs/\"),\n },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n });\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-gcp/sdk/v8/go/gcp/transcoder\"\n\t\"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, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"transcoder-job\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tPublicAccessPrevention: pulumi.String(\"enforced\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMp4, err := storage.NewBucketObject(ctx, \"example_mp4\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"example.mp4\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/example.mp4\"),\n\t\t\tBucket: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttranscoderNotifications, err := pubsub.NewTopic(ctx, \"transcoder_notifications\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"transcoder-notifications\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = transcoder.NewJob(ctx, \"default\", \u0026transcoder.JobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026transcoder.JobConfigArgs{\n\t\t\t\tInputs: transcoder.JobConfigInputTypeArray{\n\t\t\t\t\t\u0026transcoder.JobConfigInputTypeArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"input0\"),\n\t\t\t\t\t\tUri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\tdefaultName := _args[0].(string)\n\t\t\t\t\t\t\texampleMp4Name := _args[1].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", defaultName, exampleMp4Name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEditLists: transcoder.JobConfigEditListArray{\n\t\t\t\t\t\u0026transcoder.JobConfigEditListArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"atom0\"),\n\t\t\t\t\t\tInputs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"input0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"0s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdBreaks: transcoder.JobConfigAdBreakArray{\n\t\t\t\t\t\u0026transcoder.JobConfigAdBreakArgs{\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"3.500s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tElementaryStreams: transcoder.JobConfigElementaryStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream0\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(640),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(360),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(495000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream1\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(1280),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(720),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(2500000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(2250000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\tAudioStream: \u0026transcoder.JobConfigElementaryStreamAudioStreamArgs{\n\t\t\t\t\t\t\tCodec: pulumi.String(\"aac\"),\n\t\t\t\t\t\t\tBitrateBps: pulumi.Int(64000),\n\t\t\t\t\t\t\tChannelCount: pulumi.Int(2),\n\t\t\t\t\t\t\tChannelLayouts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fl\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSampleRateHertz: pulumi.Int(48000),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMuxStreams: transcoder.JobConfigMuxStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"sd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream0\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"hd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"hd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream1\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPubsubDestination: \u0026transcoder.JobConfigPubsubDestinationArgs{\n\t\t\t\t\tTopic: transcoderNotifications.ID(),\n\t\t\t\t},\n\t\t\t\tOutput: \u0026transcoder.JobConfigOutputTypeArgs{\n\t\t\t\t\tUri: _default.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/outputs/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.transcoder.Job;\nimport com.pulumi.gcp.transcoder.JobArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigPubsubDestinationArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigOutputArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Bucket(\"default\", BucketArgs.builder()\n .name(\"transcoder-job\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .publicAccessPrevention(\"enforced\")\n .build());\n\n var exampleMp4 = new BucketObject(\"exampleMp4\", BucketObjectArgs.builder()\n .name(\"example.mp4\")\n .source(new FileAsset(\"./test-fixtures/example.mp4\"))\n .bucket(default_.name())\n .build());\n\n var transcoderNotifications = new Topic(\"transcoderNotifications\", TopicArgs.builder()\n .name(\"transcoder-notifications\")\n .build());\n\n var defaultJob = new Job(\"defaultJob\", JobArgs.builder()\n .location(\"us-central1\")\n .config(JobConfigArgs.builder()\n .inputs(JobConfigInputArgs.builder()\n .key(\"input0\")\n .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -\u003e {\n var defaultName = values.t1;\n var exampleMp4Name = values.t2;\n return String.format(\"gs://%s/%s\", defaultName,exampleMp4Name);\n }))\n .build())\n .editLists(JobConfigEditListArgs.builder()\n .key(\"atom0\")\n .inputs(\"input0\")\n .startTimeOffset(\"0s\")\n .build())\n .adBreaks(JobConfigAdBreakArgs.builder()\n .startTimeOffset(\"3.500s\")\n .build())\n .elementaryStreams( \n JobConfigElementaryStreamArgs.builder()\n .key(\"video-stream0\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(640)\n .heightPixels(360)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(550000)\n .vbvFullnessBits(495000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"video-stream1\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(1280)\n .heightPixels(720)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(2500000)\n .vbvFullnessBits(2250000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"audio-stream0\")\n .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()\n .codec(\"aac\")\n .bitrateBps(64000)\n .channelCount(2)\n .channelLayouts( \n \"fl\",\n \"fr\")\n .sampleRateHertz(48000)\n .build())\n .build())\n .muxStreams( \n JobConfigMuxStreamArgs.builder()\n .key(\"sd\")\n .fileName(\"sd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream0\",\n \"audio-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"hd\")\n .fileName(\"hd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream1\",\n \"audio-stream0\")\n .build())\n .pubsubDestination(JobConfigPubsubDestinationArgs.builder()\n .topic(transcoderNotifications.id())\n .build())\n .output(JobConfigOutputArgs.builder()\n .uri(default_.name().applyValue(name -\u003e String.format(\"gs://%s/outputs/\", name)))\n .build())\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:storage:Bucket\n properties:\n name: transcoder-job\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n publicAccessPrevention: enforced\n exampleMp4:\n type: gcp:storage:BucketObject\n name: example_mp4\n properties:\n name: example.mp4\n source:\n fn::FileAsset: ./test-fixtures/example.mp4\n bucket: ${default.name}\n transcoderNotifications:\n type: gcp:pubsub:Topic\n name: transcoder_notifications\n properties:\n name: transcoder-notifications\n defaultJob:\n type: gcp:transcoder:Job\n name: default\n properties:\n location: us-central1\n config:\n inputs:\n - key: input0\n uri: gs://${default.name}/${exampleMp4.name}\n editLists:\n - key: atom0\n inputs:\n - input0\n startTimeOffset: 0s\n adBreaks:\n - startTimeOffset: 3.500s\n elementaryStreams:\n - key: video-stream0\n videoStream:\n h264:\n widthPixels: 640\n heightPixels: 360\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 550000\n vbvFullnessBits: 495000\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: video-stream1\n videoStream:\n h264:\n widthPixels: 1280\n heightPixels: 720\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 2.5e+06\n vbvFullnessBits: 2.25e+06\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: audio-stream0\n audioStream:\n codec: aac\n bitrateBps: 64000\n channelCount: 2\n channelLayouts:\n - fl\n - fr\n sampleRateHertz: 48000\n muxStreams:\n - key: sd\n fileName: sd.mp4\n container: mp4\n elementaryStreams:\n - video-stream0\n - audio-stream0\n - key: hd\n fileName: hd.mp4\n container: mp4\n elementaryStreams:\n - video-stream1\n - audio-stream0\n pubsubDestination:\n topic: ${transcoderNotifications.id}\n output:\n uri: gs://${default.name}/outputs/\n labels:\n label: key\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Transcoder Job Encryptions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.storage.Bucket(\"default\", {\n name: \"transcoder-job\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n publicAccessPrevention: \"enforced\",\n});\nconst exampleMp4 = new gcp.storage.BucketObject(\"example_mp4\", {\n name: \"example.mp4\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket: _default.name,\n});\nconst encryptionKey = new gcp.secretmanager.Secret(\"encryption_key\", {\n secretId: \"transcoder-encryption-key\",\n replication: {\n auto: {},\n },\n});\nconst encryptionKeySecretVersion = new gcp.secretmanager.SecretVersion(\"encryption_key\", {\n secret: encryptionKey.name,\n secretData: \"4A67F2C1B8E93A4F6D3E7890A1BC23DF\",\n});\nconst project = gcp.organizations.getProject({});\n// this is required to allow the transcoder service identity to access the secret\nconst transcoder = new gcp.projects.ServiceIdentity(\"transcoder\", {\n project: project.then(project =\u003e project.projectId),\n service: \"transcoder.googleapis.com\",\n});\nconst transcoderEncryptionKeyAccessor = new gcp.secretmanager.SecretIamMember(\"transcoder_encryption_key_accessor\", {\n secretId: encryptionKey.secretId,\n project: encryptionKey.project,\n role: \"roles/secretmanager.secretAccessor\",\n member: pulumi.interpolate`serviceAccount:${transcoder.email}`,\n});\nconst defaultJob = new gcp.transcoder.Job(\"default\", {\n location: \"us-central1\",\n config: {\n inputs: [{\n key: \"input0\",\n uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,\n }],\n elementaryStreams: [\n {\n key: \"es_video\",\n videoStream: {\n h264: {\n profile: \"main\",\n heightPixels: 600,\n widthPixels: 800,\n bitrateBps: 1000000,\n frameRate: 60,\n },\n },\n },\n {\n key: \"es_audio\",\n audioStream: {\n codec: \"aac\",\n channelCount: 2,\n bitrateBps: 160000,\n },\n },\n ],\n encryptions: [\n {\n id: \"aes-128\",\n secretManagerKeySource: {\n secretVersion: encryptionKeySecretVersion.name,\n },\n drmSystems: {\n clearkey: {},\n },\n aes128: {},\n },\n {\n id: \"cenc\",\n secretManagerKeySource: {\n secretVersion: encryptionKeySecretVersion.name,\n },\n drmSystems: {\n widevine: {},\n },\n mpegCenc: {\n scheme: \"cenc\",\n },\n },\n {\n id: \"cbcs\",\n secretManagerKeySource: {\n secretVersion: encryptionKeySecretVersion.name,\n },\n drmSystems: {\n widevine: {},\n },\n mpegCenc: {\n scheme: \"cbcs\",\n },\n },\n ],\n muxStreams: [\n {\n key: \"ts_aes128\",\n container: \"ts\",\n elementaryStreams: [\n \"es_video\",\n \"es_audio\",\n ],\n segmentSettings: {\n segmentDuration: \"6s\",\n },\n encryptionId: \"aes-128\",\n },\n {\n key: \"fmp4_cenc_video\",\n container: \"fmp4\",\n elementaryStreams: [\"es_video\"],\n segmentSettings: {\n segmentDuration: \"6s\",\n },\n encryptionId: \"cenc\",\n },\n {\n key: \"fmp4_cenc_audio\",\n container: \"fmp4\",\n elementaryStreams: [\"es_audio\"],\n segmentSettings: {\n segmentDuration: \"6s\",\n },\n encryptionId: \"cenc\",\n },\n {\n key: \"fmp4_cbcs_video\",\n container: \"fmp4\",\n elementaryStreams: [\"es_video\"],\n segmentSettings: {\n segmentDuration: \"6s\",\n },\n encryptionId: \"cbcs\",\n },\n {\n key: \"fmp4_cbcs_audio\",\n container: \"fmp4\",\n elementaryStreams: [\"es_audio\"],\n segmentSettings: {\n segmentDuration: \"6s\",\n },\n encryptionId: \"cbcs\",\n },\n ],\n manifests: [\n {\n fileName: \"manifest_aes128.m3u8\",\n type: \"HLS\",\n muxStreams: [\"ts_aes128\"],\n },\n {\n fileName: \"manifest_cenc.mpd\",\n type: \"DASH\",\n muxStreams: [\n \"fmp4_cenc_video\",\n \"fmp4_cenc_audio\",\n ],\n },\n {\n fileName: \"manifest_cbcs.mpd\",\n type: \"DASH\",\n muxStreams: [\n \"fmp4_cbcs_video\",\n \"fmp4_cbcs_audio\",\n ],\n },\n ],\n output: {\n uri: pulumi.interpolate`gs://${_default.name}/outputs/`,\n },\n },\n labels: {\n label: \"key\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.Bucket(\"default\",\n name=\"transcoder-job\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True,\n public_access_prevention=\"enforced\")\nexample_mp4 = gcp.storage.BucketObject(\"example_mp4\",\n name=\"example.mp4\",\n source=pulumi.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket=default.name)\nencryption_key = gcp.secretmanager.Secret(\"encryption_key\",\n secret_id=\"transcoder-encryption-key\",\n replication={\n \"auto\": {},\n })\nencryption_key_secret_version = gcp.secretmanager.SecretVersion(\"encryption_key\",\n secret=encryption_key.name,\n secret_data=\"4A67F2C1B8E93A4F6D3E7890A1BC23DF\")\nproject = gcp.organizations.get_project()\n# this is required to allow the transcoder service identity to access the secret\ntranscoder = gcp.projects.ServiceIdentity(\"transcoder\",\n project=project.project_id,\n service=\"transcoder.googleapis.com\")\ntranscoder_encryption_key_accessor = gcp.secretmanager.SecretIamMember(\"transcoder_encryption_key_accessor\",\n secret_id=encryption_key.secret_id,\n project=encryption_key.project,\n role=\"roles/secretmanager.secretAccessor\",\n member=transcoder.email.apply(lambda email: f\"serviceAccount:{email}\"))\ndefault_job = gcp.transcoder.Job(\"default\",\n location=\"us-central1\",\n config={\n \"inputs\": [{\n \"key\": \"input0\",\n \"uri\": pulumi.Output.all(\n defaultName=default.name,\n exampleMp4Name=example_mp4.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}\")\n,\n }],\n \"elementary_streams\": [\n {\n \"key\": \"es_video\",\n \"video_stream\": {\n \"h264\": {\n \"profile\": \"main\",\n \"height_pixels\": 600,\n \"width_pixels\": 800,\n \"bitrate_bps\": 1000000,\n \"frame_rate\": 60,\n },\n },\n },\n {\n \"key\": \"es_audio\",\n \"audio_stream\": {\n \"codec\": \"aac\",\n \"channel_count\": 2,\n \"bitrate_bps\": 160000,\n },\n },\n ],\n \"encryptions\": [\n {\n \"id\": \"aes-128\",\n \"secret_manager_key_source\": {\n \"secret_version\": encryption_key_secret_version.name,\n },\n \"drm_systems\": {\n \"clearkey\": {},\n },\n \"aes128\": {},\n },\n {\n \"id\": \"cenc\",\n \"secret_manager_key_source\": {\n \"secret_version\": encryption_key_secret_version.name,\n },\n \"drm_systems\": {\n \"widevine\": {},\n },\n \"mpeg_cenc\": {\n \"scheme\": \"cenc\",\n },\n },\n {\n \"id\": \"cbcs\",\n \"secret_manager_key_source\": {\n \"secret_version\": encryption_key_secret_version.name,\n },\n \"drm_systems\": {\n \"widevine\": {},\n },\n \"mpeg_cenc\": {\n \"scheme\": \"cbcs\",\n },\n },\n ],\n \"mux_streams\": [\n {\n \"key\": \"ts_aes128\",\n \"container\": \"ts\",\n \"elementary_streams\": [\n \"es_video\",\n \"es_audio\",\n ],\n \"segment_settings\": {\n \"segment_duration\": \"6s\",\n },\n \"encryption_id\": \"aes-128\",\n },\n {\n \"key\": \"fmp4_cenc_video\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"es_video\"],\n \"segment_settings\": {\n \"segment_duration\": \"6s\",\n },\n \"encryption_id\": \"cenc\",\n },\n {\n \"key\": \"fmp4_cenc_audio\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"es_audio\"],\n \"segment_settings\": {\n \"segment_duration\": \"6s\",\n },\n \"encryption_id\": \"cenc\",\n },\n {\n \"key\": \"fmp4_cbcs_video\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"es_video\"],\n \"segment_settings\": {\n \"segment_duration\": \"6s\",\n },\n \"encryption_id\": \"cbcs\",\n },\n {\n \"key\": \"fmp4_cbcs_audio\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"es_audio\"],\n \"segment_settings\": {\n \"segment_duration\": \"6s\",\n },\n \"encryption_id\": \"cbcs\",\n },\n ],\n \"manifests\": [\n {\n \"file_name\": \"manifest_aes128.m3u8\",\n \"type\": \"HLS\",\n \"mux_streams\": [\"ts_aes128\"],\n },\n {\n \"file_name\": \"manifest_cenc.mpd\",\n \"type\": \"DASH\",\n \"mux_streams\": [\n \"fmp4_cenc_video\",\n \"fmp4_cenc_audio\",\n ],\n },\n {\n \"file_name\": \"manifest_cbcs.mpd\",\n \"type\": \"DASH\",\n \"mux_streams\": [\n \"fmp4_cbcs_video\",\n \"fmp4_cbcs_audio\",\n ],\n },\n ],\n \"output\": {\n \"uri\": default.name.apply(lambda name: f\"gs://{name}/outputs/\"),\n },\n },\n labels={\n \"label\": \"key\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"transcoder-job\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n PublicAccessPrevention = \"enforced\",\n });\n\n var exampleMp4 = new Gcp.Storage.BucketObject(\"example_mp4\", new()\n {\n Name = \"example.mp4\",\n Source = new FileAsset(\"./test-fixtures/example.mp4\"),\n Bucket = @default.Name,\n });\n\n var encryptionKey = new Gcp.SecretManager.Secret(\"encryption_key\", new()\n {\n SecretId = \"transcoder-encryption-key\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var encryptionKeySecretVersion = new Gcp.SecretManager.SecretVersion(\"encryption_key\", new()\n {\n Secret = encryptionKey.Name,\n SecretData = \"4A67F2C1B8E93A4F6D3E7890A1BC23DF\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n // this is required to allow the transcoder service identity to access the secret\n var transcoder = new Gcp.Projects.ServiceIdentity(\"transcoder\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"transcoder.googleapis.com\",\n });\n\n var transcoderEncryptionKeyAccessor = new Gcp.SecretManager.SecretIamMember(\"transcoder_encryption_key_accessor\", new()\n {\n SecretId = encryptionKey.SecretId,\n Project = encryptionKey.Project,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = transcoder.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var defaultJob = new Gcp.Transcoder.Job(\"default\", new()\n {\n Location = \"us-central1\",\n Config = new Gcp.Transcoder.Inputs.JobConfigArgs\n {\n Inputs = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigInputArgs\n {\n Key = \"input0\",\n Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =\u003e\n {\n var defaultName = values.Item1;\n var exampleMp4Name = values.Item2;\n return $\"gs://{defaultName}/{exampleMp4Name}\";\n }),\n },\n },\n ElementaryStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"es_video\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n Profile = \"main\",\n HeightPixels = 600,\n WidthPixels = 800,\n BitrateBps = 1000000,\n FrameRate = 60,\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"es_audio\",\n AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs\n {\n Codec = \"aac\",\n ChannelCount = 2,\n BitrateBps = 160000,\n },\n },\n },\n Encryptions = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigEncryptionArgs\n {\n Id = \"aes-128\",\n SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobConfigEncryptionSecretManagerKeySourceArgs\n {\n SecretVersion = encryptionKeySecretVersion.Name,\n },\n DrmSystems = new Gcp.Transcoder.Inputs.JobConfigEncryptionDrmSystemsArgs\n {\n Clearkey = null,\n },\n Aes128 = null,\n },\n new Gcp.Transcoder.Inputs.JobConfigEncryptionArgs\n {\n Id = \"cenc\",\n SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobConfigEncryptionSecretManagerKeySourceArgs\n {\n SecretVersion = encryptionKeySecretVersion.Name,\n },\n DrmSystems = new Gcp.Transcoder.Inputs.JobConfigEncryptionDrmSystemsArgs\n {\n Widevine = null,\n },\n MpegCenc = new Gcp.Transcoder.Inputs.JobConfigEncryptionMpegCencArgs\n {\n Scheme = \"cenc\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigEncryptionArgs\n {\n Id = \"cbcs\",\n SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobConfigEncryptionSecretManagerKeySourceArgs\n {\n SecretVersion = encryptionKeySecretVersion.Name,\n },\n DrmSystems = new Gcp.Transcoder.Inputs.JobConfigEncryptionDrmSystemsArgs\n {\n Widevine = null,\n },\n MpegCenc = new Gcp.Transcoder.Inputs.JobConfigEncryptionMpegCencArgs\n {\n Scheme = \"cbcs\",\n },\n },\n },\n MuxStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"ts_aes128\",\n Container = \"ts\",\n ElementaryStreams = new[]\n {\n \"es_video\",\n \"es_audio\",\n },\n SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs\n {\n SegmentDuration = \"6s\",\n },\n EncryptionId = \"aes-128\",\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"fmp4_cenc_video\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"es_video\",\n },\n SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs\n {\n SegmentDuration = \"6s\",\n },\n EncryptionId = \"cenc\",\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"fmp4_cenc_audio\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"es_audio\",\n },\n SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs\n {\n SegmentDuration = \"6s\",\n },\n EncryptionId = \"cenc\",\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"fmp4_cbcs_video\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"es_video\",\n },\n SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs\n {\n SegmentDuration = \"6s\",\n },\n EncryptionId = \"cbcs\",\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"fmp4_cbcs_audio\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"es_audio\",\n },\n SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs\n {\n SegmentDuration = \"6s\",\n },\n EncryptionId = \"cbcs\",\n },\n },\n Manifests = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigManifestArgs\n {\n FileName = \"manifest_aes128.m3u8\",\n Type = \"HLS\",\n MuxStreams = new[]\n {\n \"ts_aes128\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigManifestArgs\n {\n FileName = \"manifest_cenc.mpd\",\n Type = \"DASH\",\n MuxStreams = new[]\n {\n \"fmp4_cenc_video\",\n \"fmp4_cenc_audio\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigManifestArgs\n {\n FileName = \"manifest_cbcs.mpd\",\n Type = \"DASH\",\n MuxStreams = new[]\n {\n \"fmp4_cbcs_video\",\n \"fmp4_cbcs_audio\",\n },\n },\n },\n Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs\n {\n Uri = @default.Name.Apply(name =\u003e $\"gs://{name}/outputs/\"),\n },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n });\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-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/transcoder\"\n\t\"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, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"transcoder-job\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tPublicAccessPrevention: pulumi.String(\"enforced\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMp4, err := storage.NewBucketObject(ctx, \"example_mp4\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"example.mp4\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/example.mp4\"),\n\t\t\tBucket: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tencryptionKey, err := secretmanager.NewSecret(ctx, \"encryption_key\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"transcoder-encryption-key\"),\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\tencryptionKeySecretVersion, err := secretmanager.NewSecretVersion(ctx, \"encryption_key\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: encryptionKey.Name,\n\t\t\tSecretData: pulumi.String(\"4A67F2C1B8E93A4F6D3E7890A1BC23DF\"),\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// this is required to allow the transcoder service identity to access the secret\n\t\ttranscoder, err := projects.NewServiceIdentity(ctx, \"transcoder\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tService: pulumi.String(\"transcoder.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"transcoder_encryption_key_accessor\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: encryptionKey.SecretId,\n\t\t\tProject: encryptionKey.Project,\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: transcoder.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 = transcoder.NewJob(ctx, \"default\", \u0026transcoder.JobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026transcoder.JobConfigArgs{\n\t\t\t\tInputs: transcoder.JobConfigInputTypeArray{\n\t\t\t\t\t\u0026transcoder.JobConfigInputTypeArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"input0\"),\n\t\t\t\t\t\tUri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\tdefaultName := _args[0].(string)\n\t\t\t\t\t\t\texampleMp4Name := _args[1].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", defaultName, exampleMp4Name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tElementaryStreams: transcoder.JobConfigElementaryStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"es_video\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"main\"),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(600),\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(800),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(1000000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"es_audio\"),\n\t\t\t\t\t\tAudioStream: \u0026transcoder.JobConfigElementaryStreamAudioStreamArgs{\n\t\t\t\t\t\t\tCodec: pulumi.String(\"aac\"),\n\t\t\t\t\t\t\tChannelCount: pulumi.Int(2),\n\t\t\t\t\t\t\tBitrateBps: pulumi.Int(160000),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEncryptions: transcoder.JobConfigEncryptionArray{\n\t\t\t\t\t\u0026transcoder.JobConfigEncryptionArgs{\n\t\t\t\t\t\tId: pulumi.String(\"aes-128\"),\n\t\t\t\t\t\tSecretManagerKeySource: \u0026transcoder.JobConfigEncryptionSecretManagerKeySourceArgs{\n\t\t\t\t\t\t\tSecretVersion: encryptionKeySecretVersion.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDrmSystems: \u0026transcoder.JobConfigEncryptionDrmSystemsArgs{\n\t\t\t\t\t\t\tClearkey: \u0026transcoder.JobConfigEncryptionDrmSystemsClearkeyArgs{},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAes128: \u0026transcoder.JobConfigEncryptionAes128Args{},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigEncryptionArgs{\n\t\t\t\t\t\tId: pulumi.String(\"cenc\"),\n\t\t\t\t\t\tSecretManagerKeySource: \u0026transcoder.JobConfigEncryptionSecretManagerKeySourceArgs{\n\t\t\t\t\t\t\tSecretVersion: encryptionKeySecretVersion.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDrmSystems: \u0026transcoder.JobConfigEncryptionDrmSystemsArgs{\n\t\t\t\t\t\t\tWidevine: \u0026transcoder.JobConfigEncryptionDrmSystemsWidevineArgs{},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMpegCenc: \u0026transcoder.JobConfigEncryptionMpegCencArgs{\n\t\t\t\t\t\t\tScheme: pulumi.String(\"cenc\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigEncryptionArgs{\n\t\t\t\t\t\tId: pulumi.String(\"cbcs\"),\n\t\t\t\t\t\tSecretManagerKeySource: \u0026transcoder.JobConfigEncryptionSecretManagerKeySourceArgs{\n\t\t\t\t\t\t\tSecretVersion: encryptionKeySecretVersion.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDrmSystems: \u0026transcoder.JobConfigEncryptionDrmSystemsArgs{\n\t\t\t\t\t\t\tWidevine: \u0026transcoder.JobConfigEncryptionDrmSystemsWidevineArgs{},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMpegCenc: \u0026transcoder.JobConfigEncryptionMpegCencArgs{\n\t\t\t\t\t\t\tScheme: pulumi.String(\"cbcs\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMuxStreams: transcoder.JobConfigMuxStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"ts_aes128\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"ts\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"es_video\"),\n\t\t\t\t\t\t\tpulumi.String(\"es_audio\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSegmentSettings: \u0026transcoder.JobConfigMuxStreamSegmentSettingsArgs{\n\t\t\t\t\t\t\tSegmentDuration: pulumi.String(\"6s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEncryptionId: pulumi.String(\"aes-128\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"fmp4_cenc_video\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"es_video\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSegmentSettings: \u0026transcoder.JobConfigMuxStreamSegmentSettingsArgs{\n\t\t\t\t\t\t\tSegmentDuration: pulumi.String(\"6s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEncryptionId: pulumi.String(\"cenc\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"fmp4_cenc_audio\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"es_audio\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSegmentSettings: \u0026transcoder.JobConfigMuxStreamSegmentSettingsArgs{\n\t\t\t\t\t\t\tSegmentDuration: pulumi.String(\"6s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEncryptionId: pulumi.String(\"cenc\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"fmp4_cbcs_video\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"es_video\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSegmentSettings: \u0026transcoder.JobConfigMuxStreamSegmentSettingsArgs{\n\t\t\t\t\t\t\tSegmentDuration: pulumi.String(\"6s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEncryptionId: pulumi.String(\"cbcs\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"fmp4_cbcs_audio\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"es_audio\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSegmentSettings: \u0026transcoder.JobConfigMuxStreamSegmentSettingsArgs{\n\t\t\t\t\t\t\tSegmentDuration: pulumi.String(\"6s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEncryptionId: pulumi.String(\"cbcs\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tManifests: transcoder.JobConfigManifestArray{\n\t\t\t\t\t\u0026transcoder.JobConfigManifestArgs{\n\t\t\t\t\t\tFileName: pulumi.String(\"manifest_aes128.m3u8\"),\n\t\t\t\t\t\tType: pulumi.String(\"HLS\"),\n\t\t\t\t\t\tMuxStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"ts_aes128\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigManifestArgs{\n\t\t\t\t\t\tFileName: pulumi.String(\"manifest_cenc.mpd\"),\n\t\t\t\t\t\tType: pulumi.String(\"DASH\"),\n\t\t\t\t\t\tMuxStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"fmp4_cenc_video\"),\n\t\t\t\t\t\t\tpulumi.String(\"fmp4_cenc_audio\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigManifestArgs{\n\t\t\t\t\t\tFileName: pulumi.String(\"manifest_cbcs.mpd\"),\n\t\t\t\t\t\tType: pulumi.String(\"DASH\"),\n\t\t\t\t\t\tMuxStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"fmp4_cbcs_video\"),\n\t\t\t\t\t\t\tpulumi.String(\"fmp4_cbcs_audio\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOutput: \u0026transcoder.JobConfigOutputTypeArgs{\n\t\t\t\t\tUri: _default.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/outputs/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.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.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.transcoder.Job;\nimport com.pulumi.gcp.transcoder.JobArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigOutputArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Bucket(\"default\", BucketArgs.builder()\n .name(\"transcoder-job\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .publicAccessPrevention(\"enforced\")\n .build());\n\n var exampleMp4 = new BucketObject(\"exampleMp4\", BucketObjectArgs.builder()\n .name(\"example.mp4\")\n .source(new FileAsset(\"./test-fixtures/example.mp4\"))\n .bucket(default_.name())\n .build());\n\n var encryptionKey = new Secret(\"encryptionKey\", SecretArgs.builder()\n .secretId(\"transcoder-encryption-key\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var encryptionKeySecretVersion = new SecretVersion(\"encryptionKeySecretVersion\", SecretVersionArgs.builder()\n .secret(encryptionKey.name())\n .secretData(\"4A67F2C1B8E93A4F6D3E7890A1BC23DF\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n // this is required to allow the transcoder service identity to access the secret\n var transcoder = new ServiceIdentity(\"transcoder\", ServiceIdentityArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"transcoder.googleapis.com\")\n .build());\n\n var transcoderEncryptionKeyAccessor = new SecretIamMember(\"transcoderEncryptionKeyAccessor\", SecretIamMemberArgs.builder()\n .secretId(encryptionKey.secretId())\n .project(encryptionKey.project())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(transcoder.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var defaultJob = new Job(\"defaultJob\", JobArgs.builder()\n .location(\"us-central1\")\n .config(JobConfigArgs.builder()\n .inputs(JobConfigInputArgs.builder()\n .key(\"input0\")\n .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -\u003e {\n var defaultName = values.t1;\n var exampleMp4Name = values.t2;\n return String.format(\"gs://%s/%s\", defaultName,exampleMp4Name);\n }))\n .build())\n .elementaryStreams( \n JobConfigElementaryStreamArgs.builder()\n .key(\"es_video\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .profile(\"main\")\n .heightPixels(600)\n .widthPixels(800)\n .bitrateBps(1000000)\n .frameRate(60)\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"es_audio\")\n .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()\n .codec(\"aac\")\n .channelCount(2)\n .bitrateBps(160000)\n .build())\n .build())\n .encryptions( \n JobConfigEncryptionArgs.builder()\n .id(\"aes-128\")\n .secretManagerKeySource(JobConfigEncryptionSecretManagerKeySourceArgs.builder()\n .secretVersion(encryptionKeySecretVersion.name())\n .build())\n .drmSystems(JobConfigEncryptionDrmSystemsArgs.builder()\n .clearkey()\n .build())\n .aes128()\n .build(),\n JobConfigEncryptionArgs.builder()\n .id(\"cenc\")\n .secretManagerKeySource(JobConfigEncryptionSecretManagerKeySourceArgs.builder()\n .secretVersion(encryptionKeySecretVersion.name())\n .build())\n .drmSystems(JobConfigEncryptionDrmSystemsArgs.builder()\n .widevine()\n .build())\n .mpegCenc(JobConfigEncryptionMpegCencArgs.builder()\n .scheme(\"cenc\")\n .build())\n .build(),\n JobConfigEncryptionArgs.builder()\n .id(\"cbcs\")\n .secretManagerKeySource(JobConfigEncryptionSecretManagerKeySourceArgs.builder()\n .secretVersion(encryptionKeySecretVersion.name())\n .build())\n .drmSystems(JobConfigEncryptionDrmSystemsArgs.builder()\n .widevine()\n .build())\n .mpegCenc(JobConfigEncryptionMpegCencArgs.builder()\n .scheme(\"cbcs\")\n .build())\n .build())\n .muxStreams( \n JobConfigMuxStreamArgs.builder()\n .key(\"ts_aes128\")\n .container(\"ts\")\n .elementaryStreams( \n \"es_video\",\n \"es_audio\")\n .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()\n .segmentDuration(\"6s\")\n .build())\n .encryptionId(\"aes-128\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"fmp4_cenc_video\")\n .container(\"fmp4\")\n .elementaryStreams(\"es_video\")\n .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()\n .segmentDuration(\"6s\")\n .build())\n .encryptionId(\"cenc\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"fmp4_cenc_audio\")\n .container(\"fmp4\")\n .elementaryStreams(\"es_audio\")\n .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()\n .segmentDuration(\"6s\")\n .build())\n .encryptionId(\"cenc\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"fmp4_cbcs_video\")\n .container(\"fmp4\")\n .elementaryStreams(\"es_video\")\n .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()\n .segmentDuration(\"6s\")\n .build())\n .encryptionId(\"cbcs\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"fmp4_cbcs_audio\")\n .container(\"fmp4\")\n .elementaryStreams(\"es_audio\")\n .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()\n .segmentDuration(\"6s\")\n .build())\n .encryptionId(\"cbcs\")\n .build())\n .manifests( \n JobConfigManifestArgs.builder()\n .fileName(\"manifest_aes128.m3u8\")\n .type(\"HLS\")\n .muxStreams(\"ts_aes128\")\n .build(),\n JobConfigManifestArgs.builder()\n .fileName(\"manifest_cenc.mpd\")\n .type(\"DASH\")\n .muxStreams( \n \"fmp4_cenc_video\",\n \"fmp4_cenc_audio\")\n .build(),\n JobConfigManifestArgs.builder()\n .fileName(\"manifest_cbcs.mpd\")\n .type(\"DASH\")\n .muxStreams( \n \"fmp4_cbcs_video\",\n \"fmp4_cbcs_audio\")\n .build())\n .output(JobConfigOutputArgs.builder()\n .uri(default_.name().applyValue(name -\u003e String.format(\"gs://%s/outputs/\", name)))\n .build())\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:storage:Bucket\n properties:\n name: transcoder-job\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n publicAccessPrevention: enforced\n exampleMp4:\n type: gcp:storage:BucketObject\n name: example_mp4\n properties:\n name: example.mp4\n source:\n fn::FileAsset: ./test-fixtures/example.mp4\n bucket: ${default.name}\n encryptionKey:\n type: gcp:secretmanager:Secret\n name: encryption_key\n properties:\n secretId: transcoder-encryption-key\n replication:\n auto: {}\n encryptionKeySecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: encryption_key\n properties:\n secret: ${encryptionKey.name}\n secretData: 4A67F2C1B8E93A4F6D3E7890A1BC23DF\n # this is required to allow the transcoder service identity to access the secret\n transcoder:\n type: gcp:projects:ServiceIdentity\n properties:\n project: ${project.projectId}\n service: transcoder.googleapis.com\n transcoderEncryptionKeyAccessor:\n type: gcp:secretmanager:SecretIamMember\n name: transcoder_encryption_key_accessor\n properties:\n secretId: ${encryptionKey.secretId}\n project: ${encryptionKey.project}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${transcoder.email}\n defaultJob:\n type: gcp:transcoder:Job\n name: default\n properties:\n location: us-central1\n config:\n inputs:\n - key: input0\n uri: gs://${default.name}/${exampleMp4.name}\n elementaryStreams:\n - key: es_video\n videoStream:\n h264:\n profile: main\n heightPixels: 600\n widthPixels: 800\n bitrateBps: 1e+06\n frameRate: 60\n - key: es_audio\n audioStream:\n codec: aac\n channelCount: 2\n bitrateBps: 160000\n encryptions:\n - id: aes-128\n secretManagerKeySource:\n secretVersion: ${encryptionKeySecretVersion.name}\n drmSystems:\n clearkey: {}\n aes128: {}\n - id: cenc\n secretManagerKeySource:\n secretVersion: ${encryptionKeySecretVersion.name}\n drmSystems:\n widevine: {}\n mpegCenc:\n scheme: cenc\n - id: cbcs\n secretManagerKeySource:\n secretVersion: ${encryptionKeySecretVersion.name}\n drmSystems:\n widevine: {}\n mpegCenc:\n scheme: cbcs\n muxStreams:\n - key: ts_aes128\n container: ts\n elementaryStreams:\n - es_video\n - es_audio\n segmentSettings:\n segmentDuration: 6s\n encryptionId: aes-128\n - key: fmp4_cenc_video\n container: fmp4\n elementaryStreams:\n - es_video\n segmentSettings:\n segmentDuration: 6s\n encryptionId: cenc\n - key: fmp4_cenc_audio\n container: fmp4\n elementaryStreams:\n - es_audio\n segmentSettings:\n segmentDuration: 6s\n encryptionId: cenc\n - key: fmp4_cbcs_video\n container: fmp4\n elementaryStreams:\n - es_video\n segmentSettings:\n segmentDuration: 6s\n encryptionId: cbcs\n - key: fmp4_cbcs_audio\n container: fmp4\n elementaryStreams:\n - es_audio\n segmentSettings:\n segmentDuration: 6s\n encryptionId: cbcs\n manifests:\n - fileName: manifest_aes128.m3u8\n type: HLS\n muxStreams:\n - ts_aes128\n - fileName: manifest_cenc.mpd\n type: DASH\n muxStreams:\n - fmp4_cenc_video\n - fmp4_cenc_audio\n - fileName: manifest_cbcs.mpd\n type: DASH\n muxStreams:\n - fmp4_cbcs_video\n - fmp4_cbcs_audio\n output:\n uri: gs://${default.name}/outputs/\n labels:\n label: key\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Transcoder Job Overlays\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.storage.Bucket(\"default\", {\n name: \"transcoder-job\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n publicAccessPrevention: \"enforced\",\n});\nconst exampleMp4 = new gcp.storage.BucketObject(\"example_mp4\", {\n name: \"example.mp4\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket: _default.name,\n});\nconst overlayPng = new gcp.storage.BucketObject(\"overlay_png\", {\n name: \"overlay.png\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/overlay.png\"),\n bucket: _default.name,\n});\nconst defaultJob = new gcp.transcoder.Job(\"default\", {\n location: \"us-central1\",\n config: {\n inputs: [{\n key: \"input0\",\n uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,\n }],\n editLists: [{\n key: \"atom0\",\n inputs: [\"input0\"],\n startTimeOffset: \"0s\",\n }],\n adBreaks: [{\n startTimeOffset: \"3.500s\",\n }],\n overlays: [{\n animations: [{\n animationFade: {\n fadeType: \"FADE_IN\",\n startTimeOffset: \"1.500s\",\n endTimeOffset: \"3.500s\",\n xy: {\n x: 1,\n y: 0.5,\n },\n },\n }],\n image: {\n uri: pulumi.interpolate`gs://${_default.name}/${overlayPng.name}`,\n },\n }],\n elementaryStreams: [\n {\n key: \"video-stream0\",\n videoStream: {\n h264: {\n widthPixels: 640,\n heightPixels: 360,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 550000,\n vbvFullnessBits: 495000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"video-stream1\",\n videoStream: {\n h264: {\n widthPixels: 1280,\n heightPixels: 720,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 2500000,\n vbvFullnessBits: 2250000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"audio-stream0\",\n audioStream: {\n codec: \"aac\",\n bitrateBps: 64000,\n channelCount: 2,\n channelLayouts: [\n \"fl\",\n \"fr\",\n ],\n sampleRateHertz: 48000,\n },\n },\n ],\n muxStreams: [\n {\n key: \"sd\",\n fileName: \"sd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"hd\",\n fileName: \"hd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n ],\n output: {\n uri: pulumi.interpolate`gs://${_default.name}/outputs/`,\n },\n },\n labels: {\n label: \"key\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.Bucket(\"default\",\n name=\"transcoder-job\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True,\n public_access_prevention=\"enforced\")\nexample_mp4 = gcp.storage.BucketObject(\"example_mp4\",\n name=\"example.mp4\",\n source=pulumi.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket=default.name)\noverlay_png = gcp.storage.BucketObject(\"overlay_png\",\n name=\"overlay.png\",\n source=pulumi.FileAsset(\"./test-fixtures/overlay.png\"),\n bucket=default.name)\ndefault_job = gcp.transcoder.Job(\"default\",\n location=\"us-central1\",\n config={\n \"inputs\": [{\n \"key\": \"input0\",\n \"uri\": pulumi.Output.all(\n defaultName=default.name,\n exampleMp4Name=example_mp4.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}\")\n,\n }],\n \"edit_lists\": [{\n \"key\": \"atom0\",\n \"inputs\": [\"input0\"],\n \"start_time_offset\": \"0s\",\n }],\n \"ad_breaks\": [{\n \"start_time_offset\": \"3.500s\",\n }],\n \"overlays\": [{\n \"animations\": [{\n \"animation_fade\": {\n \"fade_type\": \"FADE_IN\",\n \"start_time_offset\": \"1.500s\",\n \"end_time_offset\": \"3.500s\",\n \"xy\": {\n \"x\": 1,\n \"y\": 0.5,\n },\n },\n }],\n \"image\": {\n \"uri\": pulumi.Output.all(\n defaultName=default.name,\n overlayPngName=overlay_png.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['defaultName']}/{resolved_outputs['overlayPngName']}\")\n,\n },\n }],\n \"elementary_streams\": [\n {\n \"key\": \"video-stream0\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 640,\n \"height_pixels\": 360,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 550000,\n \"vbv_fullness_bits\": 495000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"video-stream1\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 1280,\n \"height_pixels\": 720,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 2500000,\n \"vbv_fullness_bits\": 2250000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"audio-stream0\",\n \"audio_stream\": {\n \"codec\": \"aac\",\n \"bitrate_bps\": 64000,\n \"channel_count\": 2,\n \"channel_layouts\": [\n \"fl\",\n \"fr\",\n ],\n \"sample_rate_hertz\": 48000,\n },\n },\n ],\n \"mux_streams\": [\n {\n \"key\": \"sd\",\n \"file_name\": \"sd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"hd\",\n \"file_name\": \"hd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n ],\n \"output\": {\n \"uri\": default.name.apply(lambda name: f\"gs://{name}/outputs/\"),\n },\n },\n labels={\n \"label\": \"key\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"transcoder-job\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n PublicAccessPrevention = \"enforced\",\n });\n\n var exampleMp4 = new Gcp.Storage.BucketObject(\"example_mp4\", new()\n {\n Name = \"example.mp4\",\n Source = new FileAsset(\"./test-fixtures/example.mp4\"),\n Bucket = @default.Name,\n });\n\n var overlayPng = new Gcp.Storage.BucketObject(\"overlay_png\", new()\n {\n Name = \"overlay.png\",\n Source = new FileAsset(\"./test-fixtures/overlay.png\"),\n Bucket = @default.Name,\n });\n\n var defaultJob = new Gcp.Transcoder.Job(\"default\", new()\n {\n Location = \"us-central1\",\n Config = new Gcp.Transcoder.Inputs.JobConfigArgs\n {\n Inputs = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigInputArgs\n {\n Key = \"input0\",\n Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =\u003e\n {\n var defaultName = values.Item1;\n var exampleMp4Name = values.Item2;\n return $\"gs://{defaultName}/{exampleMp4Name}\";\n }),\n },\n },\n EditLists = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigEditListArgs\n {\n Key = \"atom0\",\n Inputs = new[]\n {\n \"input0\",\n },\n StartTimeOffset = \"0s\",\n },\n },\n AdBreaks = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigAdBreakArgs\n {\n StartTimeOffset = \"3.500s\",\n },\n },\n Overlays = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigOverlayArgs\n {\n Animations = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigOverlayAnimationArgs\n {\n AnimationFade = new Gcp.Transcoder.Inputs.JobConfigOverlayAnimationAnimationFadeArgs\n {\n FadeType = \"FADE_IN\",\n StartTimeOffset = \"1.500s\",\n EndTimeOffset = \"3.500s\",\n Xy = new Gcp.Transcoder.Inputs.JobConfigOverlayAnimationAnimationFadeXyArgs\n {\n X = 1,\n Y = 0.5,\n },\n },\n },\n },\n Image = new Gcp.Transcoder.Inputs.JobConfigOverlayImageArgs\n {\n Uri = Output.Tuple(@default.Name, overlayPng.Name).Apply(values =\u003e\n {\n var defaultName = values.Item1;\n var overlayPngName = values.Item2;\n return $\"gs://{defaultName}/{overlayPngName}\";\n }),\n },\n },\n },\n ElementaryStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"video-stream0\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 640,\n HeightPixels = 360,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 550000,\n VbvFullnessBits = 495000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"video-stream1\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 1280,\n HeightPixels = 720,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 2500000,\n VbvFullnessBits = 2250000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"audio-stream0\",\n AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs\n {\n Codec = \"aac\",\n BitrateBps = 64000,\n ChannelCount = 2,\n ChannelLayouts = new[]\n {\n \"fl\",\n \"fr\",\n },\n SampleRateHertz = 48000,\n },\n },\n },\n MuxStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"sd\",\n FileName = \"sd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream0\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"hd\",\n FileName = \"hd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream1\",\n \"audio-stream0\",\n },\n },\n },\n Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs\n {\n Uri = @default.Name.Apply(name =\u003e $\"gs://{name}/outputs/\"),\n },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n });\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/transcoder\"\n\t\"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, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"transcoder-job\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tPublicAccessPrevention: pulumi.String(\"enforced\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMp4, err := storage.NewBucketObject(ctx, \"example_mp4\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"example.mp4\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/example.mp4\"),\n\t\t\tBucket: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\toverlayPng, err := storage.NewBucketObject(ctx, \"overlay_png\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"overlay.png\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/overlay.png\"),\n\t\t\tBucket: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = transcoder.NewJob(ctx, \"default\", \u0026transcoder.JobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026transcoder.JobConfigArgs{\n\t\t\t\tInputs: transcoder.JobConfigInputTypeArray{\n\t\t\t\t\t\u0026transcoder.JobConfigInputTypeArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"input0\"),\n\t\t\t\t\t\tUri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\tdefaultName := _args[0].(string)\n\t\t\t\t\t\t\texampleMp4Name := _args[1].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", defaultName, exampleMp4Name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEditLists: transcoder.JobConfigEditListArray{\n\t\t\t\t\t\u0026transcoder.JobConfigEditListArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"atom0\"),\n\t\t\t\t\t\tInputs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"input0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"0s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdBreaks: transcoder.JobConfigAdBreakArray{\n\t\t\t\t\t\u0026transcoder.JobConfigAdBreakArgs{\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"3.500s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOverlays: transcoder.JobConfigOverlayArray{\n\t\t\t\t\t\u0026transcoder.JobConfigOverlayArgs{\n\t\t\t\t\t\tAnimations: transcoder.JobConfigOverlayAnimationArray{\n\t\t\t\t\t\t\t\u0026transcoder.JobConfigOverlayAnimationArgs{\n\t\t\t\t\t\t\t\tAnimationFade: \u0026transcoder.JobConfigOverlayAnimationAnimationFadeArgs{\n\t\t\t\t\t\t\t\t\tFadeType: pulumi.String(\"FADE_IN\"),\n\t\t\t\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"1.500s\"),\n\t\t\t\t\t\t\t\t\tEndTimeOffset: pulumi.String(\"3.500s\"),\n\t\t\t\t\t\t\t\t\tXy: \u0026transcoder.JobConfigOverlayAnimationAnimationFadeXyArgs{\n\t\t\t\t\t\t\t\t\t\tX: pulumi.Float64(1),\n\t\t\t\t\t\t\t\t\t\tY: pulumi.Float64(0.5),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tImage: \u0026transcoder.JobConfigOverlayImageArgs{\n\t\t\t\t\t\t\tUri: pulumi.All(_default.Name, overlayPng.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\t\tdefaultName := _args[0].(string)\n\t\t\t\t\t\t\t\toverlayPngName := _args[1].(string)\n\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", defaultName, overlayPngName), 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\tElementaryStreams: transcoder.JobConfigElementaryStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream0\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(640),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(360),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(495000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream1\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(1280),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(720),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(2500000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(2250000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\tAudioStream: \u0026transcoder.JobConfigElementaryStreamAudioStreamArgs{\n\t\t\t\t\t\t\tCodec: pulumi.String(\"aac\"),\n\t\t\t\t\t\t\tBitrateBps: pulumi.Int(64000),\n\t\t\t\t\t\t\tChannelCount: pulumi.Int(2),\n\t\t\t\t\t\t\tChannelLayouts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fl\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSampleRateHertz: pulumi.Int(48000),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMuxStreams: transcoder.JobConfigMuxStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"sd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream0\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"hd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"hd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream1\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOutput: \u0026transcoder.JobConfigOutputTypeArgs{\n\t\t\t\t\tUri: _default.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/outputs/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.transcoder.Job;\nimport com.pulumi.gcp.transcoder.JobArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigOutputArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Bucket(\"default\", BucketArgs.builder()\n .name(\"transcoder-job\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .publicAccessPrevention(\"enforced\")\n .build());\n\n var exampleMp4 = new BucketObject(\"exampleMp4\", BucketObjectArgs.builder()\n .name(\"example.mp4\")\n .source(new FileAsset(\"./test-fixtures/example.mp4\"))\n .bucket(default_.name())\n .build());\n\n var overlayPng = new BucketObject(\"overlayPng\", BucketObjectArgs.builder()\n .name(\"overlay.png\")\n .source(new FileAsset(\"./test-fixtures/overlay.png\"))\n .bucket(default_.name())\n .build());\n\n var defaultJob = new Job(\"defaultJob\", JobArgs.builder()\n .location(\"us-central1\")\n .config(JobConfigArgs.builder()\n .inputs(JobConfigInputArgs.builder()\n .key(\"input0\")\n .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -\u003e {\n var defaultName = values.t1;\n var exampleMp4Name = values.t2;\n return String.format(\"gs://%s/%s\", defaultName,exampleMp4Name);\n }))\n .build())\n .editLists(JobConfigEditListArgs.builder()\n .key(\"atom0\")\n .inputs(\"input0\")\n .startTimeOffset(\"0s\")\n .build())\n .adBreaks(JobConfigAdBreakArgs.builder()\n .startTimeOffset(\"3.500s\")\n .build())\n .overlays(JobConfigOverlayArgs.builder()\n .animations(JobConfigOverlayAnimationArgs.builder()\n .animationFade(JobConfigOverlayAnimationAnimationFadeArgs.builder()\n .fadeType(\"FADE_IN\")\n .startTimeOffset(\"1.500s\")\n .endTimeOffset(\"3.500s\")\n .xy(JobConfigOverlayAnimationAnimationFadeXyArgs.builder()\n .x(1)\n .y(0.5)\n .build())\n .build())\n .build())\n .image(JobConfigOverlayImageArgs.builder()\n .uri(Output.tuple(default_.name(), overlayPng.name()).applyValue(values -\u003e {\n var defaultName = values.t1;\n var overlayPngName = values.t2;\n return String.format(\"gs://%s/%s\", defaultName,overlayPngName);\n }))\n .build())\n .build())\n .elementaryStreams( \n JobConfigElementaryStreamArgs.builder()\n .key(\"video-stream0\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(640)\n .heightPixels(360)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(550000)\n .vbvFullnessBits(495000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"video-stream1\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(1280)\n .heightPixels(720)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(2500000)\n .vbvFullnessBits(2250000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"audio-stream0\")\n .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()\n .codec(\"aac\")\n .bitrateBps(64000)\n .channelCount(2)\n .channelLayouts( \n \"fl\",\n \"fr\")\n .sampleRateHertz(48000)\n .build())\n .build())\n .muxStreams( \n JobConfigMuxStreamArgs.builder()\n .key(\"sd\")\n .fileName(\"sd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream0\",\n \"audio-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"hd\")\n .fileName(\"hd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream1\",\n \"audio-stream0\")\n .build())\n .output(JobConfigOutputArgs.builder()\n .uri(default_.name().applyValue(name -\u003e String.format(\"gs://%s/outputs/\", name)))\n .build())\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:storage:Bucket\n properties:\n name: transcoder-job\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n publicAccessPrevention: enforced\n exampleMp4:\n type: gcp:storage:BucketObject\n name: example_mp4\n properties:\n name: example.mp4\n source:\n fn::FileAsset: ./test-fixtures/example.mp4\n bucket: ${default.name}\n overlayPng:\n type: gcp:storage:BucketObject\n name: overlay_png\n properties:\n name: overlay.png\n source:\n fn::FileAsset: ./test-fixtures/overlay.png\n bucket: ${default.name}\n defaultJob:\n type: gcp:transcoder:Job\n name: default\n properties:\n location: us-central1\n config:\n inputs:\n - key: input0\n uri: gs://${default.name}/${exampleMp4.name}\n editLists:\n - key: atom0\n inputs:\n - input0\n startTimeOffset: 0s\n adBreaks:\n - startTimeOffset: 3.500s\n overlays:\n - animations:\n - animationFade:\n fadeType: FADE_IN\n startTimeOffset: 1.500s\n endTimeOffset: 3.500s\n xy:\n x: 1\n y: 0.5\n image:\n uri: gs://${default.name}/${overlayPng.name}\n elementaryStreams:\n - key: video-stream0\n videoStream:\n h264:\n widthPixels: 640\n heightPixels: 360\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 550000\n vbvFullnessBits: 495000\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: video-stream1\n videoStream:\n h264:\n widthPixels: 1280\n heightPixels: 720\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 2.5e+06\n vbvFullnessBits: 2.25e+06\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: audio-stream0\n audioStream:\n codec: aac\n bitrateBps: 64000\n channelCount: 2\n channelLayouts:\n - fl\n - fr\n sampleRateHertz: 48000\n muxStreams:\n - key: sd\n fileName: sd.mp4\n container: mp4\n elementaryStreams:\n - video-stream0\n - audio-stream0\n - key: hd\n fileName: hd.mp4\n container: mp4\n elementaryStreams:\n - video-stream1\n - audio-stream0\n output:\n uri: gs://${default.name}/outputs/\n labels:\n label: key\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Transcoder Job Manifests\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.storage.Bucket(\"default\", {\n name: \"transcoder-job\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n publicAccessPrevention: \"enforced\",\n});\nconst exampleMp4 = new gcp.storage.BucketObject(\"example_mp4\", {\n name: \"example.mp4\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket: _default.name,\n});\nconst defaultJob = new gcp.transcoder.Job(\"default\", {\n location: \"us-central1\",\n config: {\n inputs: [{\n key: \"input0\",\n uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,\n }],\n editLists: [{\n key: \"atom0\",\n startTimeOffset: \"0s\",\n inputs: [\"input0\"],\n }],\n adBreaks: [{\n startTimeOffset: \"3.500s\",\n }],\n elementaryStreams: [\n {\n key: \"video-stream0\",\n videoStream: {\n h264: {\n widthPixels: 640,\n heightPixels: 360,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 550000,\n vbvFullnessBits: 495000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"video-stream1\",\n videoStream: {\n h264: {\n widthPixels: 1280,\n heightPixels: 720,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 2500000,\n vbvFullnessBits: 2250000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"audio-stream0\",\n audioStream: {\n codec: \"aac\",\n bitrateBps: 64000,\n channelCount: 2,\n channelLayouts: [\n \"fl\",\n \"fr\",\n ],\n sampleRateHertz: 48000,\n },\n },\n ],\n muxStreams: [\n {\n key: \"sd\",\n fileName: \"sd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"hd\",\n fileName: \"hd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"media-sd\",\n fileName: \"media-sd.ts\",\n container: \"ts\",\n elementaryStreams: [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"media-hd\",\n fileName: \"media-hd.ts\",\n container: \"ts\",\n elementaryStreams: [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"video-only-sd\",\n fileName: \"video-only-sd.m4s\",\n container: \"fmp4\",\n elementaryStreams: [\"video-stream0\"],\n },\n {\n key: \"video-only-hd\",\n fileName: \"video-only-hd.m4s\",\n container: \"fmp4\",\n elementaryStreams: [\"video-stream1\"],\n },\n {\n key: \"audio-only\",\n fileName: \"audio-only.m4s\",\n container: \"fmp4\",\n elementaryStreams: [\"audio-stream0\"],\n },\n ],\n manifests: [\n {\n fileName: \"manifest.m3u8\",\n type: \"HLS\",\n muxStreams: [\n \"media-sd\",\n \"media-hd\",\n ],\n },\n {\n fileName: \"manifest.mpd\",\n type: \"DASH\",\n muxStreams: [\n \"video-only-sd\",\n \"video-only-hd\",\n \"audio-only\",\n ],\n },\n ],\n output: {\n uri: pulumi.interpolate`gs://${_default.name}/outputs/`,\n },\n },\n labels: {\n label: \"key\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.Bucket(\"default\",\n name=\"transcoder-job\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True,\n public_access_prevention=\"enforced\")\nexample_mp4 = gcp.storage.BucketObject(\"example_mp4\",\n name=\"example.mp4\",\n source=pulumi.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket=default.name)\ndefault_job = gcp.transcoder.Job(\"default\",\n location=\"us-central1\",\n config={\n \"inputs\": [{\n \"key\": \"input0\",\n \"uri\": pulumi.Output.all(\n defaultName=default.name,\n exampleMp4Name=example_mp4.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}\")\n,\n }],\n \"edit_lists\": [{\n \"key\": \"atom0\",\n \"start_time_offset\": \"0s\",\n \"inputs\": [\"input0\"],\n }],\n \"ad_breaks\": [{\n \"start_time_offset\": \"3.500s\",\n }],\n \"elementary_streams\": [\n {\n \"key\": \"video-stream0\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 640,\n \"height_pixels\": 360,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 550000,\n \"vbv_fullness_bits\": 495000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"video-stream1\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 1280,\n \"height_pixels\": 720,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 2500000,\n \"vbv_fullness_bits\": 2250000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"audio-stream0\",\n \"audio_stream\": {\n \"codec\": \"aac\",\n \"bitrate_bps\": 64000,\n \"channel_count\": 2,\n \"channel_layouts\": [\n \"fl\",\n \"fr\",\n ],\n \"sample_rate_hertz\": 48000,\n },\n },\n ],\n \"mux_streams\": [\n {\n \"key\": \"sd\",\n \"file_name\": \"sd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"hd\",\n \"file_name\": \"hd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"media-sd\",\n \"file_name\": \"media-sd.ts\",\n \"container\": \"ts\",\n \"elementary_streams\": [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"media-hd\",\n \"file_name\": \"media-hd.ts\",\n \"container\": \"ts\",\n \"elementary_streams\": [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"video-only-sd\",\n \"file_name\": \"video-only-sd.m4s\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"video-stream0\"],\n },\n {\n \"key\": \"video-only-hd\",\n \"file_name\": \"video-only-hd.m4s\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"video-stream1\"],\n },\n {\n \"key\": \"audio-only\",\n \"file_name\": \"audio-only.m4s\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"audio-stream0\"],\n },\n ],\n \"manifests\": [\n {\n \"file_name\": \"manifest.m3u8\",\n \"type\": \"HLS\",\n \"mux_streams\": [\n \"media-sd\",\n \"media-hd\",\n ],\n },\n {\n \"file_name\": \"manifest.mpd\",\n \"type\": \"DASH\",\n \"mux_streams\": [\n \"video-only-sd\",\n \"video-only-hd\",\n \"audio-only\",\n ],\n },\n ],\n \"output\": {\n \"uri\": default.name.apply(lambda name: f\"gs://{name}/outputs/\"),\n },\n },\n labels={\n \"label\": \"key\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"transcoder-job\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n PublicAccessPrevention = \"enforced\",\n });\n\n var exampleMp4 = new Gcp.Storage.BucketObject(\"example_mp4\", new()\n {\n Name = \"example.mp4\",\n Source = new FileAsset(\"./test-fixtures/example.mp4\"),\n Bucket = @default.Name,\n });\n\n var defaultJob = new Gcp.Transcoder.Job(\"default\", new()\n {\n Location = \"us-central1\",\n Config = new Gcp.Transcoder.Inputs.JobConfigArgs\n {\n Inputs = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigInputArgs\n {\n Key = \"input0\",\n Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =\u003e\n {\n var defaultName = values.Item1;\n var exampleMp4Name = values.Item2;\n return $\"gs://{defaultName}/{exampleMp4Name}\";\n }),\n },\n },\n EditLists = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigEditListArgs\n {\n Key = \"atom0\",\n StartTimeOffset = \"0s\",\n Inputs = new[]\n {\n \"input0\",\n },\n },\n },\n AdBreaks = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigAdBreakArgs\n {\n StartTimeOffset = \"3.500s\",\n },\n },\n ElementaryStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"video-stream0\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 640,\n HeightPixels = 360,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 550000,\n VbvFullnessBits = 495000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"video-stream1\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 1280,\n HeightPixels = 720,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 2500000,\n VbvFullnessBits = 2250000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"audio-stream0\",\n AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs\n {\n Codec = \"aac\",\n BitrateBps = 64000,\n ChannelCount = 2,\n ChannelLayouts = new[]\n {\n \"fl\",\n \"fr\",\n },\n SampleRateHertz = 48000,\n },\n },\n },\n MuxStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"sd\",\n FileName = \"sd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream0\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"hd\",\n FileName = \"hd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream1\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"media-sd\",\n FileName = \"media-sd.ts\",\n Container = \"ts\",\n ElementaryStreams = new[]\n {\n \"video-stream0\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"media-hd\",\n FileName = \"media-hd.ts\",\n Container = \"ts\",\n ElementaryStreams = new[]\n {\n \"video-stream1\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"video-only-sd\",\n FileName = \"video-only-sd.m4s\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"video-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"video-only-hd\",\n FileName = \"video-only-hd.m4s\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"video-stream1\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"audio-only\",\n FileName = \"audio-only.m4s\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"audio-stream0\",\n },\n },\n },\n Manifests = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigManifestArgs\n {\n FileName = \"manifest.m3u8\",\n Type = \"HLS\",\n MuxStreams = new[]\n {\n \"media-sd\",\n \"media-hd\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigManifestArgs\n {\n FileName = \"manifest.mpd\",\n Type = \"DASH\",\n MuxStreams = new[]\n {\n \"video-only-sd\",\n \"video-only-hd\",\n \"audio-only\",\n },\n },\n },\n Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs\n {\n Uri = @default.Name.Apply(name =\u003e $\"gs://{name}/outputs/\"),\n },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n });\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/transcoder\"\n\t\"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, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"transcoder-job\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tPublicAccessPrevention: pulumi.String(\"enforced\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMp4, err := storage.NewBucketObject(ctx, \"example_mp4\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"example.mp4\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/example.mp4\"),\n\t\t\tBucket: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = transcoder.NewJob(ctx, \"default\", \u0026transcoder.JobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026transcoder.JobConfigArgs{\n\t\t\t\tInputs: transcoder.JobConfigInputTypeArray{\n\t\t\t\t\t\u0026transcoder.JobConfigInputTypeArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"input0\"),\n\t\t\t\t\t\tUri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\tdefaultName := _args[0].(string)\n\t\t\t\t\t\t\texampleMp4Name := _args[1].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", defaultName, exampleMp4Name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEditLists: transcoder.JobConfigEditListArray{\n\t\t\t\t\t\u0026transcoder.JobConfigEditListArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"atom0\"),\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"0s\"),\n\t\t\t\t\t\tInputs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"input0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdBreaks: transcoder.JobConfigAdBreakArray{\n\t\t\t\t\t\u0026transcoder.JobConfigAdBreakArgs{\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"3.500s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tElementaryStreams: transcoder.JobConfigElementaryStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream0\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(640),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(360),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(495000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream1\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(1280),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(720),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(2500000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(2250000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\tAudioStream: \u0026transcoder.JobConfigElementaryStreamAudioStreamArgs{\n\t\t\t\t\t\t\tCodec: pulumi.String(\"aac\"),\n\t\t\t\t\t\t\tBitrateBps: pulumi.Int(64000),\n\t\t\t\t\t\t\tChannelCount: pulumi.Int(2),\n\t\t\t\t\t\t\tChannelLayouts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fl\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSampleRateHertz: pulumi.Int(48000),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMuxStreams: transcoder.JobConfigMuxStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"sd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream0\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"hd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"hd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream1\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"media-sd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"media-sd.ts\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"ts\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream0\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"media-hd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"media-hd.ts\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"ts\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream1\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-only-sd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"video-only-sd.m4s\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-only-hd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"video-only-hd.m4s\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"audio-only\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"audio-only.m4s\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tManifests: transcoder.JobConfigManifestArray{\n\t\t\t\t\t\u0026transcoder.JobConfigManifestArgs{\n\t\t\t\t\t\tFileName: pulumi.String(\"manifest.m3u8\"),\n\t\t\t\t\t\tType: pulumi.String(\"HLS\"),\n\t\t\t\t\t\tMuxStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"media-sd\"),\n\t\t\t\t\t\t\tpulumi.String(\"media-hd\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigManifestArgs{\n\t\t\t\t\t\tFileName: pulumi.String(\"manifest.mpd\"),\n\t\t\t\t\t\tType: pulumi.String(\"DASH\"),\n\t\t\t\t\t\tMuxStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-only-sd\"),\n\t\t\t\t\t\t\tpulumi.String(\"video-only-hd\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-only\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOutput: \u0026transcoder.JobConfigOutputTypeArgs{\n\t\t\t\t\tUri: _default.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/outputs/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.transcoder.Job;\nimport com.pulumi.gcp.transcoder.JobArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigOutputArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Bucket(\"default\", BucketArgs.builder()\n .name(\"transcoder-job\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .publicAccessPrevention(\"enforced\")\n .build());\n\n var exampleMp4 = new BucketObject(\"exampleMp4\", BucketObjectArgs.builder()\n .name(\"example.mp4\")\n .source(new FileAsset(\"./test-fixtures/example.mp4\"))\n .bucket(default_.name())\n .build());\n\n var defaultJob = new Job(\"defaultJob\", JobArgs.builder()\n .location(\"us-central1\")\n .config(JobConfigArgs.builder()\n .inputs(JobConfigInputArgs.builder()\n .key(\"input0\")\n .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -\u003e {\n var defaultName = values.t1;\n var exampleMp4Name = values.t2;\n return String.format(\"gs://%s/%s\", defaultName,exampleMp4Name);\n }))\n .build())\n .editLists(JobConfigEditListArgs.builder()\n .key(\"atom0\")\n .startTimeOffset(\"0s\")\n .inputs(\"input0\")\n .build())\n .adBreaks(JobConfigAdBreakArgs.builder()\n .startTimeOffset(\"3.500s\")\n .build())\n .elementaryStreams( \n JobConfigElementaryStreamArgs.builder()\n .key(\"video-stream0\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(640)\n .heightPixels(360)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(550000)\n .vbvFullnessBits(495000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"video-stream1\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(1280)\n .heightPixels(720)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(2500000)\n .vbvFullnessBits(2250000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"audio-stream0\")\n .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()\n .codec(\"aac\")\n .bitrateBps(64000)\n .channelCount(2)\n .channelLayouts( \n \"fl\",\n \"fr\")\n .sampleRateHertz(48000)\n .build())\n .build())\n .muxStreams( \n JobConfigMuxStreamArgs.builder()\n .key(\"sd\")\n .fileName(\"sd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream0\",\n \"audio-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"hd\")\n .fileName(\"hd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream1\",\n \"audio-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"media-sd\")\n .fileName(\"media-sd.ts\")\n .container(\"ts\")\n .elementaryStreams( \n \"video-stream0\",\n \"audio-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"media-hd\")\n .fileName(\"media-hd.ts\")\n .container(\"ts\")\n .elementaryStreams( \n \"video-stream1\",\n \"audio-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"video-only-sd\")\n .fileName(\"video-only-sd.m4s\")\n .container(\"fmp4\")\n .elementaryStreams(\"video-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"video-only-hd\")\n .fileName(\"video-only-hd.m4s\")\n .container(\"fmp4\")\n .elementaryStreams(\"video-stream1\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"audio-only\")\n .fileName(\"audio-only.m4s\")\n .container(\"fmp4\")\n .elementaryStreams(\"audio-stream0\")\n .build())\n .manifests( \n JobConfigManifestArgs.builder()\n .fileName(\"manifest.m3u8\")\n .type(\"HLS\")\n .muxStreams( \n \"media-sd\",\n \"media-hd\")\n .build(),\n JobConfigManifestArgs.builder()\n .fileName(\"manifest.mpd\")\n .type(\"DASH\")\n .muxStreams( \n \"video-only-sd\",\n \"video-only-hd\",\n \"audio-only\")\n .build())\n .output(JobConfigOutputArgs.builder()\n .uri(default_.name().applyValue(name -\u003e String.format(\"gs://%s/outputs/\", name)))\n .build())\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:storage:Bucket\n properties:\n name: transcoder-job\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n publicAccessPrevention: enforced\n exampleMp4:\n type: gcp:storage:BucketObject\n name: example_mp4\n properties:\n name: example.mp4\n source:\n fn::FileAsset: ./test-fixtures/example.mp4\n bucket: ${default.name}\n defaultJob:\n type: gcp:transcoder:Job\n name: default\n properties:\n location: us-central1\n config:\n inputs:\n - key: input0\n uri: gs://${default.name}/${exampleMp4.name}\n editLists:\n - key: atom0\n startTimeOffset: 0s\n inputs:\n - input0\n adBreaks:\n - startTimeOffset: 3.500s\n elementaryStreams:\n - key: video-stream0\n videoStream:\n h264:\n widthPixels: 640\n heightPixels: 360\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 550000\n vbvFullnessBits: 495000\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: video-stream1\n videoStream:\n h264:\n widthPixels: 1280\n heightPixels: 720\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 2.5e+06\n vbvFullnessBits: 2.25e+06\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: audio-stream0\n audioStream:\n codec: aac\n bitrateBps: 64000\n channelCount: 2\n channelLayouts:\n - fl\n - fr\n sampleRateHertz: 48000\n muxStreams:\n - key: sd\n fileName: sd.mp4\n container: mp4\n elementaryStreams:\n - video-stream0\n - audio-stream0\n - key: hd\n fileName: hd.mp4\n container: mp4\n elementaryStreams:\n - video-stream1\n - audio-stream0\n - key: media-sd\n fileName: media-sd.ts\n container: ts\n elementaryStreams:\n - video-stream0\n - audio-stream0\n - key: media-hd\n fileName: media-hd.ts\n container: ts\n elementaryStreams:\n - video-stream1\n - audio-stream0\n - key: video-only-sd\n fileName: video-only-sd.m4s\n container: fmp4\n elementaryStreams:\n - video-stream0\n - key: video-only-hd\n fileName: video-only-hd.m4s\n container: fmp4\n elementaryStreams:\n - video-stream1\n - key: audio-only\n fileName: audio-only.m4s\n container: fmp4\n elementaryStreams:\n - audio-stream0\n manifests:\n - fileName: manifest.m3u8\n type: HLS\n muxStreams:\n - media-sd\n - media-hd\n - fileName: manifest.mpd\n type: DASH\n muxStreams:\n - video-only-sd\n - video-only-hd\n - audio-only\n output:\n uri: gs://${default.name}/outputs/\n labels:\n label: key\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `{{project}}/{{name}}`\n\n* `{{project}} {{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:transcoder/job:Job default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:transcoder/job:Job default \"{{project}} {{name}}\"\n```\n\n```sh\n$ pulumi import gcp:transcoder/job:Job default {{name}}\n```\n\n", + "description": "Transcoding Job Resource\n\n\nTo get more information about Job, see:\n\n* [API documentation](https://cloud.google.com/transcoder/docs/reference/rest/v1/projects.locations.jobs)\n* How-to Guides\n * [Transcoder](https://cloud.google.com/transcoder/docs/)\n\n## Example Usage\n\n### Transcoder 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.storage.Bucket(\"default\", {\n name: \"transcoder-job\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n publicAccessPrevention: \"enforced\",\n});\nconst exampleMp4 = new gcp.storage.BucketObject(\"example_mp4\", {\n name: \"example.mp4\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket: _default.name,\n});\nconst defaultJobTemplate = new gcp.transcoder.JobTemplate(\"default\", {\n jobTemplateId: \"example-job-template\",\n location: \"us-central1\",\n config: {\n inputs: [{\n key: \"input0\",\n uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,\n }],\n output: {\n uri: pulumi.interpolate`gs://${_default.name}/outputs/`,\n },\n editLists: [{\n key: \"atom0\",\n inputs: [\"input0\"],\n startTimeOffset: \"0s\",\n }],\n elementaryStreams: [\n {\n key: \"video-stream0\",\n videoStream: {\n h264: {\n widthPixels: 640,\n heightPixels: 360,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 550000,\n vbvFullnessBits: 495000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"video-stream1\",\n videoStream: {\n h264: {\n widthPixels: 1280,\n heightPixels: 720,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 2500000,\n vbvFullnessBits: 2250000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"audio-stream0\",\n audioStream: {\n codec: \"aac\",\n bitrateBps: 64000,\n channelCount: 2,\n channelLayouts: [\n \"fl\",\n \"fr\",\n ],\n sampleRateHertz: 48000,\n },\n },\n ],\n muxStreams: [\n {\n key: \"sd\",\n fileName: \"sd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"hd\",\n fileName: \"hd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n ],\n },\n labels: {\n label: \"key\",\n },\n});\nconst defaultJob = new gcp.transcoder.Job(\"default\", {\n templateId: defaultJobTemplate.name,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.Bucket(\"default\",\n name=\"transcoder-job\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True,\n public_access_prevention=\"enforced\")\nexample_mp4 = gcp.storage.BucketObject(\"example_mp4\",\n name=\"example.mp4\",\n source=pulumi.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket=default.name)\ndefault_job_template = gcp.transcoder.JobTemplate(\"default\",\n job_template_id=\"example-job-template\",\n location=\"us-central1\",\n config={\n \"inputs\": [{\n \"key\": \"input0\",\n \"uri\": pulumi.Output.all(\n defaultName=default.name,\n exampleMp4Name=example_mp4.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}\")\n,\n }],\n \"output\": {\n \"uri\": default.name.apply(lambda name: f\"gs://{name}/outputs/\"),\n },\n \"edit_lists\": [{\n \"key\": \"atom0\",\n \"inputs\": [\"input0\"],\n \"start_time_offset\": \"0s\",\n }],\n \"elementary_streams\": [\n {\n \"key\": \"video-stream0\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 640,\n \"height_pixels\": 360,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 550000,\n \"vbv_fullness_bits\": 495000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"video-stream1\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 1280,\n \"height_pixels\": 720,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 2500000,\n \"vbv_fullness_bits\": 2250000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"audio-stream0\",\n \"audio_stream\": {\n \"codec\": \"aac\",\n \"bitrate_bps\": 64000,\n \"channel_count\": 2,\n \"channel_layouts\": [\n \"fl\",\n \"fr\",\n ],\n \"sample_rate_hertz\": 48000,\n },\n },\n ],\n \"mux_streams\": [\n {\n \"key\": \"sd\",\n \"file_name\": \"sd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"hd\",\n \"file_name\": \"hd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n ],\n },\n labels={\n \"label\": \"key\",\n })\ndefault_job = gcp.transcoder.Job(\"default\",\n template_id=default_job_template.name,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"transcoder-job\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n PublicAccessPrevention = \"enforced\",\n });\n\n var exampleMp4 = new Gcp.Storage.BucketObject(\"example_mp4\", new()\n {\n Name = \"example.mp4\",\n Source = new FileAsset(\"./test-fixtures/example.mp4\"),\n Bucket = @default.Name,\n });\n\n var defaultJobTemplate = new Gcp.Transcoder.JobTemplate(\"default\", new()\n {\n JobTemplateId = \"example-job-template\",\n Location = \"us-central1\",\n Config = new Gcp.Transcoder.Inputs.JobTemplateConfigArgs\n {\n Inputs = new[]\n {\n new Gcp.Transcoder.Inputs.JobTemplateConfigInputArgs\n {\n Key = \"input0\",\n Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =\u003e\n {\n var defaultName = values.Item1;\n var exampleMp4Name = values.Item2;\n return $\"gs://{defaultName}/{exampleMp4Name}\";\n }),\n },\n },\n Output = new Gcp.Transcoder.Inputs.JobTemplateConfigOutputArgs\n {\n Uri = @default.Name.Apply(name =\u003e $\"gs://{name}/outputs/\"),\n },\n EditLists = new[]\n {\n new Gcp.Transcoder.Inputs.JobTemplateConfigEditListArgs\n {\n Key = \"atom0\",\n Inputs = new[]\n {\n \"input0\",\n },\n StartTimeOffset = \"0s\",\n },\n },\n ElementaryStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs\n {\n Key = \"video-stream0\",\n VideoStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 640,\n HeightPixels = 360,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 550000,\n VbvFullnessBits = 495000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs\n {\n Key = \"video-stream1\",\n VideoStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 1280,\n HeightPixels = 720,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 2500000,\n VbvFullnessBits = 2250000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamArgs\n {\n Key = \"audio-stream0\",\n AudioStream = new Gcp.Transcoder.Inputs.JobTemplateConfigElementaryStreamAudioStreamArgs\n {\n Codec = \"aac\",\n BitrateBps = 64000,\n ChannelCount = 2,\n ChannelLayouts = new[]\n {\n \"fl\",\n \"fr\",\n },\n SampleRateHertz = 48000,\n },\n },\n },\n MuxStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs\n {\n Key = \"sd\",\n FileName = \"sd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream0\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobTemplateConfigMuxStreamArgs\n {\n Key = \"hd\",\n FileName = \"hd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream1\",\n \"audio-stream0\",\n },\n },\n },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n });\n\n var defaultJob = new Gcp.Transcoder.Job(\"default\", new()\n {\n TemplateId = defaultJobTemplate.Name,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n });\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/transcoder\"\n\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.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"transcoder-job\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tPublicAccessPrevention: pulumi.String(\"enforced\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMp4, err := storage.NewBucketObject(ctx, \"example_mp4\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"example.mp4\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/example.mp4\"),\n\t\t\tBucket: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultJobTemplate, err := transcoder.NewJobTemplate(ctx, \"default\", \u0026transcoder.JobTemplateArgs{\n\t\t\tJobTemplateId: pulumi.String(\"example-job-template\"),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026transcoder.JobTemplateConfigArgs{\n\t\t\t\tInputs: transcoder.JobTemplateConfigInputTypeArray{\n\t\t\t\t\t\u0026transcoder.JobTemplateConfigInputTypeArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"input0\"),\n\t\t\t\t\t\tUri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\tdefaultName := _args[0].(string)\n\t\t\t\t\t\t\texampleMp4Name := _args[1].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", defaultName, exampleMp4Name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOutput: \u0026transcoder.JobTemplateConfigOutputTypeArgs{\n\t\t\t\t\tUri: _default.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/outputs/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEditLists: transcoder.JobTemplateConfigEditListArray{\n\t\t\t\t\t\u0026transcoder.JobTemplateConfigEditListArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"atom0\"),\n\t\t\t\t\t\tInputs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"input0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"0s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tElementaryStreams: transcoder.JobTemplateConfigElementaryStreamArray{\n\t\t\t\t\t\u0026transcoder.JobTemplateConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream0\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobTemplateConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobTemplateConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(640),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(360),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(495000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobTemplateConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream1\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobTemplateConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobTemplateConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(1280),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(720),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(2500000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(2250000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobTemplateConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\tAudioStream: \u0026transcoder.JobTemplateConfigElementaryStreamAudioStreamArgs{\n\t\t\t\t\t\t\tCodec: pulumi.String(\"aac\"),\n\t\t\t\t\t\t\tBitrateBps: pulumi.Int(64000),\n\t\t\t\t\t\t\tChannelCount: pulumi.Int(2),\n\t\t\t\t\t\t\tChannelLayouts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fl\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSampleRateHertz: pulumi.Int(48000),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMuxStreams: transcoder.JobTemplateConfigMuxStreamArray{\n\t\t\t\t\t\u0026transcoder.JobTemplateConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"sd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream0\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobTemplateConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"hd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"hd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream1\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = transcoder.NewJob(ctx, \"default\", \u0026transcoder.JobArgs{\n\t\t\tTemplateId: defaultJobTemplate.Name,\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})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.transcoder.JobTemplate;\nimport com.pulumi.gcp.transcoder.JobTemplateArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobTemplateConfigArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobTemplateConfigOutputArgs;\nimport com.pulumi.gcp.transcoder.Job;\nimport com.pulumi.gcp.transcoder.JobArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Bucket(\"default\", BucketArgs.builder()\n .name(\"transcoder-job\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .publicAccessPrevention(\"enforced\")\n .build());\n\n var exampleMp4 = new BucketObject(\"exampleMp4\", BucketObjectArgs.builder()\n .name(\"example.mp4\")\n .source(new FileAsset(\"./test-fixtures/example.mp4\"))\n .bucket(default_.name())\n .build());\n\n var defaultJobTemplate = new JobTemplate(\"defaultJobTemplate\", JobTemplateArgs.builder()\n .jobTemplateId(\"example-job-template\")\n .location(\"us-central1\")\n .config(JobTemplateConfigArgs.builder()\n .inputs(JobTemplateConfigInputArgs.builder()\n .key(\"input0\")\n .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -\u003e {\n var defaultName = values.t1;\n var exampleMp4Name = values.t2;\n return String.format(\"gs://%s/%s\", defaultName,exampleMp4Name);\n }))\n .build())\n .output(JobTemplateConfigOutputArgs.builder()\n .uri(default_.name().applyValue(name -\u003e String.format(\"gs://%s/outputs/\", name)))\n .build())\n .editLists(JobTemplateConfigEditListArgs.builder()\n .key(\"atom0\")\n .inputs(\"input0\")\n .startTimeOffset(\"0s\")\n .build())\n .elementaryStreams( \n JobTemplateConfigElementaryStreamArgs.builder()\n .key(\"video-stream0\")\n .videoStream(JobTemplateConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobTemplateConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(640)\n .heightPixels(360)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(550000)\n .vbvFullnessBits(495000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobTemplateConfigElementaryStreamArgs.builder()\n .key(\"video-stream1\")\n .videoStream(JobTemplateConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobTemplateConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(1280)\n .heightPixels(720)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(2500000)\n .vbvFullnessBits(2250000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobTemplateConfigElementaryStreamArgs.builder()\n .key(\"audio-stream0\")\n .audioStream(JobTemplateConfigElementaryStreamAudioStreamArgs.builder()\n .codec(\"aac\")\n .bitrateBps(64000)\n .channelCount(2)\n .channelLayouts( \n \"fl\",\n \"fr\")\n .sampleRateHertz(48000)\n .build())\n .build())\n .muxStreams( \n JobTemplateConfigMuxStreamArgs.builder()\n .key(\"sd\")\n .fileName(\"sd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream0\",\n \"audio-stream0\")\n .build(),\n JobTemplateConfigMuxStreamArgs.builder()\n .key(\"hd\")\n .fileName(\"hd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream1\",\n \"audio-stream0\")\n .build())\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .build());\n\n var defaultJob = new Job(\"defaultJob\", JobArgs.builder()\n .templateId(defaultJobTemplate.name())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:storage:Bucket\n properties:\n name: transcoder-job\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n publicAccessPrevention: enforced\n exampleMp4:\n type: gcp:storage:BucketObject\n name: example_mp4\n properties:\n name: example.mp4\n source:\n fn::FileAsset: ./test-fixtures/example.mp4\n bucket: ${default.name}\n defaultJob:\n type: gcp:transcoder:Job\n name: default\n properties:\n templateId: ${defaultJobTemplate.name}\n location: us-central1\n labels:\n label: key\n defaultJobTemplate:\n type: gcp:transcoder:JobTemplate\n name: default\n properties:\n jobTemplateId: example-job-template\n location: us-central1\n config:\n inputs:\n - key: input0\n uri: gs://${default.name}/${exampleMp4.name}\n output:\n uri: gs://${default.name}/outputs/\n editLists:\n - key: atom0\n inputs:\n - input0\n startTimeOffset: 0s\n elementaryStreams:\n - key: video-stream0\n videoStream:\n h264:\n widthPixels: 640\n heightPixels: 360\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 550000\n vbvFullnessBits: 495000\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: video-stream1\n videoStream:\n h264:\n widthPixels: 1280\n heightPixels: 720\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 2.5e+06\n vbvFullnessBits: 2.25e+06\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: audio-stream0\n audioStream:\n codec: aac\n bitrateBps: 64000\n channelCount: 2\n channelLayouts:\n - fl\n - fr\n sampleRateHertz: 48000\n muxStreams:\n - key: sd\n fileName: sd.mp4\n container: mp4\n elementaryStreams:\n - video-stream0\n - audio-stream0\n - key: hd\n fileName: hd.mp4\n container: mp4\n elementaryStreams:\n - video-stream1\n - audio-stream0\n labels:\n label: key\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Transcoder Job 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.storage.Bucket(\"default\", {\n name: \"transcoder-job\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n publicAccessPrevention: \"enforced\",\n});\nconst exampleMp4 = new gcp.storage.BucketObject(\"example_mp4\", {\n name: \"example.mp4\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket: _default.name,\n});\nconst transcoderNotifications = new gcp.pubsub.Topic(\"transcoder_notifications\", {name: \"transcoder-notifications\"});\nconst defaultJob = new gcp.transcoder.Job(\"default\", {\n location: \"us-central1\",\n config: {\n inputs: [{\n key: \"input0\",\n uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,\n }],\n editLists: [{\n key: \"atom0\",\n inputs: [\"input0\"],\n startTimeOffset: \"0s\",\n }],\n adBreaks: [{\n startTimeOffset: \"3.500s\",\n }],\n elementaryStreams: [\n {\n key: \"video-stream0\",\n videoStream: {\n h264: {\n widthPixels: 640,\n heightPixels: 360,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 550000,\n vbvFullnessBits: 495000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"video-stream1\",\n videoStream: {\n h264: {\n widthPixels: 1280,\n heightPixels: 720,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 2500000,\n vbvFullnessBits: 2250000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"audio-stream0\",\n audioStream: {\n codec: \"aac\",\n bitrateBps: 64000,\n channelCount: 2,\n channelLayouts: [\n \"fl\",\n \"fr\",\n ],\n sampleRateHertz: 48000,\n },\n },\n ],\n muxStreams: [\n {\n key: \"sd\",\n fileName: \"sd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"hd\",\n fileName: \"hd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n ],\n pubsubDestination: {\n topic: transcoderNotifications.id,\n },\n output: {\n uri: pulumi.interpolate`gs://${_default.name}/outputs/`,\n },\n },\n labels: {\n label: \"key\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.Bucket(\"default\",\n name=\"transcoder-job\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True,\n public_access_prevention=\"enforced\")\nexample_mp4 = gcp.storage.BucketObject(\"example_mp4\",\n name=\"example.mp4\",\n source=pulumi.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket=default.name)\ntranscoder_notifications = gcp.pubsub.Topic(\"transcoder_notifications\", name=\"transcoder-notifications\")\ndefault_job = gcp.transcoder.Job(\"default\",\n location=\"us-central1\",\n config={\n \"inputs\": [{\n \"key\": \"input0\",\n \"uri\": pulumi.Output.all(\n defaultName=default.name,\n exampleMp4Name=example_mp4.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}\")\n,\n }],\n \"edit_lists\": [{\n \"key\": \"atom0\",\n \"inputs\": [\"input0\"],\n \"start_time_offset\": \"0s\",\n }],\n \"ad_breaks\": [{\n \"start_time_offset\": \"3.500s\",\n }],\n \"elementary_streams\": [\n {\n \"key\": \"video-stream0\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 640,\n \"height_pixels\": 360,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 550000,\n \"vbv_fullness_bits\": 495000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"video-stream1\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 1280,\n \"height_pixels\": 720,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 2500000,\n \"vbv_fullness_bits\": 2250000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"audio-stream0\",\n \"audio_stream\": {\n \"codec\": \"aac\",\n \"bitrate_bps\": 64000,\n \"channel_count\": 2,\n \"channel_layouts\": [\n \"fl\",\n \"fr\",\n ],\n \"sample_rate_hertz\": 48000,\n },\n },\n ],\n \"mux_streams\": [\n {\n \"key\": \"sd\",\n \"file_name\": \"sd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"hd\",\n \"file_name\": \"hd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n ],\n \"pubsub_destination\": {\n \"topic\": transcoder_notifications.id,\n },\n \"output\": {\n \"uri\": default.name.apply(lambda name: f\"gs://{name}/outputs/\"),\n },\n },\n labels={\n \"label\": \"key\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"transcoder-job\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n PublicAccessPrevention = \"enforced\",\n });\n\n var exampleMp4 = new Gcp.Storage.BucketObject(\"example_mp4\", new()\n {\n Name = \"example.mp4\",\n Source = new FileAsset(\"./test-fixtures/example.mp4\"),\n Bucket = @default.Name,\n });\n\n var transcoderNotifications = new Gcp.PubSub.Topic(\"transcoder_notifications\", new()\n {\n Name = \"transcoder-notifications\",\n });\n\n var defaultJob = new Gcp.Transcoder.Job(\"default\", new()\n {\n Location = \"us-central1\",\n Config = new Gcp.Transcoder.Inputs.JobConfigArgs\n {\n Inputs = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigInputArgs\n {\n Key = \"input0\",\n Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =\u003e\n {\n var defaultName = values.Item1;\n var exampleMp4Name = values.Item2;\n return $\"gs://{defaultName}/{exampleMp4Name}\";\n }),\n },\n },\n EditLists = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigEditListArgs\n {\n Key = \"atom0\",\n Inputs = new[]\n {\n \"input0\",\n },\n StartTimeOffset = \"0s\",\n },\n },\n AdBreaks = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigAdBreakArgs\n {\n StartTimeOffset = \"3.500s\",\n },\n },\n ElementaryStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"video-stream0\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 640,\n HeightPixels = 360,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 550000,\n VbvFullnessBits = 495000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"video-stream1\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 1280,\n HeightPixels = 720,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 2500000,\n VbvFullnessBits = 2250000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"audio-stream0\",\n AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs\n {\n Codec = \"aac\",\n BitrateBps = 64000,\n ChannelCount = 2,\n ChannelLayouts = new[]\n {\n \"fl\",\n \"fr\",\n },\n SampleRateHertz = 48000,\n },\n },\n },\n MuxStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"sd\",\n FileName = \"sd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream0\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"hd\",\n FileName = \"hd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream1\",\n \"audio-stream0\",\n },\n },\n },\n PubsubDestination = new Gcp.Transcoder.Inputs.JobConfigPubsubDestinationArgs\n {\n Topic = transcoderNotifications.Id,\n },\n Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs\n {\n Uri = @default.Name.Apply(name =\u003e $\"gs://{name}/outputs/\"),\n },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n });\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-gcp/sdk/v8/go/gcp/transcoder\"\n\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.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"transcoder-job\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tPublicAccessPrevention: pulumi.String(\"enforced\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMp4, err := storage.NewBucketObject(ctx, \"example_mp4\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"example.mp4\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/example.mp4\"),\n\t\t\tBucket: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttranscoderNotifications, err := pubsub.NewTopic(ctx, \"transcoder_notifications\", \u0026pubsub.TopicArgs{\n\t\t\tName: pulumi.String(\"transcoder-notifications\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = transcoder.NewJob(ctx, \"default\", \u0026transcoder.JobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026transcoder.JobConfigArgs{\n\t\t\t\tInputs: transcoder.JobConfigInputTypeArray{\n\t\t\t\t\t\u0026transcoder.JobConfigInputTypeArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"input0\"),\n\t\t\t\t\t\tUri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\tdefaultName := _args[0].(string)\n\t\t\t\t\t\t\texampleMp4Name := _args[1].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", defaultName, exampleMp4Name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEditLists: transcoder.JobConfigEditListArray{\n\t\t\t\t\t\u0026transcoder.JobConfigEditListArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"atom0\"),\n\t\t\t\t\t\tInputs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"input0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"0s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdBreaks: transcoder.JobConfigAdBreakArray{\n\t\t\t\t\t\u0026transcoder.JobConfigAdBreakArgs{\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"3.500s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tElementaryStreams: transcoder.JobConfigElementaryStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream0\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(640),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(360),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(495000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream1\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(1280),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(720),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(2500000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(2250000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\tAudioStream: \u0026transcoder.JobConfigElementaryStreamAudioStreamArgs{\n\t\t\t\t\t\t\tCodec: pulumi.String(\"aac\"),\n\t\t\t\t\t\t\tBitrateBps: pulumi.Int(64000),\n\t\t\t\t\t\t\tChannelCount: pulumi.Int(2),\n\t\t\t\t\t\t\tChannelLayouts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fl\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSampleRateHertz: pulumi.Int(48000),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMuxStreams: transcoder.JobConfigMuxStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"sd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream0\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"hd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"hd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream1\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tPubsubDestination: \u0026transcoder.JobConfigPubsubDestinationArgs{\n\t\t\t\t\tTopic: transcoderNotifications.ID(),\n\t\t\t\t},\n\t\t\t\tOutput: \u0026transcoder.JobConfigOutputTypeArgs{\n\t\t\t\t\tUri: _default.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/outputs/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.pubsub.Topic;\nimport com.pulumi.gcp.pubsub.TopicArgs;\nimport com.pulumi.gcp.transcoder.Job;\nimport com.pulumi.gcp.transcoder.JobArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigPubsubDestinationArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigOutputArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Bucket(\"default\", BucketArgs.builder()\n .name(\"transcoder-job\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .publicAccessPrevention(\"enforced\")\n .build());\n\n var exampleMp4 = new BucketObject(\"exampleMp4\", BucketObjectArgs.builder()\n .name(\"example.mp4\")\n .source(new FileAsset(\"./test-fixtures/example.mp4\"))\n .bucket(default_.name())\n .build());\n\n var transcoderNotifications = new Topic(\"transcoderNotifications\", TopicArgs.builder()\n .name(\"transcoder-notifications\")\n .build());\n\n var defaultJob = new Job(\"defaultJob\", JobArgs.builder()\n .location(\"us-central1\")\n .config(JobConfigArgs.builder()\n .inputs(JobConfigInputArgs.builder()\n .key(\"input0\")\n .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -\u003e {\n var defaultName = values.t1;\n var exampleMp4Name = values.t2;\n return String.format(\"gs://%s/%s\", defaultName,exampleMp4Name);\n }))\n .build())\n .editLists(JobConfigEditListArgs.builder()\n .key(\"atom0\")\n .inputs(\"input0\")\n .startTimeOffset(\"0s\")\n .build())\n .adBreaks(JobConfigAdBreakArgs.builder()\n .startTimeOffset(\"3.500s\")\n .build())\n .elementaryStreams( \n JobConfigElementaryStreamArgs.builder()\n .key(\"video-stream0\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(640)\n .heightPixels(360)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(550000)\n .vbvFullnessBits(495000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"video-stream1\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(1280)\n .heightPixels(720)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(2500000)\n .vbvFullnessBits(2250000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"audio-stream0\")\n .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()\n .codec(\"aac\")\n .bitrateBps(64000)\n .channelCount(2)\n .channelLayouts( \n \"fl\",\n \"fr\")\n .sampleRateHertz(48000)\n .build())\n .build())\n .muxStreams( \n JobConfigMuxStreamArgs.builder()\n .key(\"sd\")\n .fileName(\"sd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream0\",\n \"audio-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"hd\")\n .fileName(\"hd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream1\",\n \"audio-stream0\")\n .build())\n .pubsubDestination(JobConfigPubsubDestinationArgs.builder()\n .topic(transcoderNotifications.id())\n .build())\n .output(JobConfigOutputArgs.builder()\n .uri(default_.name().applyValue(name -\u003e String.format(\"gs://%s/outputs/\", name)))\n .build())\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:storage:Bucket\n properties:\n name: transcoder-job\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n publicAccessPrevention: enforced\n exampleMp4:\n type: gcp:storage:BucketObject\n name: example_mp4\n properties:\n name: example.mp4\n source:\n fn::FileAsset: ./test-fixtures/example.mp4\n bucket: ${default.name}\n transcoderNotifications:\n type: gcp:pubsub:Topic\n name: transcoder_notifications\n properties:\n name: transcoder-notifications\n defaultJob:\n type: gcp:transcoder:Job\n name: default\n properties:\n location: us-central1\n config:\n inputs:\n - key: input0\n uri: gs://${default.name}/${exampleMp4.name}\n editLists:\n - key: atom0\n inputs:\n - input0\n startTimeOffset: 0s\n adBreaks:\n - startTimeOffset: 3.500s\n elementaryStreams:\n - key: video-stream0\n videoStream:\n h264:\n widthPixels: 640\n heightPixels: 360\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 550000\n vbvFullnessBits: 495000\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: video-stream1\n videoStream:\n h264:\n widthPixels: 1280\n heightPixels: 720\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 2.5e+06\n vbvFullnessBits: 2.25e+06\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: audio-stream0\n audioStream:\n codec: aac\n bitrateBps: 64000\n channelCount: 2\n channelLayouts:\n - fl\n - fr\n sampleRateHertz: 48000\n muxStreams:\n - key: sd\n fileName: sd.mp4\n container: mp4\n elementaryStreams:\n - video-stream0\n - audio-stream0\n - key: hd\n fileName: hd.mp4\n container: mp4\n elementaryStreams:\n - video-stream1\n - audio-stream0\n pubsubDestination:\n topic: ${transcoderNotifications.id}\n output:\n uri: gs://${default.name}/outputs/\n labels:\n label: key\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Transcoder Job Encryptions\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.storage.Bucket(\"default\", {\n name: \"transcoder-job\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n publicAccessPrevention: \"enforced\",\n});\nconst exampleMp4 = new gcp.storage.BucketObject(\"example_mp4\", {\n name: \"example.mp4\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket: _default.name,\n});\nconst encryptionKey = new gcp.secretmanager.Secret(\"encryption_key\", {\n secretId: \"transcoder-encryption-key\",\n replication: {\n auto: {},\n },\n});\nconst encryptionKeySecretVersion = new gcp.secretmanager.SecretVersion(\"encryption_key\", {\n secret: encryptionKey.name,\n secretData: \"4A67F2C1B8E93A4F6D3E7890A1BC23DF\",\n});\nconst project = gcp.organizations.getProject({});\n// this is required to allow the transcoder service identity to access the secret\nconst transcoder = new gcp.projects.ServiceIdentity(\"transcoder\", {\n project: project.then(project =\u003e project.projectId),\n service: \"transcoder.googleapis.com\",\n});\nconst transcoderEncryptionKeyAccessor = new gcp.secretmanager.SecretIamMember(\"transcoder_encryption_key_accessor\", {\n secretId: encryptionKey.secretId,\n project: encryptionKey.project,\n role: \"roles/secretmanager.secretAccessor\",\n member: pulumi.interpolate`serviceAccount:${transcoder.email}`,\n});\nconst defaultJob = new gcp.transcoder.Job(\"default\", {\n location: \"us-central1\",\n config: {\n inputs: [{\n key: \"input0\",\n uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,\n }],\n elementaryStreams: [\n {\n key: \"es_video\",\n videoStream: {\n h264: {\n profile: \"main\",\n heightPixels: 600,\n widthPixels: 800,\n bitrateBps: 1000000,\n frameRate: 60,\n },\n },\n },\n {\n key: \"es_audio\",\n audioStream: {\n codec: \"aac\",\n channelCount: 2,\n bitrateBps: 160000,\n },\n },\n ],\n encryptions: [\n {\n id: \"aes-128\",\n secretManagerKeySource: {\n secretVersion: encryptionKeySecretVersion.name,\n },\n drmSystems: {\n clearkey: {},\n },\n aes128: {},\n },\n {\n id: \"cenc\",\n secretManagerKeySource: {\n secretVersion: encryptionKeySecretVersion.name,\n },\n drmSystems: {\n widevine: {},\n },\n mpegCenc: {\n scheme: \"cenc\",\n },\n },\n {\n id: \"cbcs\",\n secretManagerKeySource: {\n secretVersion: encryptionKeySecretVersion.name,\n },\n drmSystems: {\n widevine: {},\n },\n mpegCenc: {\n scheme: \"cbcs\",\n },\n },\n ],\n muxStreams: [\n {\n key: \"ts_aes128\",\n container: \"ts\",\n elementaryStreams: [\n \"es_video\",\n \"es_audio\",\n ],\n segmentSettings: {\n segmentDuration: \"6s\",\n },\n encryptionId: \"aes-128\",\n },\n {\n key: \"fmp4_cenc_video\",\n container: \"fmp4\",\n elementaryStreams: [\"es_video\"],\n segmentSettings: {\n segmentDuration: \"6s\",\n },\n encryptionId: \"cenc\",\n },\n {\n key: \"fmp4_cenc_audio\",\n container: \"fmp4\",\n elementaryStreams: [\"es_audio\"],\n segmentSettings: {\n segmentDuration: \"6s\",\n },\n encryptionId: \"cenc\",\n },\n {\n key: \"fmp4_cbcs_video\",\n container: \"fmp4\",\n elementaryStreams: [\"es_video\"],\n segmentSettings: {\n segmentDuration: \"6s\",\n },\n encryptionId: \"cbcs\",\n },\n {\n key: \"fmp4_cbcs_audio\",\n container: \"fmp4\",\n elementaryStreams: [\"es_audio\"],\n segmentSettings: {\n segmentDuration: \"6s\",\n },\n encryptionId: \"cbcs\",\n },\n ],\n manifests: [\n {\n fileName: \"manifest_aes128.m3u8\",\n type: \"HLS\",\n muxStreams: [\"ts_aes128\"],\n },\n {\n fileName: \"manifest_cenc.mpd\",\n type: \"DASH\",\n muxStreams: [\n \"fmp4_cenc_video\",\n \"fmp4_cenc_audio\",\n ],\n },\n {\n fileName: \"manifest_cbcs.mpd\",\n type: \"DASH\",\n muxStreams: [\n \"fmp4_cbcs_video\",\n \"fmp4_cbcs_audio\",\n ],\n },\n ],\n output: {\n uri: pulumi.interpolate`gs://${_default.name}/outputs/`,\n },\n },\n labels: {\n label: \"key\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.Bucket(\"default\",\n name=\"transcoder-job\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True,\n public_access_prevention=\"enforced\")\nexample_mp4 = gcp.storage.BucketObject(\"example_mp4\",\n name=\"example.mp4\",\n source=pulumi.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket=default.name)\nencryption_key = gcp.secretmanager.Secret(\"encryption_key\",\n secret_id=\"transcoder-encryption-key\",\n replication={\n \"auto\": {},\n })\nencryption_key_secret_version = gcp.secretmanager.SecretVersion(\"encryption_key\",\n secret=encryption_key.name,\n secret_data=\"4A67F2C1B8E93A4F6D3E7890A1BC23DF\")\nproject = gcp.organizations.get_project()\n# this is required to allow the transcoder service identity to access the secret\ntranscoder = gcp.projects.ServiceIdentity(\"transcoder\",\n project=project.project_id,\n service=\"transcoder.googleapis.com\")\ntranscoder_encryption_key_accessor = gcp.secretmanager.SecretIamMember(\"transcoder_encryption_key_accessor\",\n secret_id=encryption_key.secret_id,\n project=encryption_key.project,\n role=\"roles/secretmanager.secretAccessor\",\n member=transcoder.email.apply(lambda email: f\"serviceAccount:{email}\"))\ndefault_job = gcp.transcoder.Job(\"default\",\n location=\"us-central1\",\n config={\n \"inputs\": [{\n \"key\": \"input0\",\n \"uri\": pulumi.Output.all(\n defaultName=default.name,\n exampleMp4Name=example_mp4.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}\")\n,\n }],\n \"elementary_streams\": [\n {\n \"key\": \"es_video\",\n \"video_stream\": {\n \"h264\": {\n \"profile\": \"main\",\n \"height_pixels\": 600,\n \"width_pixels\": 800,\n \"bitrate_bps\": 1000000,\n \"frame_rate\": 60,\n },\n },\n },\n {\n \"key\": \"es_audio\",\n \"audio_stream\": {\n \"codec\": \"aac\",\n \"channel_count\": 2,\n \"bitrate_bps\": 160000,\n },\n },\n ],\n \"encryptions\": [\n {\n \"id\": \"aes-128\",\n \"secret_manager_key_source\": {\n \"secret_version\": encryption_key_secret_version.name,\n },\n \"drm_systems\": {\n \"clearkey\": {},\n },\n \"aes128\": {},\n },\n {\n \"id\": \"cenc\",\n \"secret_manager_key_source\": {\n \"secret_version\": encryption_key_secret_version.name,\n },\n \"drm_systems\": {\n \"widevine\": {},\n },\n \"mpeg_cenc\": {\n \"scheme\": \"cenc\",\n },\n },\n {\n \"id\": \"cbcs\",\n \"secret_manager_key_source\": {\n \"secret_version\": encryption_key_secret_version.name,\n },\n \"drm_systems\": {\n \"widevine\": {},\n },\n \"mpeg_cenc\": {\n \"scheme\": \"cbcs\",\n },\n },\n ],\n \"mux_streams\": [\n {\n \"key\": \"ts_aes128\",\n \"container\": \"ts\",\n \"elementary_streams\": [\n \"es_video\",\n \"es_audio\",\n ],\n \"segment_settings\": {\n \"segment_duration\": \"6s\",\n },\n \"encryption_id\": \"aes-128\",\n },\n {\n \"key\": \"fmp4_cenc_video\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"es_video\"],\n \"segment_settings\": {\n \"segment_duration\": \"6s\",\n },\n \"encryption_id\": \"cenc\",\n },\n {\n \"key\": \"fmp4_cenc_audio\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"es_audio\"],\n \"segment_settings\": {\n \"segment_duration\": \"6s\",\n },\n \"encryption_id\": \"cenc\",\n },\n {\n \"key\": \"fmp4_cbcs_video\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"es_video\"],\n \"segment_settings\": {\n \"segment_duration\": \"6s\",\n },\n \"encryption_id\": \"cbcs\",\n },\n {\n \"key\": \"fmp4_cbcs_audio\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"es_audio\"],\n \"segment_settings\": {\n \"segment_duration\": \"6s\",\n },\n \"encryption_id\": \"cbcs\",\n },\n ],\n \"manifests\": [\n {\n \"file_name\": \"manifest_aes128.m3u8\",\n \"type\": \"HLS\",\n \"mux_streams\": [\"ts_aes128\"],\n },\n {\n \"file_name\": \"manifest_cenc.mpd\",\n \"type\": \"DASH\",\n \"mux_streams\": [\n \"fmp4_cenc_video\",\n \"fmp4_cenc_audio\",\n ],\n },\n {\n \"file_name\": \"manifest_cbcs.mpd\",\n \"type\": \"DASH\",\n \"mux_streams\": [\n \"fmp4_cbcs_video\",\n \"fmp4_cbcs_audio\",\n ],\n },\n ],\n \"output\": {\n \"uri\": default.name.apply(lambda name: f\"gs://{name}/outputs/\"),\n },\n },\n labels={\n \"label\": \"key\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"transcoder-job\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n PublicAccessPrevention = \"enforced\",\n });\n\n var exampleMp4 = new Gcp.Storage.BucketObject(\"example_mp4\", new()\n {\n Name = \"example.mp4\",\n Source = new FileAsset(\"./test-fixtures/example.mp4\"),\n Bucket = @default.Name,\n });\n\n var encryptionKey = new Gcp.SecretManager.Secret(\"encryption_key\", new()\n {\n SecretId = \"transcoder-encryption-key\",\n Replication = new Gcp.SecretManager.Inputs.SecretReplicationArgs\n {\n Auto = null,\n },\n });\n\n var encryptionKeySecretVersion = new Gcp.SecretManager.SecretVersion(\"encryption_key\", new()\n {\n Secret = encryptionKey.Name,\n SecretData = \"4A67F2C1B8E93A4F6D3E7890A1BC23DF\",\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n // this is required to allow the transcoder service identity to access the secret\n var transcoder = new Gcp.Projects.ServiceIdentity(\"transcoder\", new()\n {\n Project = project.Apply(getProjectResult =\u003e getProjectResult.ProjectId),\n Service = \"transcoder.googleapis.com\",\n });\n\n var transcoderEncryptionKeyAccessor = new Gcp.SecretManager.SecretIamMember(\"transcoder_encryption_key_accessor\", new()\n {\n SecretId = encryptionKey.SecretId,\n Project = encryptionKey.Project,\n Role = \"roles/secretmanager.secretAccessor\",\n Member = transcoder.Email.Apply(email =\u003e $\"serviceAccount:{email}\"),\n });\n\n var defaultJob = new Gcp.Transcoder.Job(\"default\", new()\n {\n Location = \"us-central1\",\n Config = new Gcp.Transcoder.Inputs.JobConfigArgs\n {\n Inputs = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigInputArgs\n {\n Key = \"input0\",\n Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =\u003e\n {\n var defaultName = values.Item1;\n var exampleMp4Name = values.Item2;\n return $\"gs://{defaultName}/{exampleMp4Name}\";\n }),\n },\n },\n ElementaryStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"es_video\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n Profile = \"main\",\n HeightPixels = 600,\n WidthPixels = 800,\n BitrateBps = 1000000,\n FrameRate = 60,\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"es_audio\",\n AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs\n {\n Codec = \"aac\",\n ChannelCount = 2,\n BitrateBps = 160000,\n },\n },\n },\n Encryptions = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigEncryptionArgs\n {\n Id = \"aes-128\",\n SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobConfigEncryptionSecretManagerKeySourceArgs\n {\n SecretVersion = encryptionKeySecretVersion.Name,\n },\n DrmSystems = new Gcp.Transcoder.Inputs.JobConfigEncryptionDrmSystemsArgs\n {\n Clearkey = null,\n },\n Aes128 = null,\n },\n new Gcp.Transcoder.Inputs.JobConfigEncryptionArgs\n {\n Id = \"cenc\",\n SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobConfigEncryptionSecretManagerKeySourceArgs\n {\n SecretVersion = encryptionKeySecretVersion.Name,\n },\n DrmSystems = new Gcp.Transcoder.Inputs.JobConfigEncryptionDrmSystemsArgs\n {\n Widevine = null,\n },\n MpegCenc = new Gcp.Transcoder.Inputs.JobConfigEncryptionMpegCencArgs\n {\n Scheme = \"cenc\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigEncryptionArgs\n {\n Id = \"cbcs\",\n SecretManagerKeySource = new Gcp.Transcoder.Inputs.JobConfigEncryptionSecretManagerKeySourceArgs\n {\n SecretVersion = encryptionKeySecretVersion.Name,\n },\n DrmSystems = new Gcp.Transcoder.Inputs.JobConfigEncryptionDrmSystemsArgs\n {\n Widevine = null,\n },\n MpegCenc = new Gcp.Transcoder.Inputs.JobConfigEncryptionMpegCencArgs\n {\n Scheme = \"cbcs\",\n },\n },\n },\n MuxStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"ts_aes128\",\n Container = \"ts\",\n ElementaryStreams = new[]\n {\n \"es_video\",\n \"es_audio\",\n },\n SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs\n {\n SegmentDuration = \"6s\",\n },\n EncryptionId = \"aes-128\",\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"fmp4_cenc_video\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"es_video\",\n },\n SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs\n {\n SegmentDuration = \"6s\",\n },\n EncryptionId = \"cenc\",\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"fmp4_cenc_audio\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"es_audio\",\n },\n SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs\n {\n SegmentDuration = \"6s\",\n },\n EncryptionId = \"cenc\",\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"fmp4_cbcs_video\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"es_video\",\n },\n SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs\n {\n SegmentDuration = \"6s\",\n },\n EncryptionId = \"cbcs\",\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"fmp4_cbcs_audio\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"es_audio\",\n },\n SegmentSettings = new Gcp.Transcoder.Inputs.JobConfigMuxStreamSegmentSettingsArgs\n {\n SegmentDuration = \"6s\",\n },\n EncryptionId = \"cbcs\",\n },\n },\n Manifests = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigManifestArgs\n {\n FileName = \"manifest_aes128.m3u8\",\n Type = \"HLS\",\n MuxStreams = new[]\n {\n \"ts_aes128\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigManifestArgs\n {\n FileName = \"manifest_cenc.mpd\",\n Type = \"DASH\",\n MuxStreams = new[]\n {\n \"fmp4_cenc_video\",\n \"fmp4_cenc_audio\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigManifestArgs\n {\n FileName = \"manifest_cbcs.mpd\",\n Type = \"DASH\",\n MuxStreams = new[]\n {\n \"fmp4_cbcs_video\",\n \"fmp4_cbcs_audio\",\n },\n },\n },\n Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs\n {\n Uri = @default.Name.Apply(name =\u003e $\"gs://{name}/outputs/\"),\n },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n });\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-gcp/sdk/v8/go/gcp/secretmanager\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/storage\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/transcoder\"\n\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.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"transcoder-job\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tPublicAccessPrevention: pulumi.String(\"enforced\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMp4, err := storage.NewBucketObject(ctx, \"example_mp4\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"example.mp4\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/example.mp4\"),\n\t\t\tBucket: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tencryptionKey, err := secretmanager.NewSecret(ctx, \"encryption_key\", \u0026secretmanager.SecretArgs{\n\t\t\tSecretId: pulumi.String(\"transcoder-encryption-key\"),\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\tencryptionKeySecretVersion, err := secretmanager.NewSecretVersion(ctx, \"encryption_key\", \u0026secretmanager.SecretVersionArgs{\n\t\t\tSecret: encryptionKey.Name,\n\t\t\tSecretData: pulumi.String(\"4A67F2C1B8E93A4F6D3E7890A1BC23DF\"),\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// this is required to allow the transcoder service identity to access the secret\n\t\ttranscoder, err := projects.NewServiceIdentity(ctx, \"transcoder\", \u0026projects.ServiceIdentityArgs{\n\t\t\tProject: pulumi.String(project.ProjectId),\n\t\t\tService: pulumi.String(\"transcoder.googleapis.com\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = secretmanager.NewSecretIamMember(ctx, \"transcoder_encryption_key_accessor\", \u0026secretmanager.SecretIamMemberArgs{\n\t\t\tSecretId: encryptionKey.SecretId,\n\t\t\tProject: encryptionKey.Project,\n\t\t\tRole: pulumi.String(\"roles/secretmanager.secretAccessor\"),\n\t\t\tMember: transcoder.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 = transcoder.NewJob(ctx, \"default\", \u0026transcoder.JobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026transcoder.JobConfigArgs{\n\t\t\t\tInputs: transcoder.JobConfigInputTypeArray{\n\t\t\t\t\t\u0026transcoder.JobConfigInputTypeArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"input0\"),\n\t\t\t\t\t\tUri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\tdefaultName := _args[0].(string)\n\t\t\t\t\t\t\texampleMp4Name := _args[1].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", defaultName, exampleMp4Name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tElementaryStreams: transcoder.JobConfigElementaryStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"es_video\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"main\"),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(600),\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(800),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(1000000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"es_audio\"),\n\t\t\t\t\t\tAudioStream: \u0026transcoder.JobConfigElementaryStreamAudioStreamArgs{\n\t\t\t\t\t\t\tCodec: pulumi.String(\"aac\"),\n\t\t\t\t\t\t\tChannelCount: pulumi.Int(2),\n\t\t\t\t\t\t\tBitrateBps: pulumi.Int(160000),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEncryptions: transcoder.JobConfigEncryptionArray{\n\t\t\t\t\t\u0026transcoder.JobConfigEncryptionArgs{\n\t\t\t\t\t\tId: pulumi.String(\"aes-128\"),\n\t\t\t\t\t\tSecretManagerKeySource: \u0026transcoder.JobConfigEncryptionSecretManagerKeySourceArgs{\n\t\t\t\t\t\t\tSecretVersion: encryptionKeySecretVersion.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDrmSystems: \u0026transcoder.JobConfigEncryptionDrmSystemsArgs{\n\t\t\t\t\t\t\tClearkey: \u0026transcoder.JobConfigEncryptionDrmSystemsClearkeyArgs{},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tAes128: \u0026transcoder.JobConfigEncryptionAes128Args{},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigEncryptionArgs{\n\t\t\t\t\t\tId: pulumi.String(\"cenc\"),\n\t\t\t\t\t\tSecretManagerKeySource: \u0026transcoder.JobConfigEncryptionSecretManagerKeySourceArgs{\n\t\t\t\t\t\t\tSecretVersion: encryptionKeySecretVersion.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDrmSystems: \u0026transcoder.JobConfigEncryptionDrmSystemsArgs{\n\t\t\t\t\t\t\tWidevine: \u0026transcoder.JobConfigEncryptionDrmSystemsWidevineArgs{},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMpegCenc: \u0026transcoder.JobConfigEncryptionMpegCencArgs{\n\t\t\t\t\t\t\tScheme: pulumi.String(\"cenc\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigEncryptionArgs{\n\t\t\t\t\t\tId: pulumi.String(\"cbcs\"),\n\t\t\t\t\t\tSecretManagerKeySource: \u0026transcoder.JobConfigEncryptionSecretManagerKeySourceArgs{\n\t\t\t\t\t\t\tSecretVersion: encryptionKeySecretVersion.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tDrmSystems: \u0026transcoder.JobConfigEncryptionDrmSystemsArgs{\n\t\t\t\t\t\t\tWidevine: \u0026transcoder.JobConfigEncryptionDrmSystemsWidevineArgs{},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tMpegCenc: \u0026transcoder.JobConfigEncryptionMpegCencArgs{\n\t\t\t\t\t\t\tScheme: pulumi.String(\"cbcs\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMuxStreams: transcoder.JobConfigMuxStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"ts_aes128\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"ts\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"es_video\"),\n\t\t\t\t\t\t\tpulumi.String(\"es_audio\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSegmentSettings: \u0026transcoder.JobConfigMuxStreamSegmentSettingsArgs{\n\t\t\t\t\t\t\tSegmentDuration: pulumi.String(\"6s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEncryptionId: pulumi.String(\"aes-128\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"fmp4_cenc_video\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"es_video\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSegmentSettings: \u0026transcoder.JobConfigMuxStreamSegmentSettingsArgs{\n\t\t\t\t\t\t\tSegmentDuration: pulumi.String(\"6s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEncryptionId: pulumi.String(\"cenc\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"fmp4_cenc_audio\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"es_audio\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSegmentSettings: \u0026transcoder.JobConfigMuxStreamSegmentSettingsArgs{\n\t\t\t\t\t\t\tSegmentDuration: pulumi.String(\"6s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEncryptionId: pulumi.String(\"cenc\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"fmp4_cbcs_video\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"es_video\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSegmentSettings: \u0026transcoder.JobConfigMuxStreamSegmentSettingsArgs{\n\t\t\t\t\t\t\tSegmentDuration: pulumi.String(\"6s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEncryptionId: pulumi.String(\"cbcs\"),\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"fmp4_cbcs_audio\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"es_audio\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tSegmentSettings: \u0026transcoder.JobConfigMuxStreamSegmentSettingsArgs{\n\t\t\t\t\t\t\tSegmentDuration: pulumi.String(\"6s\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tEncryptionId: pulumi.String(\"cbcs\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tManifests: transcoder.JobConfigManifestArray{\n\t\t\t\t\t\u0026transcoder.JobConfigManifestArgs{\n\t\t\t\t\t\tFileName: pulumi.String(\"manifest_aes128.m3u8\"),\n\t\t\t\t\t\tType: pulumi.String(\"HLS\"),\n\t\t\t\t\t\tMuxStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"ts_aes128\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigManifestArgs{\n\t\t\t\t\t\tFileName: pulumi.String(\"manifest_cenc.mpd\"),\n\t\t\t\t\t\tType: pulumi.String(\"DASH\"),\n\t\t\t\t\t\tMuxStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"fmp4_cenc_video\"),\n\t\t\t\t\t\t\tpulumi.String(\"fmp4_cenc_audio\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigManifestArgs{\n\t\t\t\t\t\tFileName: pulumi.String(\"manifest_cbcs.mpd\"),\n\t\t\t\t\t\tType: pulumi.String(\"DASH\"),\n\t\t\t\t\t\tMuxStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"fmp4_cbcs_video\"),\n\t\t\t\t\t\t\tpulumi.String(\"fmp4_cbcs_audio\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOutput: \u0026transcoder.JobConfigOutputTypeArgs{\n\t\t\t\t\tUri: _default.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/outputs/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.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.projects.ServiceIdentity;\nimport com.pulumi.gcp.projects.ServiceIdentityArgs;\nimport com.pulumi.gcp.secretmanager.SecretIamMember;\nimport com.pulumi.gcp.secretmanager.SecretIamMemberArgs;\nimport com.pulumi.gcp.transcoder.Job;\nimport com.pulumi.gcp.transcoder.JobArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigOutputArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Bucket(\"default\", BucketArgs.builder()\n .name(\"transcoder-job\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .publicAccessPrevention(\"enforced\")\n .build());\n\n var exampleMp4 = new BucketObject(\"exampleMp4\", BucketObjectArgs.builder()\n .name(\"example.mp4\")\n .source(new FileAsset(\"./test-fixtures/example.mp4\"))\n .bucket(default_.name())\n .build());\n\n var encryptionKey = new Secret(\"encryptionKey\", SecretArgs.builder()\n .secretId(\"transcoder-encryption-key\")\n .replication(SecretReplicationArgs.builder()\n .auto()\n .build())\n .build());\n\n var encryptionKeySecretVersion = new SecretVersion(\"encryptionKeySecretVersion\", SecretVersionArgs.builder()\n .secret(encryptionKey.name())\n .secretData(\"4A67F2C1B8E93A4F6D3E7890A1BC23DF\")\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n // this is required to allow the transcoder service identity to access the secret\n var transcoder = new ServiceIdentity(\"transcoder\", ServiceIdentityArgs.builder()\n .project(project.applyValue(getProjectResult -\u003e getProjectResult.projectId()))\n .service(\"transcoder.googleapis.com\")\n .build());\n\n var transcoderEncryptionKeyAccessor = new SecretIamMember(\"transcoderEncryptionKeyAccessor\", SecretIamMemberArgs.builder()\n .secretId(encryptionKey.secretId())\n .project(encryptionKey.project())\n .role(\"roles/secretmanager.secretAccessor\")\n .member(transcoder.email().applyValue(email -\u003e String.format(\"serviceAccount:%s\", email)))\n .build());\n\n var defaultJob = new Job(\"defaultJob\", JobArgs.builder()\n .location(\"us-central1\")\n .config(JobConfigArgs.builder()\n .inputs(JobConfigInputArgs.builder()\n .key(\"input0\")\n .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -\u003e {\n var defaultName = values.t1;\n var exampleMp4Name = values.t2;\n return String.format(\"gs://%s/%s\", defaultName,exampleMp4Name);\n }))\n .build())\n .elementaryStreams( \n JobConfigElementaryStreamArgs.builder()\n .key(\"es_video\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .profile(\"main\")\n .heightPixels(600)\n .widthPixels(800)\n .bitrateBps(1000000)\n .frameRate(60)\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"es_audio\")\n .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()\n .codec(\"aac\")\n .channelCount(2)\n .bitrateBps(160000)\n .build())\n .build())\n .encryptions( \n JobConfigEncryptionArgs.builder()\n .id(\"aes-128\")\n .secretManagerKeySource(JobConfigEncryptionSecretManagerKeySourceArgs.builder()\n .secretVersion(encryptionKeySecretVersion.name())\n .build())\n .drmSystems(JobConfigEncryptionDrmSystemsArgs.builder()\n .clearkey()\n .build())\n .aes128()\n .build(),\n JobConfigEncryptionArgs.builder()\n .id(\"cenc\")\n .secretManagerKeySource(JobConfigEncryptionSecretManagerKeySourceArgs.builder()\n .secretVersion(encryptionKeySecretVersion.name())\n .build())\n .drmSystems(JobConfigEncryptionDrmSystemsArgs.builder()\n .widevine()\n .build())\n .mpegCenc(JobConfigEncryptionMpegCencArgs.builder()\n .scheme(\"cenc\")\n .build())\n .build(),\n JobConfigEncryptionArgs.builder()\n .id(\"cbcs\")\n .secretManagerKeySource(JobConfigEncryptionSecretManagerKeySourceArgs.builder()\n .secretVersion(encryptionKeySecretVersion.name())\n .build())\n .drmSystems(JobConfigEncryptionDrmSystemsArgs.builder()\n .widevine()\n .build())\n .mpegCenc(JobConfigEncryptionMpegCencArgs.builder()\n .scheme(\"cbcs\")\n .build())\n .build())\n .muxStreams( \n JobConfigMuxStreamArgs.builder()\n .key(\"ts_aes128\")\n .container(\"ts\")\n .elementaryStreams( \n \"es_video\",\n \"es_audio\")\n .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()\n .segmentDuration(\"6s\")\n .build())\n .encryptionId(\"aes-128\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"fmp4_cenc_video\")\n .container(\"fmp4\")\n .elementaryStreams(\"es_video\")\n .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()\n .segmentDuration(\"6s\")\n .build())\n .encryptionId(\"cenc\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"fmp4_cenc_audio\")\n .container(\"fmp4\")\n .elementaryStreams(\"es_audio\")\n .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()\n .segmentDuration(\"6s\")\n .build())\n .encryptionId(\"cenc\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"fmp4_cbcs_video\")\n .container(\"fmp4\")\n .elementaryStreams(\"es_video\")\n .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()\n .segmentDuration(\"6s\")\n .build())\n .encryptionId(\"cbcs\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"fmp4_cbcs_audio\")\n .container(\"fmp4\")\n .elementaryStreams(\"es_audio\")\n .segmentSettings(JobConfigMuxStreamSegmentSettingsArgs.builder()\n .segmentDuration(\"6s\")\n .build())\n .encryptionId(\"cbcs\")\n .build())\n .manifests( \n JobConfigManifestArgs.builder()\n .fileName(\"manifest_aes128.m3u8\")\n .type(\"HLS\")\n .muxStreams(\"ts_aes128\")\n .build(),\n JobConfigManifestArgs.builder()\n .fileName(\"manifest_cenc.mpd\")\n .type(\"DASH\")\n .muxStreams( \n \"fmp4_cenc_video\",\n \"fmp4_cenc_audio\")\n .build(),\n JobConfigManifestArgs.builder()\n .fileName(\"manifest_cbcs.mpd\")\n .type(\"DASH\")\n .muxStreams( \n \"fmp4_cbcs_video\",\n \"fmp4_cbcs_audio\")\n .build())\n .output(JobConfigOutputArgs.builder()\n .uri(default_.name().applyValue(name -\u003e String.format(\"gs://%s/outputs/\", name)))\n .build())\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:storage:Bucket\n properties:\n name: transcoder-job\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n publicAccessPrevention: enforced\n exampleMp4:\n type: gcp:storage:BucketObject\n name: example_mp4\n properties:\n name: example.mp4\n source:\n fn::FileAsset: ./test-fixtures/example.mp4\n bucket: ${default.name}\n encryptionKey:\n type: gcp:secretmanager:Secret\n name: encryption_key\n properties:\n secretId: transcoder-encryption-key\n replication:\n auto: {}\n encryptionKeySecretVersion:\n type: gcp:secretmanager:SecretVersion\n name: encryption_key\n properties:\n secret: ${encryptionKey.name}\n secretData: 4A67F2C1B8E93A4F6D3E7890A1BC23DF\n # this is required to allow the transcoder service identity to access the secret\n transcoder:\n type: gcp:projects:ServiceIdentity\n properties:\n project: ${project.projectId}\n service: transcoder.googleapis.com\n transcoderEncryptionKeyAccessor:\n type: gcp:secretmanager:SecretIamMember\n name: transcoder_encryption_key_accessor\n properties:\n secretId: ${encryptionKey.secretId}\n project: ${encryptionKey.project}\n role: roles/secretmanager.secretAccessor\n member: serviceAccount:${transcoder.email}\n defaultJob:\n type: gcp:transcoder:Job\n name: default\n properties:\n location: us-central1\n config:\n inputs:\n - key: input0\n uri: gs://${default.name}/${exampleMp4.name}\n elementaryStreams:\n - key: es_video\n videoStream:\n h264:\n profile: main\n heightPixels: 600\n widthPixels: 800\n bitrateBps: 1e+06\n frameRate: 60\n - key: es_audio\n audioStream:\n codec: aac\n channelCount: 2\n bitrateBps: 160000\n encryptions:\n - id: aes-128\n secretManagerKeySource:\n secretVersion: ${encryptionKeySecretVersion.name}\n drmSystems:\n clearkey: {}\n aes128: {}\n - id: cenc\n secretManagerKeySource:\n secretVersion: ${encryptionKeySecretVersion.name}\n drmSystems:\n widevine: {}\n mpegCenc:\n scheme: cenc\n - id: cbcs\n secretManagerKeySource:\n secretVersion: ${encryptionKeySecretVersion.name}\n drmSystems:\n widevine: {}\n mpegCenc:\n scheme: cbcs\n muxStreams:\n - key: ts_aes128\n container: ts\n elementaryStreams:\n - es_video\n - es_audio\n segmentSettings:\n segmentDuration: 6s\n encryptionId: aes-128\n - key: fmp4_cenc_video\n container: fmp4\n elementaryStreams:\n - es_video\n segmentSettings:\n segmentDuration: 6s\n encryptionId: cenc\n - key: fmp4_cenc_audio\n container: fmp4\n elementaryStreams:\n - es_audio\n segmentSettings:\n segmentDuration: 6s\n encryptionId: cenc\n - key: fmp4_cbcs_video\n container: fmp4\n elementaryStreams:\n - es_video\n segmentSettings:\n segmentDuration: 6s\n encryptionId: cbcs\n - key: fmp4_cbcs_audio\n container: fmp4\n elementaryStreams:\n - es_audio\n segmentSettings:\n segmentDuration: 6s\n encryptionId: cbcs\n manifests:\n - fileName: manifest_aes128.m3u8\n type: HLS\n muxStreams:\n - ts_aes128\n - fileName: manifest_cenc.mpd\n type: DASH\n muxStreams:\n - fmp4_cenc_video\n - fmp4_cenc_audio\n - fileName: manifest_cbcs.mpd\n type: DASH\n muxStreams:\n - fmp4_cbcs_video\n - fmp4_cbcs_audio\n output:\n uri: gs://${default.name}/outputs/\n labels:\n label: key\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Transcoder Job Overlays\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.storage.Bucket(\"default\", {\n name: \"transcoder-job\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n publicAccessPrevention: \"enforced\",\n});\nconst exampleMp4 = new gcp.storage.BucketObject(\"example_mp4\", {\n name: \"example.mp4\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket: _default.name,\n});\nconst overlayPng = new gcp.storage.BucketObject(\"overlay_png\", {\n name: \"overlay.png\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/overlay.png\"),\n bucket: _default.name,\n});\nconst defaultJob = new gcp.transcoder.Job(\"default\", {\n location: \"us-central1\",\n config: {\n inputs: [{\n key: \"input0\",\n uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,\n }],\n editLists: [{\n key: \"atom0\",\n inputs: [\"input0\"],\n startTimeOffset: \"0s\",\n }],\n adBreaks: [{\n startTimeOffset: \"3.500s\",\n }],\n overlays: [{\n animations: [{\n animationFade: {\n fadeType: \"FADE_IN\",\n startTimeOffset: \"1.500s\",\n endTimeOffset: \"3.500s\",\n xy: {\n x: 1,\n y: 0.5,\n },\n },\n }],\n image: {\n uri: pulumi.interpolate`gs://${_default.name}/${overlayPng.name}`,\n },\n }],\n elementaryStreams: [\n {\n key: \"video-stream0\",\n videoStream: {\n h264: {\n widthPixels: 640,\n heightPixels: 360,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 550000,\n vbvFullnessBits: 495000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"video-stream1\",\n videoStream: {\n h264: {\n widthPixels: 1280,\n heightPixels: 720,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 2500000,\n vbvFullnessBits: 2250000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"audio-stream0\",\n audioStream: {\n codec: \"aac\",\n bitrateBps: 64000,\n channelCount: 2,\n channelLayouts: [\n \"fl\",\n \"fr\",\n ],\n sampleRateHertz: 48000,\n },\n },\n ],\n muxStreams: [\n {\n key: \"sd\",\n fileName: \"sd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"hd\",\n fileName: \"hd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n ],\n output: {\n uri: pulumi.interpolate`gs://${_default.name}/outputs/`,\n },\n },\n labels: {\n label: \"key\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.Bucket(\"default\",\n name=\"transcoder-job\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True,\n public_access_prevention=\"enforced\")\nexample_mp4 = gcp.storage.BucketObject(\"example_mp4\",\n name=\"example.mp4\",\n source=pulumi.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket=default.name)\noverlay_png = gcp.storage.BucketObject(\"overlay_png\",\n name=\"overlay.png\",\n source=pulumi.FileAsset(\"./test-fixtures/overlay.png\"),\n bucket=default.name)\ndefault_job = gcp.transcoder.Job(\"default\",\n location=\"us-central1\",\n config={\n \"inputs\": [{\n \"key\": \"input0\",\n \"uri\": pulumi.Output.all(\n defaultName=default.name,\n exampleMp4Name=example_mp4.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}\")\n,\n }],\n \"edit_lists\": [{\n \"key\": \"atom0\",\n \"inputs\": [\"input0\"],\n \"start_time_offset\": \"0s\",\n }],\n \"ad_breaks\": [{\n \"start_time_offset\": \"3.500s\",\n }],\n \"overlays\": [{\n \"animations\": [{\n \"animation_fade\": {\n \"fade_type\": \"FADE_IN\",\n \"start_time_offset\": \"1.500s\",\n \"end_time_offset\": \"3.500s\",\n \"xy\": {\n \"x\": 1,\n \"y\": 0.5,\n },\n },\n }],\n \"image\": {\n \"uri\": pulumi.Output.all(\n defaultName=default.name,\n overlayPngName=overlay_png.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['defaultName']}/{resolved_outputs['overlayPngName']}\")\n,\n },\n }],\n \"elementary_streams\": [\n {\n \"key\": \"video-stream0\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 640,\n \"height_pixels\": 360,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 550000,\n \"vbv_fullness_bits\": 495000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"video-stream1\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 1280,\n \"height_pixels\": 720,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 2500000,\n \"vbv_fullness_bits\": 2250000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"audio-stream0\",\n \"audio_stream\": {\n \"codec\": \"aac\",\n \"bitrate_bps\": 64000,\n \"channel_count\": 2,\n \"channel_layouts\": [\n \"fl\",\n \"fr\",\n ],\n \"sample_rate_hertz\": 48000,\n },\n },\n ],\n \"mux_streams\": [\n {\n \"key\": \"sd\",\n \"file_name\": \"sd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"hd\",\n \"file_name\": \"hd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n ],\n \"output\": {\n \"uri\": default.name.apply(lambda name: f\"gs://{name}/outputs/\"),\n },\n },\n labels={\n \"label\": \"key\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"transcoder-job\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n PublicAccessPrevention = \"enforced\",\n });\n\n var exampleMp4 = new Gcp.Storage.BucketObject(\"example_mp4\", new()\n {\n Name = \"example.mp4\",\n Source = new FileAsset(\"./test-fixtures/example.mp4\"),\n Bucket = @default.Name,\n });\n\n var overlayPng = new Gcp.Storage.BucketObject(\"overlay_png\", new()\n {\n Name = \"overlay.png\",\n Source = new FileAsset(\"./test-fixtures/overlay.png\"),\n Bucket = @default.Name,\n });\n\n var defaultJob = new Gcp.Transcoder.Job(\"default\", new()\n {\n Location = \"us-central1\",\n Config = new Gcp.Transcoder.Inputs.JobConfigArgs\n {\n Inputs = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigInputArgs\n {\n Key = \"input0\",\n Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =\u003e\n {\n var defaultName = values.Item1;\n var exampleMp4Name = values.Item2;\n return $\"gs://{defaultName}/{exampleMp4Name}\";\n }),\n },\n },\n EditLists = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigEditListArgs\n {\n Key = \"atom0\",\n Inputs = new[]\n {\n \"input0\",\n },\n StartTimeOffset = \"0s\",\n },\n },\n AdBreaks = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigAdBreakArgs\n {\n StartTimeOffset = \"3.500s\",\n },\n },\n Overlays = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigOverlayArgs\n {\n Animations = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigOverlayAnimationArgs\n {\n AnimationFade = new Gcp.Transcoder.Inputs.JobConfigOverlayAnimationAnimationFadeArgs\n {\n FadeType = \"FADE_IN\",\n StartTimeOffset = \"1.500s\",\n EndTimeOffset = \"3.500s\",\n Xy = new Gcp.Transcoder.Inputs.JobConfigOverlayAnimationAnimationFadeXyArgs\n {\n X = 1,\n Y = 0.5,\n },\n },\n },\n },\n Image = new Gcp.Transcoder.Inputs.JobConfigOverlayImageArgs\n {\n Uri = Output.Tuple(@default.Name, overlayPng.Name).Apply(values =\u003e\n {\n var defaultName = values.Item1;\n var overlayPngName = values.Item2;\n return $\"gs://{defaultName}/{overlayPngName}\";\n }),\n },\n },\n },\n ElementaryStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"video-stream0\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 640,\n HeightPixels = 360,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 550000,\n VbvFullnessBits = 495000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"video-stream1\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 1280,\n HeightPixels = 720,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 2500000,\n VbvFullnessBits = 2250000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"audio-stream0\",\n AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs\n {\n Codec = \"aac\",\n BitrateBps = 64000,\n ChannelCount = 2,\n ChannelLayouts = new[]\n {\n \"fl\",\n \"fr\",\n },\n SampleRateHertz = 48000,\n },\n },\n },\n MuxStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"sd\",\n FileName = \"sd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream0\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"hd\",\n FileName = \"hd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream1\",\n \"audio-stream0\",\n },\n },\n },\n Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs\n {\n Uri = @default.Name.Apply(name =\u003e $\"gs://{name}/outputs/\"),\n },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n });\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/transcoder\"\n\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.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"transcoder-job\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tPublicAccessPrevention: pulumi.String(\"enforced\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMp4, err := storage.NewBucketObject(ctx, \"example_mp4\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"example.mp4\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/example.mp4\"),\n\t\t\tBucket: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\toverlayPng, err := storage.NewBucketObject(ctx, \"overlay_png\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"overlay.png\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/overlay.png\"),\n\t\t\tBucket: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = transcoder.NewJob(ctx, \"default\", \u0026transcoder.JobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026transcoder.JobConfigArgs{\n\t\t\t\tInputs: transcoder.JobConfigInputTypeArray{\n\t\t\t\t\t\u0026transcoder.JobConfigInputTypeArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"input0\"),\n\t\t\t\t\t\tUri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\tdefaultName := _args[0].(string)\n\t\t\t\t\t\t\texampleMp4Name := _args[1].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", defaultName, exampleMp4Name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEditLists: transcoder.JobConfigEditListArray{\n\t\t\t\t\t\u0026transcoder.JobConfigEditListArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"atom0\"),\n\t\t\t\t\t\tInputs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"input0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"0s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdBreaks: transcoder.JobConfigAdBreakArray{\n\t\t\t\t\t\u0026transcoder.JobConfigAdBreakArgs{\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"3.500s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOverlays: transcoder.JobConfigOverlayArray{\n\t\t\t\t\t\u0026transcoder.JobConfigOverlayArgs{\n\t\t\t\t\t\tAnimations: transcoder.JobConfigOverlayAnimationArray{\n\t\t\t\t\t\t\t\u0026transcoder.JobConfigOverlayAnimationArgs{\n\t\t\t\t\t\t\t\tAnimationFade: \u0026transcoder.JobConfigOverlayAnimationAnimationFadeArgs{\n\t\t\t\t\t\t\t\t\tFadeType: pulumi.String(\"FADE_IN\"),\n\t\t\t\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"1.500s\"),\n\t\t\t\t\t\t\t\t\tEndTimeOffset: pulumi.String(\"3.500s\"),\n\t\t\t\t\t\t\t\t\tXy: \u0026transcoder.JobConfigOverlayAnimationAnimationFadeXyArgs{\n\t\t\t\t\t\t\t\t\t\tX: pulumi.Float64(1),\n\t\t\t\t\t\t\t\t\t\tY: pulumi.Float64(0.5),\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tImage: \u0026transcoder.JobConfigOverlayImageArgs{\n\t\t\t\t\t\t\tUri: pulumi.All(_default.Name, overlayPng.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\t\tdefaultName := _args[0].(string)\n\t\t\t\t\t\t\t\toverlayPngName := _args[1].(string)\n\t\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", defaultName, overlayPngName), 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\tElementaryStreams: transcoder.JobConfigElementaryStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream0\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(640),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(360),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(495000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream1\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(1280),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(720),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(2500000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(2250000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\tAudioStream: \u0026transcoder.JobConfigElementaryStreamAudioStreamArgs{\n\t\t\t\t\t\t\tCodec: pulumi.String(\"aac\"),\n\t\t\t\t\t\t\tBitrateBps: pulumi.Int(64000),\n\t\t\t\t\t\t\tChannelCount: pulumi.Int(2),\n\t\t\t\t\t\t\tChannelLayouts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fl\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSampleRateHertz: pulumi.Int(48000),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMuxStreams: transcoder.JobConfigMuxStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"sd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream0\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"hd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"hd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream1\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOutput: \u0026transcoder.JobConfigOutputTypeArgs{\n\t\t\t\t\tUri: _default.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/outputs/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.transcoder.Job;\nimport com.pulumi.gcp.transcoder.JobArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigOutputArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Bucket(\"default\", BucketArgs.builder()\n .name(\"transcoder-job\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .publicAccessPrevention(\"enforced\")\n .build());\n\n var exampleMp4 = new BucketObject(\"exampleMp4\", BucketObjectArgs.builder()\n .name(\"example.mp4\")\n .source(new FileAsset(\"./test-fixtures/example.mp4\"))\n .bucket(default_.name())\n .build());\n\n var overlayPng = new BucketObject(\"overlayPng\", BucketObjectArgs.builder()\n .name(\"overlay.png\")\n .source(new FileAsset(\"./test-fixtures/overlay.png\"))\n .bucket(default_.name())\n .build());\n\n var defaultJob = new Job(\"defaultJob\", JobArgs.builder()\n .location(\"us-central1\")\n .config(JobConfigArgs.builder()\n .inputs(JobConfigInputArgs.builder()\n .key(\"input0\")\n .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -\u003e {\n var defaultName = values.t1;\n var exampleMp4Name = values.t2;\n return String.format(\"gs://%s/%s\", defaultName,exampleMp4Name);\n }))\n .build())\n .editLists(JobConfigEditListArgs.builder()\n .key(\"atom0\")\n .inputs(\"input0\")\n .startTimeOffset(\"0s\")\n .build())\n .adBreaks(JobConfigAdBreakArgs.builder()\n .startTimeOffset(\"3.500s\")\n .build())\n .overlays(JobConfigOverlayArgs.builder()\n .animations(JobConfigOverlayAnimationArgs.builder()\n .animationFade(JobConfigOverlayAnimationAnimationFadeArgs.builder()\n .fadeType(\"FADE_IN\")\n .startTimeOffset(\"1.500s\")\n .endTimeOffset(\"3.500s\")\n .xy(JobConfigOverlayAnimationAnimationFadeXyArgs.builder()\n .x(1)\n .y(0.5)\n .build())\n .build())\n .build())\n .image(JobConfigOverlayImageArgs.builder()\n .uri(Output.tuple(default_.name(), overlayPng.name()).applyValue(values -\u003e {\n var defaultName = values.t1;\n var overlayPngName = values.t2;\n return String.format(\"gs://%s/%s\", defaultName,overlayPngName);\n }))\n .build())\n .build())\n .elementaryStreams( \n JobConfigElementaryStreamArgs.builder()\n .key(\"video-stream0\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(640)\n .heightPixels(360)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(550000)\n .vbvFullnessBits(495000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"video-stream1\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(1280)\n .heightPixels(720)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(2500000)\n .vbvFullnessBits(2250000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"audio-stream0\")\n .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()\n .codec(\"aac\")\n .bitrateBps(64000)\n .channelCount(2)\n .channelLayouts( \n \"fl\",\n \"fr\")\n .sampleRateHertz(48000)\n .build())\n .build())\n .muxStreams( \n JobConfigMuxStreamArgs.builder()\n .key(\"sd\")\n .fileName(\"sd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream0\",\n \"audio-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"hd\")\n .fileName(\"hd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream1\",\n \"audio-stream0\")\n .build())\n .output(JobConfigOutputArgs.builder()\n .uri(default_.name().applyValue(name -\u003e String.format(\"gs://%s/outputs/\", name)))\n .build())\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:storage:Bucket\n properties:\n name: transcoder-job\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n publicAccessPrevention: enforced\n exampleMp4:\n type: gcp:storage:BucketObject\n name: example_mp4\n properties:\n name: example.mp4\n source:\n fn::FileAsset: ./test-fixtures/example.mp4\n bucket: ${default.name}\n overlayPng:\n type: gcp:storage:BucketObject\n name: overlay_png\n properties:\n name: overlay.png\n source:\n fn::FileAsset: ./test-fixtures/overlay.png\n bucket: ${default.name}\n defaultJob:\n type: gcp:transcoder:Job\n name: default\n properties:\n location: us-central1\n config:\n inputs:\n - key: input0\n uri: gs://${default.name}/${exampleMp4.name}\n editLists:\n - key: atom0\n inputs:\n - input0\n startTimeOffset: 0s\n adBreaks:\n - startTimeOffset: 3.500s\n overlays:\n - animations:\n - animationFade:\n fadeType: FADE_IN\n startTimeOffset: 1.500s\n endTimeOffset: 3.500s\n xy:\n x: 1\n y: 0.5\n image:\n uri: gs://${default.name}/${overlayPng.name}\n elementaryStreams:\n - key: video-stream0\n videoStream:\n h264:\n widthPixels: 640\n heightPixels: 360\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 550000\n vbvFullnessBits: 495000\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: video-stream1\n videoStream:\n h264:\n widthPixels: 1280\n heightPixels: 720\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 2.5e+06\n vbvFullnessBits: 2.25e+06\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: audio-stream0\n audioStream:\n codec: aac\n bitrateBps: 64000\n channelCount: 2\n channelLayouts:\n - fl\n - fr\n sampleRateHertz: 48000\n muxStreams:\n - key: sd\n fileName: sd.mp4\n container: mp4\n elementaryStreams:\n - video-stream0\n - audio-stream0\n - key: hd\n fileName: hd.mp4\n container: mp4\n elementaryStreams:\n - video-stream1\n - audio-stream0\n output:\n uri: gs://${default.name}/outputs/\n labels:\n label: key\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Transcoder Job Manifests\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.storage.Bucket(\"default\", {\n name: \"transcoder-job\",\n location: \"US\",\n forceDestroy: true,\n uniformBucketLevelAccess: true,\n publicAccessPrevention: \"enforced\",\n});\nconst exampleMp4 = new gcp.storage.BucketObject(\"example_mp4\", {\n name: \"example.mp4\",\n source: new pulumi.asset.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket: _default.name,\n});\nconst defaultJob = new gcp.transcoder.Job(\"default\", {\n location: \"us-central1\",\n config: {\n inputs: [{\n key: \"input0\",\n uri: pulumi.interpolate`gs://${_default.name}/${exampleMp4.name}`,\n }],\n editLists: [{\n key: \"atom0\",\n startTimeOffset: \"0s\",\n inputs: [\"input0\"],\n }],\n adBreaks: [{\n startTimeOffset: \"3.500s\",\n }],\n elementaryStreams: [\n {\n key: \"video-stream0\",\n videoStream: {\n h264: {\n widthPixels: 640,\n heightPixels: 360,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 550000,\n vbvFullnessBits: 495000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"video-stream1\",\n videoStream: {\n h264: {\n widthPixels: 1280,\n heightPixels: 720,\n bitrateBps: 550000,\n frameRate: 60,\n pixelFormat: \"yuv420p\",\n rateControlMode: \"vbr\",\n crfLevel: 21,\n gopDuration: \"3s\",\n vbvSizeBits: 2500000,\n vbvFullnessBits: 2250000,\n entropyCoder: \"cabac\",\n profile: \"high\",\n preset: \"veryfast\",\n },\n },\n },\n {\n key: \"audio-stream0\",\n audioStream: {\n codec: \"aac\",\n bitrateBps: 64000,\n channelCount: 2,\n channelLayouts: [\n \"fl\",\n \"fr\",\n ],\n sampleRateHertz: 48000,\n },\n },\n ],\n muxStreams: [\n {\n key: \"sd\",\n fileName: \"sd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"hd\",\n fileName: \"hd.mp4\",\n container: \"mp4\",\n elementaryStreams: [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"media-sd\",\n fileName: \"media-sd.ts\",\n container: \"ts\",\n elementaryStreams: [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"media-hd\",\n fileName: \"media-hd.ts\",\n container: \"ts\",\n elementaryStreams: [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n {\n key: \"video-only-sd\",\n fileName: \"video-only-sd.m4s\",\n container: \"fmp4\",\n elementaryStreams: [\"video-stream0\"],\n },\n {\n key: \"video-only-hd\",\n fileName: \"video-only-hd.m4s\",\n container: \"fmp4\",\n elementaryStreams: [\"video-stream1\"],\n },\n {\n key: \"audio-only\",\n fileName: \"audio-only.m4s\",\n container: \"fmp4\",\n elementaryStreams: [\"audio-stream0\"],\n },\n ],\n manifests: [\n {\n fileName: \"manifest.m3u8\",\n type: \"HLS\",\n muxStreams: [\n \"media-sd\",\n \"media-hd\",\n ],\n },\n {\n fileName: \"manifest.mpd\",\n type: \"DASH\",\n muxStreams: [\n \"video-only-sd\",\n \"video-only-hd\",\n \"audio-only\",\n ],\n },\n ],\n output: {\n uri: pulumi.interpolate`gs://${_default.name}/outputs/`,\n },\n },\n labels: {\n label: \"key\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.storage.Bucket(\"default\",\n name=\"transcoder-job\",\n location=\"US\",\n force_destroy=True,\n uniform_bucket_level_access=True,\n public_access_prevention=\"enforced\")\nexample_mp4 = gcp.storage.BucketObject(\"example_mp4\",\n name=\"example.mp4\",\n source=pulumi.FileAsset(\"./test-fixtures/example.mp4\"),\n bucket=default.name)\ndefault_job = gcp.transcoder.Job(\"default\",\n location=\"us-central1\",\n config={\n \"inputs\": [{\n \"key\": \"input0\",\n \"uri\": pulumi.Output.all(\n defaultName=default.name,\n exampleMp4Name=example_mp4.name\n).apply(lambda resolved_outputs: f\"gs://{resolved_outputs['defaultName']}/{resolved_outputs['exampleMp4Name']}\")\n,\n }],\n \"edit_lists\": [{\n \"key\": \"atom0\",\n \"start_time_offset\": \"0s\",\n \"inputs\": [\"input0\"],\n }],\n \"ad_breaks\": [{\n \"start_time_offset\": \"3.500s\",\n }],\n \"elementary_streams\": [\n {\n \"key\": \"video-stream0\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 640,\n \"height_pixels\": 360,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 550000,\n \"vbv_fullness_bits\": 495000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"video-stream1\",\n \"video_stream\": {\n \"h264\": {\n \"width_pixels\": 1280,\n \"height_pixels\": 720,\n \"bitrate_bps\": 550000,\n \"frame_rate\": 60,\n \"pixel_format\": \"yuv420p\",\n \"rate_control_mode\": \"vbr\",\n \"crf_level\": 21,\n \"gop_duration\": \"3s\",\n \"vbv_size_bits\": 2500000,\n \"vbv_fullness_bits\": 2250000,\n \"entropy_coder\": \"cabac\",\n \"profile\": \"high\",\n \"preset\": \"veryfast\",\n },\n },\n },\n {\n \"key\": \"audio-stream0\",\n \"audio_stream\": {\n \"codec\": \"aac\",\n \"bitrate_bps\": 64000,\n \"channel_count\": 2,\n \"channel_layouts\": [\n \"fl\",\n \"fr\",\n ],\n \"sample_rate_hertz\": 48000,\n },\n },\n ],\n \"mux_streams\": [\n {\n \"key\": \"sd\",\n \"file_name\": \"sd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"hd\",\n \"file_name\": \"hd.mp4\",\n \"container\": \"mp4\",\n \"elementary_streams\": [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"media-sd\",\n \"file_name\": \"media-sd.ts\",\n \"container\": \"ts\",\n \"elementary_streams\": [\n \"video-stream0\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"media-hd\",\n \"file_name\": \"media-hd.ts\",\n \"container\": \"ts\",\n \"elementary_streams\": [\n \"video-stream1\",\n \"audio-stream0\",\n ],\n },\n {\n \"key\": \"video-only-sd\",\n \"file_name\": \"video-only-sd.m4s\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"video-stream0\"],\n },\n {\n \"key\": \"video-only-hd\",\n \"file_name\": \"video-only-hd.m4s\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"video-stream1\"],\n },\n {\n \"key\": \"audio-only\",\n \"file_name\": \"audio-only.m4s\",\n \"container\": \"fmp4\",\n \"elementary_streams\": [\"audio-stream0\"],\n },\n ],\n \"manifests\": [\n {\n \"file_name\": \"manifest.m3u8\",\n \"type\": \"HLS\",\n \"mux_streams\": [\n \"media-sd\",\n \"media-hd\",\n ],\n },\n {\n \"file_name\": \"manifest.mpd\",\n \"type\": \"DASH\",\n \"mux_streams\": [\n \"video-only-sd\",\n \"video-only-hd\",\n \"audio-only\",\n ],\n },\n ],\n \"output\": {\n \"uri\": default.name.apply(lambda name: f\"gs://{name}/outputs/\"),\n },\n },\n labels={\n \"label\": \"key\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Storage.Bucket(\"default\", new()\n {\n Name = \"transcoder-job\",\n Location = \"US\",\n ForceDestroy = true,\n UniformBucketLevelAccess = true,\n PublicAccessPrevention = \"enforced\",\n });\n\n var exampleMp4 = new Gcp.Storage.BucketObject(\"example_mp4\", new()\n {\n Name = \"example.mp4\",\n Source = new FileAsset(\"./test-fixtures/example.mp4\"),\n Bucket = @default.Name,\n });\n\n var defaultJob = new Gcp.Transcoder.Job(\"default\", new()\n {\n Location = \"us-central1\",\n Config = new Gcp.Transcoder.Inputs.JobConfigArgs\n {\n Inputs = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigInputArgs\n {\n Key = \"input0\",\n Uri = Output.Tuple(@default.Name, exampleMp4.Name).Apply(values =\u003e\n {\n var defaultName = values.Item1;\n var exampleMp4Name = values.Item2;\n return $\"gs://{defaultName}/{exampleMp4Name}\";\n }),\n },\n },\n EditLists = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigEditListArgs\n {\n Key = \"atom0\",\n StartTimeOffset = \"0s\",\n Inputs = new[]\n {\n \"input0\",\n },\n },\n },\n AdBreaks = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigAdBreakArgs\n {\n StartTimeOffset = \"3.500s\",\n },\n },\n ElementaryStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"video-stream0\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 640,\n HeightPixels = 360,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 550000,\n VbvFullnessBits = 495000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"video-stream1\",\n VideoStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamArgs\n {\n H264 = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamVideoStreamH264Args\n {\n WidthPixels = 1280,\n HeightPixels = 720,\n BitrateBps = 550000,\n FrameRate = 60,\n PixelFormat = \"yuv420p\",\n RateControlMode = \"vbr\",\n CrfLevel = 21,\n GopDuration = \"3s\",\n VbvSizeBits = 2500000,\n VbvFullnessBits = 2250000,\n EntropyCoder = \"cabac\",\n Profile = \"high\",\n Preset = \"veryfast\",\n },\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigElementaryStreamArgs\n {\n Key = \"audio-stream0\",\n AudioStream = new Gcp.Transcoder.Inputs.JobConfigElementaryStreamAudioStreamArgs\n {\n Codec = \"aac\",\n BitrateBps = 64000,\n ChannelCount = 2,\n ChannelLayouts = new[]\n {\n \"fl\",\n \"fr\",\n },\n SampleRateHertz = 48000,\n },\n },\n },\n MuxStreams = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"sd\",\n FileName = \"sd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream0\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"hd\",\n FileName = \"hd.mp4\",\n Container = \"mp4\",\n ElementaryStreams = new[]\n {\n \"video-stream1\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"media-sd\",\n FileName = \"media-sd.ts\",\n Container = \"ts\",\n ElementaryStreams = new[]\n {\n \"video-stream0\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"media-hd\",\n FileName = \"media-hd.ts\",\n Container = \"ts\",\n ElementaryStreams = new[]\n {\n \"video-stream1\",\n \"audio-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"video-only-sd\",\n FileName = \"video-only-sd.m4s\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"video-stream0\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"video-only-hd\",\n FileName = \"video-only-hd.m4s\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"video-stream1\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigMuxStreamArgs\n {\n Key = \"audio-only\",\n FileName = \"audio-only.m4s\",\n Container = \"fmp4\",\n ElementaryStreams = new[]\n {\n \"audio-stream0\",\n },\n },\n },\n Manifests = new[]\n {\n new Gcp.Transcoder.Inputs.JobConfigManifestArgs\n {\n FileName = \"manifest.m3u8\",\n Type = \"HLS\",\n MuxStreams = new[]\n {\n \"media-sd\",\n \"media-hd\",\n },\n },\n new Gcp.Transcoder.Inputs.JobConfigManifestArgs\n {\n FileName = \"manifest.mpd\",\n Type = \"DASH\",\n MuxStreams = new[]\n {\n \"video-only-sd\",\n \"video-only-hd\",\n \"audio-only\",\n },\n },\n },\n Output = new Gcp.Transcoder.Inputs.JobConfigOutputArgs\n {\n Uri = @default.Name.Apply(name =\u003e $\"gs://{name}/outputs/\"),\n },\n },\n Labels = \n {\n { \"label\", \"key\" },\n },\n });\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/transcoder\"\n\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.NewBucket(ctx, \"default\", \u0026storage.BucketArgs{\n\t\t\tName: pulumi.String(\"transcoder-job\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t\tForceDestroy: pulumi.Bool(true),\n\t\t\tUniformBucketLevelAccess: pulumi.Bool(true),\n\t\t\tPublicAccessPrevention: pulumi.String(\"enforced\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texampleMp4, err := storage.NewBucketObject(ctx, \"example_mp4\", \u0026storage.BucketObjectArgs{\n\t\t\tName: pulumi.String(\"example.mp4\"),\n\t\t\tSource: pulumi.NewFileAsset(\"./test-fixtures/example.mp4\"),\n\t\t\tBucket: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = transcoder.NewJob(ctx, \"default\", \u0026transcoder.JobArgs{\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tConfig: \u0026transcoder.JobConfigArgs{\n\t\t\t\tInputs: transcoder.JobConfigInputTypeArray{\n\t\t\t\t\t\u0026transcoder.JobConfigInputTypeArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"input0\"),\n\t\t\t\t\t\tUri: pulumi.All(_default.Name, exampleMp4.Name).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\t\tdefaultName := _args[0].(string)\n\t\t\t\t\t\t\texampleMp4Name := _args[1].(string)\n\t\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/%v\", defaultName, exampleMp4Name), nil\n\t\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tEditLists: transcoder.JobConfigEditListArray{\n\t\t\t\t\t\u0026transcoder.JobConfigEditListArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"atom0\"),\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"0s\"),\n\t\t\t\t\t\tInputs: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"input0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAdBreaks: transcoder.JobConfigAdBreakArray{\n\t\t\t\t\t\u0026transcoder.JobConfigAdBreakArgs{\n\t\t\t\t\t\tStartTimeOffset: pulumi.String(\"3.500s\"),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tElementaryStreams: transcoder.JobConfigElementaryStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream0\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(640),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(360),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(495000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-stream1\"),\n\t\t\t\t\t\tVideoStream: \u0026transcoder.JobConfigElementaryStreamVideoStreamArgs{\n\t\t\t\t\t\t\tH264: \u0026transcoder.JobConfigElementaryStreamVideoStreamH264Args{\n\t\t\t\t\t\t\t\tWidthPixels: pulumi.Int(1280),\n\t\t\t\t\t\t\t\tHeightPixels: pulumi.Int(720),\n\t\t\t\t\t\t\t\tBitrateBps: pulumi.Int(550000),\n\t\t\t\t\t\t\t\tFrameRate: pulumi.Int(60),\n\t\t\t\t\t\t\t\tPixelFormat: pulumi.String(\"yuv420p\"),\n\t\t\t\t\t\t\t\tRateControlMode: pulumi.String(\"vbr\"),\n\t\t\t\t\t\t\t\tCrfLevel: pulumi.Int(21),\n\t\t\t\t\t\t\t\tGopDuration: pulumi.String(\"3s\"),\n\t\t\t\t\t\t\t\tVbvSizeBits: pulumi.Int(2500000),\n\t\t\t\t\t\t\t\tVbvFullnessBits: pulumi.Int(2250000),\n\t\t\t\t\t\t\t\tEntropyCoder: pulumi.String(\"cabac\"),\n\t\t\t\t\t\t\t\tProfile: pulumi.String(\"high\"),\n\t\t\t\t\t\t\t\tPreset: pulumi.String(\"veryfast\"),\n\t\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\u0026transcoder.JobConfigElementaryStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\tAudioStream: \u0026transcoder.JobConfigElementaryStreamAudioStreamArgs{\n\t\t\t\t\t\t\tCodec: pulumi.String(\"aac\"),\n\t\t\t\t\t\t\tBitrateBps: pulumi.Int(64000),\n\t\t\t\t\t\t\tChannelCount: pulumi.Int(2),\n\t\t\t\t\t\t\tChannelLayouts: pulumi.StringArray{\n\t\t\t\t\t\t\t\tpulumi.String(\"fl\"),\n\t\t\t\t\t\t\t\tpulumi.String(\"fr\"),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tSampleRateHertz: pulumi.Int(48000),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMuxStreams: transcoder.JobConfigMuxStreamArray{\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"sd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"sd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream0\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"hd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"hd.mp4\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"mp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream1\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"media-sd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"media-sd.ts\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"ts\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream0\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"media-hd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"media-hd.ts\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"ts\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream1\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-only-sd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"video-only-sd.m4s\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"video-only-hd\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"video-only-hd.m4s\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-stream1\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigMuxStreamArgs{\n\t\t\t\t\t\tKey: pulumi.String(\"audio-only\"),\n\t\t\t\t\t\tFileName: pulumi.String(\"audio-only.m4s\"),\n\t\t\t\t\t\tContainer: pulumi.String(\"fmp4\"),\n\t\t\t\t\t\tElementaryStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"audio-stream0\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tManifests: transcoder.JobConfigManifestArray{\n\t\t\t\t\t\u0026transcoder.JobConfigManifestArgs{\n\t\t\t\t\t\tFileName: pulumi.String(\"manifest.m3u8\"),\n\t\t\t\t\t\tType: pulumi.String(\"HLS\"),\n\t\t\t\t\t\tMuxStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"media-sd\"),\n\t\t\t\t\t\t\tpulumi.String(\"media-hd\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\t\u0026transcoder.JobConfigManifestArgs{\n\t\t\t\t\t\tFileName: pulumi.String(\"manifest.mpd\"),\n\t\t\t\t\t\tType: pulumi.String(\"DASH\"),\n\t\t\t\t\t\tMuxStreams: pulumi.StringArray{\n\t\t\t\t\t\t\tpulumi.String(\"video-only-sd\"),\n\t\t\t\t\t\t\tpulumi.String(\"video-only-hd\"),\n\t\t\t\t\t\t\tpulumi.String(\"audio-only\"),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tOutput: \u0026transcoder.JobConfigOutputTypeArgs{\n\t\t\t\t\tUri: _default.Name.ApplyT(func(name string) (string, error) {\n\t\t\t\t\t\treturn fmt.Sprintf(\"gs://%v/outputs/\", name), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t},\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\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.transcoder.Job;\nimport com.pulumi.gcp.transcoder.JobArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigArgs;\nimport com.pulumi.gcp.transcoder.inputs.JobConfigOutputArgs;\nimport com.pulumi.asset.FileAsset;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Bucket(\"default\", BucketArgs.builder()\n .name(\"transcoder-job\")\n .location(\"US\")\n .forceDestroy(true)\n .uniformBucketLevelAccess(true)\n .publicAccessPrevention(\"enforced\")\n .build());\n\n var exampleMp4 = new BucketObject(\"exampleMp4\", BucketObjectArgs.builder()\n .name(\"example.mp4\")\n .source(new FileAsset(\"./test-fixtures/example.mp4\"))\n .bucket(default_.name())\n .build());\n\n var defaultJob = new Job(\"defaultJob\", JobArgs.builder()\n .location(\"us-central1\")\n .config(JobConfigArgs.builder()\n .inputs(JobConfigInputArgs.builder()\n .key(\"input0\")\n .uri(Output.tuple(default_.name(), exampleMp4.name()).applyValue(values -\u003e {\n var defaultName = values.t1;\n var exampleMp4Name = values.t2;\n return String.format(\"gs://%s/%s\", defaultName,exampleMp4Name);\n }))\n .build())\n .editLists(JobConfigEditListArgs.builder()\n .key(\"atom0\")\n .startTimeOffset(\"0s\")\n .inputs(\"input0\")\n .build())\n .adBreaks(JobConfigAdBreakArgs.builder()\n .startTimeOffset(\"3.500s\")\n .build())\n .elementaryStreams( \n JobConfigElementaryStreamArgs.builder()\n .key(\"video-stream0\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(640)\n .heightPixels(360)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(550000)\n .vbvFullnessBits(495000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"video-stream1\")\n .videoStream(JobConfigElementaryStreamVideoStreamArgs.builder()\n .h264(JobConfigElementaryStreamVideoStreamH264Args.builder()\n .widthPixels(1280)\n .heightPixels(720)\n .bitrateBps(550000)\n .frameRate(60)\n .pixelFormat(\"yuv420p\")\n .rateControlMode(\"vbr\")\n .crfLevel(21)\n .gopDuration(\"3s\")\n .vbvSizeBits(2500000)\n .vbvFullnessBits(2250000)\n .entropyCoder(\"cabac\")\n .profile(\"high\")\n .preset(\"veryfast\")\n .build())\n .build())\n .build(),\n JobConfigElementaryStreamArgs.builder()\n .key(\"audio-stream0\")\n .audioStream(JobConfigElementaryStreamAudioStreamArgs.builder()\n .codec(\"aac\")\n .bitrateBps(64000)\n .channelCount(2)\n .channelLayouts( \n \"fl\",\n \"fr\")\n .sampleRateHertz(48000)\n .build())\n .build())\n .muxStreams( \n JobConfigMuxStreamArgs.builder()\n .key(\"sd\")\n .fileName(\"sd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream0\",\n \"audio-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"hd\")\n .fileName(\"hd.mp4\")\n .container(\"mp4\")\n .elementaryStreams( \n \"video-stream1\",\n \"audio-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"media-sd\")\n .fileName(\"media-sd.ts\")\n .container(\"ts\")\n .elementaryStreams( \n \"video-stream0\",\n \"audio-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"media-hd\")\n .fileName(\"media-hd.ts\")\n .container(\"ts\")\n .elementaryStreams( \n \"video-stream1\",\n \"audio-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"video-only-sd\")\n .fileName(\"video-only-sd.m4s\")\n .container(\"fmp4\")\n .elementaryStreams(\"video-stream0\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"video-only-hd\")\n .fileName(\"video-only-hd.m4s\")\n .container(\"fmp4\")\n .elementaryStreams(\"video-stream1\")\n .build(),\n JobConfigMuxStreamArgs.builder()\n .key(\"audio-only\")\n .fileName(\"audio-only.m4s\")\n .container(\"fmp4\")\n .elementaryStreams(\"audio-stream0\")\n .build())\n .manifests( \n JobConfigManifestArgs.builder()\n .fileName(\"manifest.m3u8\")\n .type(\"HLS\")\n .muxStreams( \n \"media-sd\",\n \"media-hd\")\n .build(),\n JobConfigManifestArgs.builder()\n .fileName(\"manifest.mpd\")\n .type(\"DASH\")\n .muxStreams( \n \"video-only-sd\",\n \"video-only-hd\",\n \"audio-only\")\n .build())\n .output(JobConfigOutputArgs.builder()\n .uri(default_.name().applyValue(name -\u003e String.format(\"gs://%s/outputs/\", name)))\n .build())\n .build())\n .labels(Map.of(\"label\", \"key\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:storage:Bucket\n properties:\n name: transcoder-job\n location: US\n forceDestroy: true\n uniformBucketLevelAccess: true\n publicAccessPrevention: enforced\n exampleMp4:\n type: gcp:storage:BucketObject\n name: example_mp4\n properties:\n name: example.mp4\n source:\n fn::FileAsset: ./test-fixtures/example.mp4\n bucket: ${default.name}\n defaultJob:\n type: gcp:transcoder:Job\n name: default\n properties:\n location: us-central1\n config:\n inputs:\n - key: input0\n uri: gs://${default.name}/${exampleMp4.name}\n editLists:\n - key: atom0\n startTimeOffset: 0s\n inputs:\n - input0\n adBreaks:\n - startTimeOffset: 3.500s\n elementaryStreams:\n - key: video-stream0\n videoStream:\n h264:\n widthPixels: 640\n heightPixels: 360\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 550000\n vbvFullnessBits: 495000\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: video-stream1\n videoStream:\n h264:\n widthPixels: 1280\n heightPixels: 720\n bitrateBps: 550000\n frameRate: 60\n pixelFormat: yuv420p\n rateControlMode: vbr\n crfLevel: 21\n gopDuration: 3s\n vbvSizeBits: 2.5e+06\n vbvFullnessBits: 2.25e+06\n entropyCoder: cabac\n profile: high\n preset: veryfast\n - key: audio-stream0\n audioStream:\n codec: aac\n bitrateBps: 64000\n channelCount: 2\n channelLayouts:\n - fl\n - fr\n sampleRateHertz: 48000\n muxStreams:\n - key: sd\n fileName: sd.mp4\n container: mp4\n elementaryStreams:\n - video-stream0\n - audio-stream0\n - key: hd\n fileName: hd.mp4\n container: mp4\n elementaryStreams:\n - video-stream1\n - audio-stream0\n - key: media-sd\n fileName: media-sd.ts\n container: ts\n elementaryStreams:\n - video-stream0\n - audio-stream0\n - key: media-hd\n fileName: media-hd.ts\n container: ts\n elementaryStreams:\n - video-stream1\n - audio-stream0\n - key: video-only-sd\n fileName: video-only-sd.m4s\n container: fmp4\n elementaryStreams:\n - video-stream0\n - key: video-only-hd\n fileName: video-only-hd.m4s\n container: fmp4\n elementaryStreams:\n - video-stream1\n - key: audio-only\n fileName: audio-only.m4s\n container: fmp4\n elementaryStreams:\n - audio-stream0\n manifests:\n - fileName: manifest.m3u8\n type: HLS\n muxStreams:\n - media-sd\n - media-hd\n - fileName: manifest.mpd\n type: DASH\n muxStreams:\n - video-only-sd\n - video-only-hd\n - audio-only\n output:\n uri: gs://${default.name}/outputs/\n labels:\n label: key\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nJob can be imported using any of these accepted formats:\n\n* `{{project}}/{{name}}`\n\n* `{{project}} {{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:transcoder/job:Job default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:transcoder/job:Job default \"{{project}} {{name}}\"\n```\n\n```sh\n$ pulumi import gcp:transcoder/job:Job default {{name}}\n```\n\n", "properties": { "config": { "$ref": "#/types/gcp:transcoder/JobConfig:JobConfig", @@ -286070,7 +286070,7 @@ } }, "gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview": { - "description": "FeatureView is representation of values that the FeatureOnlineStore will serve based on its syncConfig.\n\n\nTo get more information about FeatureOnlineStoreFeatureview, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featureOnlineStores.featureViews)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Featureonlinestore Featureview\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n});\nconst tf_test_dataset = new gcp.bigquery.Dataset(\"tf-test-dataset\", {\n datasetId: \"example_feature_view\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst tf_test_table = new gcp.bigquery.Table(\"tf-test-table\", {\n deletionProtection: false,\n datasetId: tf_test_dataset.datasetId,\n tableId: \"example_feature_view\",\n schema: ` [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n`,\n});\nconst featureview = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview\", {\n name: \"example_feature_view\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n bigQuerySource: {\n uri: pulumi.interpolate`bq://${tf_test_table.project}.${tf_test_table.datasetId}.${tf_test_table.tableId}`,\n entityIdColumns: [\"test_entity_column\"],\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n })\ntf_test_dataset = gcp.bigquery.Dataset(\"tf-test-dataset\",\n dataset_id=\"example_feature_view\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntf_test_table = gcp.bigquery.Table(\"tf-test-table\",\n deletion_protection=False,\n dataset_id=tf_test_dataset.dataset_id,\n table_id=\"example_feature_view\",\n schema=\"\"\" [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n\"\"\")\nfeatureview = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview\",\n name=\"example_feature_view\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n big_query_source={\n \"uri\": pulumi.Output.all(\n project=tf_test_table.project,\n dataset_id=tf_test_table.dataset_id,\n table_id=tf_test_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"entity_id_columns\": [\"test_entity_column\"],\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n });\n\n var tf_test_dataset = new Gcp.BigQuery.Dataset(\"tf-test-dataset\", new()\n {\n DatasetId = \"example_feature_view\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var tf_test_table = new Gcp.BigQuery.Table(\"tf-test-table\", new()\n {\n DeletionProtection = false,\n DatasetId = tf_test_dataset.DatasetId,\n TableId = \"example_feature_view\",\n Schema = @\" [\n {\n \"\"name\"\": \"\"entity_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"Test default entity_id\"\"\n },\n {\n \"\"name\"\": \"\"test_entity_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"test secondary entity column\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"description\"\": \"\"Default timestamp value\"\"\n }\n]\n\",\n });\n\n var featureview = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview\", new()\n {\n Name = \"example_feature_view\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs\n {\n Uri = Output.Tuple(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n EntityIdColumns = new[]\n {\n \"test_entity_column\",\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"tf-test-dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"tf-test-table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: tf_test_dataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view\"),\n\t\t\tSchema: pulumi.String(` [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tBigQuerySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs{\n\t\t\t\tUri: pulumi.All(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test_entity_column\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build());\n\n var tf_test_dataset = new Dataset(\"tf-test-dataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var tf_test_table = new Table(\"tf-test-table\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(tf_test_dataset.datasetId())\n .tableId(\"example_feature_view\")\n .schema(\"\"\"\n [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n \"\"\")\n .build());\n\n var featureview = new AiFeatureOnlineStoreFeatureview(\"featureview\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .bigQuerySource(AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs.builder()\n .uri(Output.tuple(tf_test_table.project(), tf_test_table.datasetId(), tf_test_table.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .entityIdColumns(\"test_entity_column\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n tf-test-dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_feature_view\n friendlyName: test\n description: This is a test description\n location: US\n tf-test-table:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"tf-test-dataset\"].datasetId}\n tableId: example_feature_view\n schema: |2\n [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n ]\n featureview:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n properties:\n name: example_feature_view\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n bigQuerySource:\n uri: bq://${[\"tf-test-table\"].project}.${[\"tf-test-table\"].datasetId}.${[\"tf-test-table\"].tableId}\n entityIdColumns:\n - test_entity_column\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview Feature Registry\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view_feature_registry\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n});\nconst sampleDataset = new gcp.bigquery.Dataset(\"sample_dataset\", {\n datasetId: \"example_feature_view_feature_registry\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst sampleTable = new gcp.bigquery.Table(\"sample_table\", {\n deletionProtection: false,\n datasetId: sampleDataset.datasetId,\n tableId: \"example_feature_view_feature_registry\",\n schema: `[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`,\n});\nconst sampleFeatureGroup = new gcp.vertex.AiFeatureGroup(\"sample_feature_group\", {\n name: \"example_feature_view_feature_registry\",\n description: \"A sample feature group\",\n region: \"us-central1\",\n labels: {\n \"label-one\": \"value-one\",\n },\n bigQuery: {\n bigQuerySource: {\n inputUri: pulumi.interpolate`bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}`,\n },\n entityIdColumns: [\"feature_id\"],\n },\n});\nconst sampleFeature = new gcp.vertex.AiFeatureGroupFeature(\"sample_feature\", {\n name: \"example_feature_view_feature_registry\",\n region: \"us-central1\",\n featureGroup: sampleFeatureGroup.name,\n description: \"A sample feature\",\n labels: {\n \"label-one\": \"value-one\",\n },\n});\nconst featureviewFeatureregistry = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\", {\n name: \"example_feature_view_feature_registry\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n featureRegistrySource: {\n featureGroups: [{\n featureGroupId: sampleFeatureGroup.name,\n featureIds: [sampleFeature.name],\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view_feature_registry\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n })\nsample_dataset = gcp.bigquery.Dataset(\"sample_dataset\",\n dataset_id=\"example_feature_view_feature_registry\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\nsample_table = gcp.bigquery.Table(\"sample_table\",\n deletion_protection=False,\n dataset_id=sample_dataset.dataset_id,\n table_id=\"example_feature_view_feature_registry\",\n schema=\"\"\"[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n\"\"\")\nsample_feature_group = gcp.vertex.AiFeatureGroup(\"sample_feature_group\",\n name=\"example_feature_view_feature_registry\",\n description=\"A sample feature group\",\n region=\"us-central1\",\n labels={\n \"label-one\": \"value-one\",\n },\n big_query={\n \"big_query_source\": {\n \"input_uri\": pulumi.Output.all(\n project=sample_table.project,\n dataset_id=sample_table.dataset_id,\n table_id=sample_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n },\n \"entity_id_columns\": [\"feature_id\"],\n })\nsample_feature = gcp.vertex.AiFeatureGroupFeature(\"sample_feature\",\n name=\"example_feature_view_feature_registry\",\n region=\"us-central1\",\n feature_group=sample_feature_group.name,\n description=\"A sample feature\",\n labels={\n \"label-one\": \"value-one\",\n })\nfeatureview_featureregistry = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\",\n name=\"example_feature_view_feature_registry\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n feature_registry_source={\n \"feature_groups\": [{\n \"feature_group_id\": sample_feature_group.name,\n \"feature_ids\": [sample_feature.name],\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n });\n\n var sampleDataset = new Gcp.BigQuery.Dataset(\"sample_dataset\", new()\n {\n DatasetId = \"example_feature_view_feature_registry\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var sampleTable = new Gcp.BigQuery.Table(\"sample_table\", new()\n {\n DeletionProtection = false,\n DatasetId = sampleDataset.DatasetId,\n TableId = \"example_feature_view_feature_registry\",\n Schema = @\"[\n {\n \"\"name\"\": \"\"feature_id\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"example_feature_view_feature_registry\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"mode\"\": \"\"NULLABLE\"\"\n }\n]\n\",\n });\n\n var sampleFeatureGroup = new Gcp.Vertex.AiFeatureGroup(\"sample_feature_group\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Description = \"A sample feature group\",\n Region = \"us-central1\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n BigQuery = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryArgs\n {\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureGroupBigQueryBigQuerySourceArgs\n {\n InputUri = Output.Tuple(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n },\n EntityIdColumns = new[]\n {\n \"feature_id\",\n },\n },\n });\n\n var sampleFeature = new Gcp.Vertex.AiFeatureGroupFeature(\"sample_feature\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Region = \"us-central1\",\n FeatureGroup = sampleFeatureGroup.Name,\n Description = \"A sample feature\",\n Labels = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var featureviewFeatureregistry = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview_featureregistry\", new()\n {\n Name = \"example_feature_view_feature_registry\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n FeatureRegistrySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs\n {\n FeatureGroups = new[]\n {\n new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs\n {\n FeatureGroupId = sampleFeatureGroup.Name,\n FeatureIds = new[]\n {\n sampleFeature.Name,\n },\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleDataset, err := bigquery.NewDataset(ctx, \"sample_dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleTable, err := bigquery.NewTable(ctx, \"sample_table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: sampleDataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tSchema: pulumi.String(`[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeatureGroup, err := vertex.NewAiFeatureGroup(ctx, \"sample_feature_group\", \u0026vertex.AiFeatureGroupArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tDescription: pulumi.String(\"A sample feature group\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t\tBigQuery: \u0026vertex.AiFeatureGroupBigQueryArgs{\n\t\t\t\tBigQuerySource: \u0026vertex.AiFeatureGroupBigQueryBigQuerySourceArgs{\n\t\t\t\t\tInputUri: pulumi.All(sampleTable.Project, sampleTable.DatasetId, sampleTable.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\t},\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"feature_id\"),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsampleFeature, err := vertex.NewAiFeatureGroupFeature(ctx, \"sample_feature\", \u0026vertex.AiFeatureGroupFeatureArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureGroup: sampleFeatureGroup.Name,\n\t\t\tDescription: pulumi.String(\"A sample feature\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview_featureregistry\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_feature_registry\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tFeatureRegistrySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs{\n\t\t\t\tFeatureGroups: vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArray{\n\t\t\t\t\t\u0026vertex.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs{\n\t\t\t\t\t\tFeatureGroupId: sampleFeatureGroup.Name,\n\t\t\t\t\t\tFeatureIds: pulumi.StringArray{\n\t\t\t\t\t\t\tsampleFeature.Name,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroup;\nimport com.pulumi.gcp.vertex.AiFeatureGroupArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureGroupBigQueryBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeature;\nimport com.pulumi.gcp.vertex.AiFeatureGroupFeatureArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .build());\n\n var sampleDataset = new Dataset(\"sampleDataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view_feature_registry\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var sampleTable = new Table(\"sampleTable\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(sampleDataset.datasetId())\n .tableId(\"example_feature_view_feature_registry\")\n .schema(\"\"\"\n[\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n]\n \"\"\")\n .build());\n\n var sampleFeatureGroup = new AiFeatureGroup(\"sampleFeatureGroup\", AiFeatureGroupArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .description(\"A sample feature group\")\n .region(\"us-central1\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .bigQuery(AiFeatureGroupBigQueryArgs.builder()\n .bigQuerySource(AiFeatureGroupBigQueryBigQuerySourceArgs.builder()\n .inputUri(Output.tuple(sampleTable.project(), sampleTable.datasetId(), sampleTable.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .build())\n .entityIdColumns(\"feature_id\")\n .build())\n .build());\n\n var sampleFeature = new AiFeatureGroupFeature(\"sampleFeature\", AiFeatureGroupFeatureArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .region(\"us-central1\")\n .featureGroup(sampleFeatureGroup.name())\n .description(\"A sample feature\")\n .labels(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var featureviewFeatureregistry = new AiFeatureOnlineStoreFeatureview(\"featureviewFeatureregistry\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view_feature_registry\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .featureRegistrySource(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceArgs.builder()\n .featureGroups(AiFeatureOnlineStoreFeatureviewFeatureRegistrySourceFeatureGroupArgs.builder()\n .featureGroupId(sampleFeatureGroup.name())\n .featureIds(sampleFeature.name())\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view_feature_registry\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: example_feature_view_feature_registry\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: example_feature_view_feature_registry\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_feature_view_feature_registry\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n sampleFeatureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: sample_feature_group\n properties:\n name: example_feature_view_feature_registry\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleFeature:\n type: gcp:vertex:AiFeatureGroupFeature\n name: sample_feature\n properties:\n name: example_feature_view_feature_registry\n region: us-central1\n featureGroup: ${sampleFeatureGroup.name}\n description: A sample feature\n labels:\n label-one: value-one\n featureviewFeatureregistry:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: featureview_featureregistry\n properties:\n name: example_feature_view_feature_registry\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n featureRegistrySource:\n featureGroups:\n - featureGroupId: ${sampleFeatureGroup.name}\n featureIds:\n - ${sampleFeature.name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview Cross Project\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\nimport * as time from \"@pulumi/time\";\n\nconst testProject = gcp.organizations.getProject({});\nconst project = new gcp.organizations.Project(\"project\", {\n projectId: \"tf-test_11380\",\n name: \"tf-test_35305\",\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_11380\",\n name=\"tf-test_35305\",\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_11380\",\n Name = \"tf-test_35305\",\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_11380\"),\n\t\t\tName: pulumi.String(\"tf-test_35305\"),\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_11380\")\n .name(\"tf-test_35305\")\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_11380\n name: tf-test_35305\n orgId: '123456789'\n billingAccount: 000000-0000000-0000000-000000\n deletionPolicy: DELETE\n wait60Seconds:\n type: time:sleep\n name: wait_60_seconds\n properties:\n createDuration: 60s\n options:\n dependsOn:\n - ${project}\n wait30Seconds:\n type: time:sleep\n name: wait_30_seconds\n properties:\n createDuration: 30s\n options:\n dependsOn:\n - ${viewer}\n vertexai:\n type: gcp:projects:Service\n properties:\n service: aiplatform.googleapis.com\n project: ${project.projectId}\n disableOnDestroy: false # Needed for CI tests for permissions to propagate, should not be needed for actual usage\n options:\n dependsOn:\n - ${wait60Seconds}\n viewer:\n type: gcp:bigquery:DatasetIamMember\n properties:\n project: ${testProject.projectId}\n datasetId: ${sampleDataset.datasetId}\n role: roles/bigquery.dataViewer\n member: serviceAccount:service-${project.number}@gcp-sa-aiplatform.iam.gserviceaccount.com\n options:\n dependsOn:\n - ${featureonlinestore}\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_cross_project_featureview\n project: ${project.projectId}\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n options:\n dependsOn:\n - ${vertexai}\n sampleDataset:\n type: gcp:bigquery:Dataset\n name: sample_dataset\n properties:\n datasetId: example_cross_project_featureview\n friendlyName: test\n description: This is a test description\n location: US\n sampleTable:\n type: gcp:bigquery:Table\n name: sample_table\n properties:\n deletionProtection: false\n datasetId: ${sampleDataset.datasetId}\n tableId: example_cross_project_featureview\n schema: |\n [\n {\n \"name\": \"feature_id\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"example_cross_project_featureview\",\n \"type\": \"STRING\",\n \"mode\": \"NULLABLE\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"type\": \"TIMESTAMP\",\n \"mode\": \"NULLABLE\"\n }\n ]\n sampleFeatureGroup:\n type: gcp:vertex:AiFeatureGroup\n name: sample_feature_group\n properties:\n name: example_cross_project_featureview\n description: A sample feature group\n region: us-central1\n labels:\n label-one: value-one\n bigQuery:\n bigQuerySource:\n inputUri: bq://${sampleTable.project}.${sampleTable.datasetId}.${sampleTable.tableId}\n entityIdColumns:\n - feature_id\n sampleFeature:\n type: gcp:vertex:AiFeatureGroupFeature\n name: sample_feature\n properties:\n name: example_cross_project_featureview\n region: us-central1\n featureGroup: ${sampleFeatureGroup.name}\n description: A sample feature\n labels:\n label-one: value-one\n crossProjectFeatureview:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: cross_project_featureview\n properties:\n name: example_cross_project_featureview\n project: ${project.projectId}\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n featureRegistrySource:\n featureGroups:\n - featureGroupId: ${sampleFeatureGroup.name}\n featureIds:\n - ${sampleFeature.name}\n projectNumber: ${testProject.number}\n options:\n dependsOn:\n - ${vertexai}\n - ${wait30Seconds}\nvariables:\n testProject:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vertex Ai Featureonlinestore Featureview With Vector Search\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view_vector_search\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n embeddingManagement: {\n enabled: true,\n },\n});\nconst tf_test_dataset = new gcp.bigquery.Dataset(\"tf-test-dataset\", {\n datasetId: \"example_feature_view_vector_search\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst tf_test_table = new gcp.bigquery.Table(\"tf-test-table\", {\n deletionProtection: false,\n datasetId: tf_test_dataset.datasetId,\n tableId: \"example_feature_view_vector_search\",\n schema: `[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n`,\n});\nconst featureviewVectorSearch = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\", {\n name: \"example_feature_view_vector_search\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n bigQuerySource: {\n uri: pulumi.interpolate`bq://${tf_test_table.project}.${tf_test_table.datasetId}.${tf_test_table.tableId}`,\n entityIdColumns: [\"test_entity_column\"],\n },\n vectorSearchConfig: {\n embeddingColumn: \"embedding\",\n filterColumns: [\"country\"],\n crowdingColumn: \"test_crowding_column\",\n distanceMeasureType: \"DOT_PRODUCT_DISTANCE\",\n treeAhConfig: {\n leafNodeEmbeddingCount: \"1000\",\n },\n embeddingDimension: 2,\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view_vector_search\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n },\n embedding_management={\n \"enabled\": True,\n })\ntf_test_dataset = gcp.bigquery.Dataset(\"tf-test-dataset\",\n dataset_id=\"example_feature_view_vector_search\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntf_test_table = gcp.bigquery.Table(\"tf-test-table\",\n deletion_protection=False,\n dataset_id=tf_test_dataset.dataset_id,\n table_id=\"example_feature_view_vector_search\",\n schema=\"\"\"[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n\"\"\")\nfeatureview_vector_search = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\",\n name=\"example_feature_view_vector_search\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n big_query_source={\n \"uri\": pulumi.Output.all(\n project=tf_test_table.project,\n dataset_id=tf_test_table.dataset_id,\n table_id=tf_test_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"entity_id_columns\": [\"test_entity_column\"],\n },\n vector_search_config={\n \"embedding_column\": \"embedding\",\n \"filter_columns\": [\"country\"],\n \"crowding_column\": \"test_crowding_column\",\n \"distance_measure_type\": \"DOT_PRODUCT_DISTANCE\",\n \"tree_ah_config\": {\n \"leaf_node_embedding_count\": \"1000\",\n },\n \"embedding_dimension\": 2,\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view_vector_search\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n EmbeddingManagement = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreEmbeddingManagementArgs\n {\n Enabled = true,\n },\n });\n\n var tf_test_dataset = new Gcp.BigQuery.Dataset(\"tf-test-dataset\", new()\n {\n DatasetId = \"example_feature_view_vector_search\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var tf_test_table = new Gcp.BigQuery.Table(\"tf-test-table\", new()\n {\n DeletionProtection = false,\n DatasetId = tf_test_dataset.DatasetId,\n TableId = \"example_feature_view_vector_search\",\n Schema = @\"[\n{\n \"\"name\"\": \"\"test_primary_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"primary test id\"\"\n},\n{\n \"\"name\"\": \"\"embedding\"\",\n \"\"mode\"\": \"\"REPEATED\"\",\n \"\"type\"\": \"\"FLOAT\"\",\n \"\"description\"\": \"\"embedding column for primary_id column\"\"\n},\n{\n \"\"name\"\": \"\"country\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"country\"\"\n},\n{\n \"\"name\"\": \"\"test_crowding_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"INTEGER\"\",\n \"\"description\"\": \"\"test crowding column\"\"\n},\n{\n \"\"name\"\": \"\"entity_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"Test default entity_id\"\"\n},\n{\n \"\"name\"\": \"\"test_entity_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"test secondary entity column\"\"\n},\n{\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"description\"\": \"\"Default timestamp value\"\"\n}\n]\n\",\n });\n\n var featureviewVectorSearch = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview_vector_search\", new()\n {\n Name = \"example_feature_view_vector_search\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs\n {\n Uri = Output.Tuple(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n EntityIdColumns = new[]\n {\n \"test_entity_column\",\n },\n },\n VectorSearchConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs\n {\n EmbeddingColumn = \"embedding\",\n FilterColumns = new[]\n {\n \"country\",\n },\n CrowdingColumn = \"test_crowding_column\",\n DistanceMeasureType = \"DOT_PRODUCT_DISTANCE\",\n TreeAhConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs\n {\n LeafNodeEmbeddingCount = \"1000\",\n },\n EmbeddingDimension = 2,\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t\tEmbeddingManagement: \u0026vertex.AiFeatureOnlineStoreEmbeddingManagementArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewDataset(ctx, \"tf-test-dataset\", \u0026bigquery.DatasetArgs{\n\t\t\tDatasetId: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tFriendlyName: pulumi.String(\"test\"),\n\t\t\tDescription: pulumi.String(\"This is a test description\"),\n\t\t\tLocation: pulumi.String(\"US\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = bigquery.NewTable(ctx, \"tf-test-table\", \u0026bigquery.TableArgs{\n\t\t\tDeletionProtection: pulumi.Bool(false),\n\t\t\tDatasetId: tf_test_dataset.DatasetId,\n\t\t\tTableId: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tSchema: pulumi.String(`[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n`),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vertex.NewAiFeatureOnlineStoreFeatureview(ctx, \"featureview_vector_search\", \u0026vertex.AiFeatureOnlineStoreFeatureviewArgs{\n\t\t\tName: pulumi.String(\"example_feature_view_vector_search\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tFeatureOnlineStore: featureonlinestore.Name,\n\t\t\tSyncConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs{\n\t\t\t\tCron: pulumi.String(\"0 0 * * *\"),\n\t\t\t},\n\t\t\tBigQuerySource: \u0026vertex.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs{\n\t\t\t\tUri: pulumi.All(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).ApplyT(func(_args []interface{}) (string, error) {\n\t\t\t\t\tproject := _args[0].(string)\n\t\t\t\t\tdatasetId := _args[1].(string)\n\t\t\t\t\ttableId := _args[2].(string)\n\t\t\t\t\treturn fmt.Sprintf(\"bq://%v.%v.%v\", project, datasetId, tableId), nil\n\t\t\t\t}).(pulumi.StringOutput),\n\t\t\t\tEntityIdColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"test_entity_column\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tVectorSearchConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs{\n\t\t\t\tEmbeddingColumn: pulumi.String(\"embedding\"),\n\t\t\t\tFilterColumns: pulumi.StringArray{\n\t\t\t\t\tpulumi.String(\"country\"),\n\t\t\t\t},\n\t\t\t\tCrowdingColumn: pulumi.String(\"test_crowding_column\"),\n\t\t\t\tDistanceMeasureType: pulumi.String(\"DOT_PRODUCT_DISTANCE\"),\n\t\t\t\tTreeAhConfig: \u0026vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs{\n\t\t\t\t\tLeafNodeEmbeddingCount: pulumi.String(\"1000\"),\n\t\t\t\t},\n\t\t\t\tEmbeddingDimension: pulumi.Int(2),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStore;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreEmbeddingManagementArgs;\nimport com.pulumi.gcp.bigquery.Dataset;\nimport com.pulumi.gcp.bigquery.DatasetArgs;\nimport com.pulumi.gcp.bigquery.Table;\nimport com.pulumi.gcp.bigquery.TableArgs;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureview;\nimport com.pulumi.gcp.vertex.AiFeatureOnlineStoreFeatureviewArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs;\nimport com.pulumi.gcp.vertex.inputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs;\nimport com.pulumi.gcp.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetProjectArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var featureonlinestore = new AiFeatureOnlineStore(\"featureonlinestore\", AiFeatureOnlineStoreArgs.builder()\n .name(\"example_feature_view_vector_search\")\n .labels(Map.of(\"foo\", \"bar\"))\n .region(\"us-central1\")\n .bigtable(AiFeatureOnlineStoreBigtableArgs.builder()\n .autoScaling(AiFeatureOnlineStoreBigtableAutoScalingArgs.builder()\n .minNodeCount(1)\n .maxNodeCount(2)\n .cpuUtilizationTarget(80)\n .build())\n .build())\n .embeddingManagement(AiFeatureOnlineStoreEmbeddingManagementArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n var tf_test_dataset = new Dataset(\"tf-test-dataset\", DatasetArgs.builder()\n .datasetId(\"example_feature_view_vector_search\")\n .friendlyName(\"test\")\n .description(\"This is a test description\")\n .location(\"US\")\n .build());\n\n var tf_test_table = new Table(\"tf-test-table\", TableArgs.builder()\n .deletionProtection(false)\n .datasetId(tf_test_dataset.datasetId())\n .tableId(\"example_feature_view_vector_search\")\n .schema(\"\"\"\n[\n{\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n},\n{\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n},\n{\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n},\n{\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n},\n{\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n},\n{\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n},\n{\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n}\n]\n \"\"\")\n .build());\n\n var featureviewVectorSearch = new AiFeatureOnlineStoreFeatureview(\"featureviewVectorSearch\", AiFeatureOnlineStoreFeatureviewArgs.builder()\n .name(\"example_feature_view_vector_search\")\n .region(\"us-central1\")\n .featureOnlineStore(featureonlinestore.name())\n .syncConfig(AiFeatureOnlineStoreFeatureviewSyncConfigArgs.builder()\n .cron(\"0 0 * * *\")\n .build())\n .bigQuerySource(AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs.builder()\n .uri(Output.tuple(tf_test_table.project(), tf_test_table.datasetId(), tf_test_table.tableId()).applyValue(values -\u003e {\n var project = values.t1;\n var datasetId = values.t2;\n var tableId = values.t3;\n return String.format(\"bq://%s.%s.%s\", project,datasetId,tableId);\n }))\n .entityIdColumns(\"test_entity_column\")\n .build())\n .vectorSearchConfig(AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs.builder()\n .embeddingColumn(\"embedding\")\n .filterColumns(\"country\")\n .crowdingColumn(\"test_crowding_column\")\n .distanceMeasureType(\"DOT_PRODUCT_DISTANCE\")\n .treeAhConfig(AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs.builder()\n .leafNodeEmbeddingCount(\"1000\")\n .build())\n .embeddingDimension(\"2\")\n .build())\n .build());\n\n final var project = OrganizationsFunctions.getProject();\n\n }\n}\n```\n```yaml\nresources:\n featureonlinestore:\n type: gcp:vertex:AiFeatureOnlineStore\n properties:\n name: example_feature_view_vector_search\n labels:\n foo: bar\n region: us-central1\n bigtable:\n autoScaling:\n minNodeCount: 1\n maxNodeCount: 2\n cpuUtilizationTarget: 80\n embeddingManagement:\n enabled: true\n tf-test-dataset:\n type: gcp:bigquery:Dataset\n properties:\n datasetId: example_feature_view_vector_search\n friendlyName: test\n description: This is a test description\n location: US\n tf-test-table:\n type: gcp:bigquery:Table\n properties:\n deletionProtection: false\n datasetId: ${[\"tf-test-dataset\"].datasetId}\n tableId: example_feature_view_vector_search\n schema: |\n [\n {\n \"name\": \"test_primary_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"primary test id\"\n },\n {\n \"name\": \"embedding\",\n \"mode\": \"REPEATED\",\n \"type\": \"FLOAT\",\n \"description\": \"embedding column for primary_id column\"\n },\n {\n \"name\": \"country\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"country\"\n },\n {\n \"name\": \"test_crowding_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"INTEGER\",\n \"description\": \"test crowding column\"\n },\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n ]\n featureviewVectorSearch:\n type: gcp:vertex:AiFeatureOnlineStoreFeatureview\n name: featureview_vector_search\n properties:\n name: example_feature_view_vector_search\n region: us-central1\n featureOnlineStore: ${featureonlinestore.name}\n syncConfig:\n cron: 0 0 * * *\n bigQuerySource:\n uri: bq://${[\"tf-test-table\"].project}.${[\"tf-test-table\"].datasetId}.${[\"tf-test-table\"].tableId}\n entityIdColumns:\n - test_entity_column\n vectorSearchConfig:\n embeddingColumn: embedding\n filterColumns:\n - country\n crowdingColumn: test_crowding_column\n distanceMeasureType: DOT_PRODUCT_DISTANCE\n treeAhConfig:\n leafNodeEmbeddingCount: '1000'\n embeddingDimension: '2'\nvariables:\n project:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments: {}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nFeatureOnlineStoreFeatureview can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{region}}/featureOnlineStores/{{feature_online_store}}/featureViews/{{name}}`\n\n* `{{project}}/{{region}}/{{feature_online_store}}/{{name}}`\n\n* `{{region}}/{{feature_online_store}}/{{name}}`\n\n* `{{feature_online_store}}/{{name}}`\n\nWhen using the `pulumi import` command, FeatureOnlineStoreFeatureview can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default projects/{{project}}/locations/{{region}}/featureOnlineStores/{{feature_online_store}}/featureViews/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{project}}/{{region}}/{{feature_online_store}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{region}}/{{feature_online_store}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vertex/aiFeatureOnlineStoreFeatureview:AiFeatureOnlineStoreFeatureview default {{feature_online_store}}/{{name}}\n```\n\n", + "description": "FeatureView is representation of values that the FeatureOnlineStore will serve based on its syncConfig.\n\n\nTo get more information about FeatureOnlineStoreFeatureview, see:\n\n* [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1/projects.locations.featureOnlineStores.featureViews)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/vertex-ai/docs)\n\n## Example Usage\n\n### Vertex Ai Featureonlinestore Featureview\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst featureonlinestore = new gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\", {\n name: \"example_feature_view\",\n labels: {\n foo: \"bar\",\n },\n region: \"us-central1\",\n bigtable: {\n autoScaling: {\n minNodeCount: 1,\n maxNodeCount: 2,\n cpuUtilizationTarget: 80,\n },\n },\n});\nconst tf_test_dataset = new gcp.bigquery.Dataset(\"tf-test-dataset\", {\n datasetId: \"example_feature_view\",\n friendlyName: \"test\",\n description: \"This is a test description\",\n location: \"US\",\n});\nconst tf_test_table = new gcp.bigquery.Table(\"tf-test-table\", {\n deletionProtection: false,\n datasetId: tf_test_dataset.datasetId,\n tableId: \"example_feature_view\",\n schema: ` [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n`,\n});\nconst featureview = new gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview\", {\n name: \"example_feature_view\",\n region: \"us-central1\",\n featureOnlineStore: featureonlinestore.name,\n syncConfig: {\n cron: \"0 0 * * *\",\n },\n bigQuerySource: {\n uri: pulumi.interpolate`bq://${tf_test_table.project}.${tf_test_table.datasetId}.${tf_test_table.tableId}`,\n entityIdColumns: [\"test_entity_column\"],\n },\n});\nconst project = gcp.organizations.getProject({});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nfeatureonlinestore = gcp.vertex.AiFeatureOnlineStore(\"featureonlinestore\",\n name=\"example_feature_view\",\n labels={\n \"foo\": \"bar\",\n },\n region=\"us-central1\",\n bigtable={\n \"auto_scaling\": {\n \"min_node_count\": 1,\n \"max_node_count\": 2,\n \"cpu_utilization_target\": 80,\n },\n })\ntf_test_dataset = gcp.bigquery.Dataset(\"tf-test-dataset\",\n dataset_id=\"example_feature_view\",\n friendly_name=\"test\",\n description=\"This is a test description\",\n location=\"US\")\ntf_test_table = gcp.bigquery.Table(\"tf-test-table\",\n deletion_protection=False,\n dataset_id=tf_test_dataset.dataset_id,\n table_id=\"example_feature_view\",\n schema=\"\"\" [\n {\n \"name\": \"entity_id\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"Test default entity_id\"\n },\n {\n \"name\": \"test_entity_column\",\n \"mode\": \"NULLABLE\",\n \"type\": \"STRING\",\n \"description\": \"test secondary entity column\"\n },\n {\n \"name\": \"feature_timestamp\",\n \"mode\": \"NULLABLE\",\n \"type\": \"TIMESTAMP\",\n \"description\": \"Default timestamp value\"\n }\n]\n\"\"\")\nfeatureview = gcp.vertex.AiFeatureOnlineStoreFeatureview(\"featureview\",\n name=\"example_feature_view\",\n region=\"us-central1\",\n feature_online_store=featureonlinestore.name,\n sync_config={\n \"cron\": \"0 0 * * *\",\n },\n big_query_source={\n \"uri\": pulumi.Output.all(\n project=tf_test_table.project,\n dataset_id=tf_test_table.dataset_id,\n table_id=tf_test_table.table_id\n).apply(lambda resolved_outputs: f\"bq://{resolved_outputs['project']}.{resolved_outputs['dataset_id']}.{resolved_outputs['table_id']}\")\n,\n \"entity_id_columns\": [\"test_entity_column\"],\n })\nproject = gcp.organizations.get_project()\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var featureonlinestore = new Gcp.Vertex.AiFeatureOnlineStore(\"featureonlinestore\", new()\n {\n Name = \"example_feature_view\",\n Labels = \n {\n { \"foo\", \"bar\" },\n },\n Region = \"us-central1\",\n Bigtable = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableArgs\n {\n AutoScaling = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreBigtableAutoScalingArgs\n {\n MinNodeCount = 1,\n MaxNodeCount = 2,\n CpuUtilizationTarget = 80,\n },\n },\n });\n\n var tf_test_dataset = new Gcp.BigQuery.Dataset(\"tf-test-dataset\", new()\n {\n DatasetId = \"example_feature_view\",\n FriendlyName = \"test\",\n Description = \"This is a test description\",\n Location = \"US\",\n });\n\n var tf_test_table = new Gcp.BigQuery.Table(\"tf-test-table\", new()\n {\n DeletionProtection = false,\n DatasetId = tf_test_dataset.DatasetId,\n TableId = \"example_feature_view\",\n Schema = @\" [\n {\n \"\"name\"\": \"\"entity_id\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"Test default entity_id\"\"\n },\n {\n \"\"name\"\": \"\"test_entity_column\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"STRING\"\",\n \"\"description\"\": \"\"test secondary entity column\"\"\n },\n {\n \"\"name\"\": \"\"feature_timestamp\"\",\n \"\"mode\"\": \"\"NULLABLE\"\",\n \"\"type\"\": \"\"TIMESTAMP\"\",\n \"\"description\"\": \"\"Default timestamp value\"\"\n }\n]\n\",\n });\n\n var featureview = new Gcp.Vertex.AiFeatureOnlineStoreFeatureview(\"featureview\", new()\n {\n Name = \"example_feature_view\",\n Region = \"us-central1\",\n FeatureOnlineStore = featureonlinestore.Name,\n SyncConfig = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewSyncConfigArgs\n {\n Cron = \"0 0 * * *\",\n },\n BigQuerySource = new Gcp.Vertex.Inputs.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs\n {\n Uri = Output.Tuple(tf_test_table.Project, tf_test_table.DatasetId, tf_test_table.TableId).Apply(values =\u003e\n {\n var project = values.Item1;\n var datasetId = values.Item2;\n var tableId = values.Item3;\n return $\"bq://{project}.{datasetId}.{tableId}\";\n }),\n EntityIdColumns = new[]\n {\n \"test_entity_column\",\n },\n },\n });\n\n var project = Gcp.Organizations.GetProject.Invoke();\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/bigquery\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/organizations\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vertex\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tfeatureonlinestore, err := vertex.NewAiFeatureOnlineStore(ctx, \"featureonlinestore\", \u0026vertex.AiFeatureOnlineStoreArgs{\n\t\t\tName: pulumi.String(\"example_feature_view\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"foo\": pulumi.String(\"bar\"),\n\t\t\t},\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tBigtable: \u0026vertex.AiFeatureOnlineStoreBigtableArgs{\n\t\t\t\tAutoScaling: \u0026vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs{\n\t\t\t\t\tMinNodeCount: pulumi.Int(1),\n\t\t\t\t\tMaxNodeCount: pulumi.Int(2),\n\t\t\t\t\tCpuUtilizationTarget: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttf_test_dataset, 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\ttf_test_table, 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_11380\",\n name: \"tf-test_35305\",\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_11380\",\n name=\"tf-test_35305\",\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_11380\",\n Name = \"tf-test_35305\",\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_11380\"),\n\t\t\tName: pulumi.String(\"tf-test_35305\"),\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_11380\")\n .name(\"tf-test_35305\")\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_11380\n name: tf-test_35305\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\ttf_test_dataset, 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\ttf_test_table, 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", @@ -288370,7 +288370,7 @@ } }, "gcp:vmwareengine/cluster:Cluster": { - "description": "A cluster in a private cloud.\n\n\nTo get more information about Cluster, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds.clusters)\n\n## Example Usage\n\n### Vmware Engine Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_nw = new gcp.vmwareengine.Network(\"cluster-nw\", {\n name: \"pc-nw\",\n type: \"STANDARD\",\n location: \"global\",\n description: \"PC network description.\",\n});\nconst cluster_pc = new gcp.vmwareengine.PrivateCloud(\"cluster-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: cluster_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst vmw_engine_ext_cluster = new gcp.vmwareengine.Cluster(\"vmw-engine-ext-cluster\", {\n name: \"ext-cluster\",\n parent: cluster_pc.id,\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_nw = gcp.vmwareengine.Network(\"cluster-nw\",\n name=\"pc-nw\",\n type=\"STANDARD\",\n location=\"global\",\n description=\"PC network description.\")\ncluster_pc = gcp.vmwareengine.PrivateCloud(\"cluster-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.30.0/24\",\n \"vmware_engine_network\": cluster_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\nvmw_engine_ext_cluster = gcp.vmwareengine.Cluster(\"vmw-engine-ext-cluster\",\n name=\"ext-cluster\",\n parent=cluster_pc.id,\n node_type_configs=[{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_nw = new Gcp.VMwareEngine.Network(\"cluster-nw\", new()\n {\n Name = \"pc-nw\",\n Type = \"STANDARD\",\n Location = \"global\",\n Description = \"PC network description.\",\n });\n\n var cluster_pc = new Gcp.VMwareEngine.PrivateCloud(\"cluster-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = cluster_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var vmw_engine_ext_cluster = new Gcp.VMwareEngine.Cluster(\"vmw-engine-ext-cluster\", new()\n {\n Name = \"ext-cluster\",\n Parent = cluster_pc.Id,\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.ClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vmwareengine.NewNetwork(ctx, \"cluster-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"cluster-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: cluster_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewCluster(ctx, \"vmw-engine-ext-cluster\", \u0026vmwareengine.ClusterArgs{\n\t\t\tName: pulumi.String(\"ext-cluster\"),\n\t\t\tParent: cluster_pc.ID(),\n\t\t\tNodeTypeConfigs: vmwareengine.ClusterNodeTypeConfigArray{\n\t\t\t\t\u0026vmwareengine.ClusterNodeTypeConfigArgs{\n\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.Cluster;\nimport com.pulumi.gcp.vmwareengine.ClusterArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ClusterNodeTypeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_nw = new Network(\"cluster-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .type(\"STANDARD\")\n .location(\"global\")\n .description(\"PC network description.\")\n .build());\n\n var cluster_pc = new PrivateCloud(\"cluster-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(cluster_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var vmw_engine_ext_cluster = new Cluster(\"vmw-engine-ext-cluster\", ClusterArgs.builder()\n .name(\"ext-cluster\")\n .parent(cluster_pc.id())\n .nodeTypeConfigs(ClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-engine-ext-cluster:\n type: gcp:vmwareengine:Cluster\n properties:\n name: ext-cluster\n parent: ${[\"cluster-pc\"].id}\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n cluster-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"cluster-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n cluster-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n type: STANDARD\n location: global\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_nw = new gcp.vmwareengine.Network(\"cluster-nw\", {\n name: \"pc-nw\",\n type: \"STANDARD\",\n location: \"global\",\n description: \"PC network description.\",\n});\nconst cluster_pc = new gcp.vmwareengine.PrivateCloud(\"cluster-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: cluster_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n customCoreCount: 32,\n }],\n },\n});\nconst vmw_ext_cluster = new gcp.vmwareengine.Cluster(\"vmw-ext-cluster\", {\n name: \"ext-cluster\",\n parent: cluster_pc.id,\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n customCoreCount: 32,\n }],\n autoscalingSettings: {\n autoscalingPolicies: [{\n autoscalePolicyId: \"autoscaling-policy\",\n nodeTypeId: \"standard-72\",\n scaleOutSize: 1,\n cpuThresholds: {\n scaleOut: 80,\n scaleIn: 15,\n },\n consumedMemoryThresholds: {\n scaleOut: 75,\n scaleIn: 20,\n },\n storageThresholds: {\n scaleOut: 80,\n scaleIn: 20,\n },\n }],\n minClusterNodeCount: 3,\n maxClusterNodeCount: 8,\n coolDownPeriod: \"1800s\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_nw = gcp.vmwareengine.Network(\"cluster-nw\",\n name=\"pc-nw\",\n type=\"STANDARD\",\n location=\"global\",\n description=\"PC network description.\")\ncluster_pc = gcp.vmwareengine.PrivateCloud(\"cluster-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.30.0/24\",\n \"vmware_engine_network\": cluster_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n \"custom_core_count\": 32,\n }],\n })\nvmw_ext_cluster = gcp.vmwareengine.Cluster(\"vmw-ext-cluster\",\n name=\"ext-cluster\",\n parent=cluster_pc.id,\n node_type_configs=[{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n \"custom_core_count\": 32,\n }],\n autoscaling_settings={\n \"autoscaling_policies\": [{\n \"autoscale_policy_id\": \"autoscaling-policy\",\n \"node_type_id\": \"standard-72\",\n \"scale_out_size\": 1,\n \"cpu_thresholds\": {\n \"scale_out\": 80,\n \"scale_in\": 15,\n },\n \"consumed_memory_thresholds\": {\n \"scale_out\": 75,\n \"scale_in\": 20,\n },\n \"storage_thresholds\": {\n \"scale_out\": 80,\n \"scale_in\": 20,\n },\n }],\n \"min_cluster_node_count\": 3,\n \"max_cluster_node_count\": 8,\n \"cool_down_period\": \"1800s\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_nw = new Gcp.VMwareEngine.Network(\"cluster-nw\", new()\n {\n Name = \"pc-nw\",\n Type = \"STANDARD\",\n Location = \"global\",\n Description = \"PC network description.\",\n });\n\n var cluster_pc = new Gcp.VMwareEngine.PrivateCloud(\"cluster-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = cluster_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n CustomCoreCount = 32,\n },\n },\n },\n });\n\n var vmw_ext_cluster = new Gcp.VMwareEngine.Cluster(\"vmw-ext-cluster\", new()\n {\n Name = \"ext-cluster\",\n Parent = cluster_pc.Id,\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.ClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n CustomCoreCount = 32,\n },\n },\n AutoscalingSettings = new Gcp.VMwareEngine.Inputs.ClusterAutoscalingSettingsArgs\n {\n AutoscalingPolicies = new[]\n {\n new Gcp.VMwareEngine.Inputs.ClusterAutoscalingSettingsAutoscalingPolicyArgs\n {\n AutoscalePolicyId = \"autoscaling-policy\",\n NodeTypeId = \"standard-72\",\n ScaleOutSize = 1,\n CpuThresholds = new Gcp.VMwareEngine.Inputs.ClusterAutoscalingSettingsAutoscalingPolicyCpuThresholdsArgs\n {\n ScaleOut = 80,\n ScaleIn = 15,\n },\n ConsumedMemoryThresholds = new Gcp.VMwareEngine.Inputs.ClusterAutoscalingSettingsAutoscalingPolicyConsumedMemoryThresholdsArgs\n {\n ScaleOut = 75,\n ScaleIn = 20,\n },\n StorageThresholds = new Gcp.VMwareEngine.Inputs.ClusterAutoscalingSettingsAutoscalingPolicyStorageThresholdsArgs\n {\n ScaleOut = 80,\n ScaleIn = 20,\n },\n },\n },\n MinClusterNodeCount = 3,\n MaxClusterNodeCount = 8,\n CoolDownPeriod = \"1800s\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vmwareengine.NewNetwork(ctx, \"cluster-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"cluster-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: cluster_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t\tCustomCoreCount: pulumi.Int(32),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewCluster(ctx, \"vmw-ext-cluster\", \u0026vmwareengine.ClusterArgs{\n\t\t\tName: pulumi.String(\"ext-cluster\"),\n\t\t\tParent: cluster_pc.ID(),\n\t\t\tNodeTypeConfigs: vmwareengine.ClusterNodeTypeConfigArray{\n\t\t\t\t\u0026vmwareengine.ClusterNodeTypeConfigArgs{\n\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\tCustomCoreCount: pulumi.Int(32),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoscalingSettings: \u0026vmwareengine.ClusterAutoscalingSettingsArgs{\n\t\t\t\tAutoscalingPolicies: vmwareengine.ClusterAutoscalingSettingsAutoscalingPolicyArray{\n\t\t\t\t\t\u0026vmwareengine.ClusterAutoscalingSettingsAutoscalingPolicyArgs{\n\t\t\t\t\t\tAutoscalePolicyId: pulumi.String(\"autoscaling-policy\"),\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tScaleOutSize: pulumi.Int(1),\n\t\t\t\t\t\tCpuThresholds: \u0026vmwareengine.ClusterAutoscalingSettingsAutoscalingPolicyCpuThresholdsArgs{\n\t\t\t\t\t\t\tScaleOut: pulumi.Int(80),\n\t\t\t\t\t\t\tScaleIn: pulumi.Int(15),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConsumedMemoryThresholds: \u0026vmwareengine.ClusterAutoscalingSettingsAutoscalingPolicyConsumedMemoryThresholdsArgs{\n\t\t\t\t\t\t\tScaleOut: pulumi.Int(75),\n\t\t\t\t\t\t\tScaleIn: pulumi.Int(20),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStorageThresholds: \u0026vmwareengine.ClusterAutoscalingSettingsAutoscalingPolicyStorageThresholdsArgs{\n\t\t\t\t\t\t\tScaleOut: pulumi.Int(80),\n\t\t\t\t\t\t\tScaleIn: pulumi.Int(20),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinClusterNodeCount: pulumi.Int(3),\n\t\t\t\tMaxClusterNodeCount: pulumi.Int(8),\n\t\t\t\tCoolDownPeriod: pulumi.String(\"1800s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.Cluster;\nimport com.pulumi.gcp.vmwareengine.ClusterArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ClusterNodeTypeConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ClusterAutoscalingSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_nw = new Network(\"cluster-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .type(\"STANDARD\")\n .location(\"global\")\n .description(\"PC network description.\")\n .build());\n\n var cluster_pc = new PrivateCloud(\"cluster-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(cluster_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .customCoreCount(32)\n .build())\n .build())\n .build());\n\n var vmw_ext_cluster = new Cluster(\"vmw-ext-cluster\", ClusterArgs.builder()\n .name(\"ext-cluster\")\n .parent(cluster_pc.id())\n .nodeTypeConfigs(ClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .customCoreCount(32)\n .build())\n .autoscalingSettings(ClusterAutoscalingSettingsArgs.builder()\n .autoscalingPolicies(ClusterAutoscalingSettingsAutoscalingPolicyArgs.builder()\n .autoscalePolicyId(\"autoscaling-policy\")\n .nodeTypeId(\"standard-72\")\n .scaleOutSize(1)\n .cpuThresholds(ClusterAutoscalingSettingsAutoscalingPolicyCpuThresholdsArgs.builder()\n .scaleOut(80)\n .scaleIn(15)\n .build())\n .consumedMemoryThresholds(ClusterAutoscalingSettingsAutoscalingPolicyConsumedMemoryThresholdsArgs.builder()\n .scaleOut(75)\n .scaleIn(20)\n .build())\n .storageThresholds(ClusterAutoscalingSettingsAutoscalingPolicyStorageThresholdsArgs.builder()\n .scaleOut(80)\n .scaleIn(20)\n .build())\n .build())\n .minClusterNodeCount(3)\n .maxClusterNodeCount(8)\n .coolDownPeriod(\"1800s\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-ext-cluster:\n type: gcp:vmwareengine:Cluster\n properties:\n name: ext-cluster\n parent: ${[\"cluster-pc\"].id}\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n customCoreCount: 32\n autoscalingSettings:\n autoscalingPolicies:\n - autoscalePolicyId: autoscaling-policy\n nodeTypeId: standard-72\n scaleOutSize: 1\n cpuThresholds:\n scaleOut: 80\n scaleIn: 15\n consumedMemoryThresholds:\n scaleOut: 75\n scaleIn: 20\n storageThresholds:\n scaleOut: 80\n scaleIn: 20\n minClusterNodeCount: 3\n maxClusterNodeCount: 8\n coolDownPeriod: 1800s\n cluster-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"cluster-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n customCoreCount: 32\n cluster-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n type: STANDARD\n location: global\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `{{parent}}/clusters/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/cluster:Cluster default {{parent}}/clusters/{{name}}\n```\n\n", + "description": "A cluster in a private cloud.\n\n\nTo get more information about Cluster, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds.clusters)\n\n## Example Usage\n\n### Vmware Engine Cluster Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_nw = new gcp.vmwareengine.Network(\"cluster-nw\", {\n name: \"pc-nw\",\n type: \"STANDARD\",\n location: \"global\",\n description: \"PC network description.\",\n});\nconst cluster_pc = new gcp.vmwareengine.PrivateCloud(\"cluster-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: cluster_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst vmw_engine_ext_cluster = new gcp.vmwareengine.Cluster(\"vmw-engine-ext-cluster\", {\n name: \"ext-cluster\",\n parent: cluster_pc.id,\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_nw = gcp.vmwareengine.Network(\"cluster-nw\",\n name=\"pc-nw\",\n type=\"STANDARD\",\n location=\"global\",\n description=\"PC network description.\")\ncluster_pc = gcp.vmwareengine.PrivateCloud(\"cluster-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.30.0/24\",\n \"vmware_engine_network\": cluster_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\nvmw_engine_ext_cluster = gcp.vmwareengine.Cluster(\"vmw-engine-ext-cluster\",\n name=\"ext-cluster\",\n parent=cluster_pc.id,\n node_type_configs=[{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_nw = new Gcp.VMwareEngine.Network(\"cluster-nw\", new()\n {\n Name = \"pc-nw\",\n Type = \"STANDARD\",\n Location = \"global\",\n Description = \"PC network description.\",\n });\n\n var cluster_pc = new Gcp.VMwareEngine.PrivateCloud(\"cluster-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = cluster_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var vmw_engine_ext_cluster = new Gcp.VMwareEngine.Cluster(\"vmw-engine-ext-cluster\", new()\n {\n Name = \"ext-cluster\",\n Parent = cluster_pc.Id,\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.ClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster_nw, err := vmwareengine.NewNetwork(ctx, \"cluster-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster_pc, err := vmwareengine.NewPrivateCloud(ctx, \"cluster-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: cluster_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewCluster(ctx, \"vmw-engine-ext-cluster\", \u0026vmwareengine.ClusterArgs{\n\t\t\tName: pulumi.String(\"ext-cluster\"),\n\t\t\tParent: cluster_pc.ID(),\n\t\t\tNodeTypeConfigs: vmwareengine.ClusterNodeTypeConfigArray{\n\t\t\t\t\u0026vmwareengine.ClusterNodeTypeConfigArgs{\n\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.Cluster;\nimport com.pulumi.gcp.vmwareengine.ClusterArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ClusterNodeTypeConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_nw = new Network(\"cluster-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .type(\"STANDARD\")\n .location(\"global\")\n .description(\"PC network description.\")\n .build());\n\n var cluster_pc = new PrivateCloud(\"cluster-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(cluster_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var vmw_engine_ext_cluster = new Cluster(\"vmw-engine-ext-cluster\", ClusterArgs.builder()\n .name(\"ext-cluster\")\n .parent(cluster_pc.id())\n .nodeTypeConfigs(ClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-engine-ext-cluster:\n type: gcp:vmwareengine:Cluster\n properties:\n name: ext-cluster\n parent: ${[\"cluster-pc\"].id}\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n cluster-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"cluster-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n cluster-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n type: STANDARD\n location: global\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine Cluster Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst cluster_nw = new gcp.vmwareengine.Network(\"cluster-nw\", {\n name: \"pc-nw\",\n type: \"STANDARD\",\n location: \"global\",\n description: \"PC network description.\",\n});\nconst cluster_pc = new gcp.vmwareengine.PrivateCloud(\"cluster-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: cluster_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n customCoreCount: 32,\n }],\n },\n});\nconst vmw_ext_cluster = new gcp.vmwareengine.Cluster(\"vmw-ext-cluster\", {\n name: \"ext-cluster\",\n parent: cluster_pc.id,\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n customCoreCount: 32,\n }],\n autoscalingSettings: {\n autoscalingPolicies: [{\n autoscalePolicyId: \"autoscaling-policy\",\n nodeTypeId: \"standard-72\",\n scaleOutSize: 1,\n cpuThresholds: {\n scaleOut: 80,\n scaleIn: 15,\n },\n consumedMemoryThresholds: {\n scaleOut: 75,\n scaleIn: 20,\n },\n storageThresholds: {\n scaleOut: 80,\n scaleIn: 20,\n },\n }],\n minClusterNodeCount: 3,\n maxClusterNodeCount: 8,\n coolDownPeriod: \"1800s\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ncluster_nw = gcp.vmwareengine.Network(\"cluster-nw\",\n name=\"pc-nw\",\n type=\"STANDARD\",\n location=\"global\",\n description=\"PC network description.\")\ncluster_pc = gcp.vmwareengine.PrivateCloud(\"cluster-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.30.0/24\",\n \"vmware_engine_network\": cluster_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n \"custom_core_count\": 32,\n }],\n })\nvmw_ext_cluster = gcp.vmwareengine.Cluster(\"vmw-ext-cluster\",\n name=\"ext-cluster\",\n parent=cluster_pc.id,\n node_type_configs=[{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n \"custom_core_count\": 32,\n }],\n autoscaling_settings={\n \"autoscaling_policies\": [{\n \"autoscale_policy_id\": \"autoscaling-policy\",\n \"node_type_id\": \"standard-72\",\n \"scale_out_size\": 1,\n \"cpu_thresholds\": {\n \"scale_out\": 80,\n \"scale_in\": 15,\n },\n \"consumed_memory_thresholds\": {\n \"scale_out\": 75,\n \"scale_in\": 20,\n },\n \"storage_thresholds\": {\n \"scale_out\": 80,\n \"scale_in\": 20,\n },\n }],\n \"min_cluster_node_count\": 3,\n \"max_cluster_node_count\": 8,\n \"cool_down_period\": \"1800s\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var cluster_nw = new Gcp.VMwareEngine.Network(\"cluster-nw\", new()\n {\n Name = \"pc-nw\",\n Type = \"STANDARD\",\n Location = \"global\",\n Description = \"PC network description.\",\n });\n\n var cluster_pc = new Gcp.VMwareEngine.PrivateCloud(\"cluster-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = cluster_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n CustomCoreCount = 32,\n },\n },\n },\n });\n\n var vmw_ext_cluster = new Gcp.VMwareEngine.Cluster(\"vmw-ext-cluster\", new()\n {\n Name = \"ext-cluster\",\n Parent = cluster_pc.Id,\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.ClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n CustomCoreCount = 32,\n },\n },\n AutoscalingSettings = new Gcp.VMwareEngine.Inputs.ClusterAutoscalingSettingsArgs\n {\n AutoscalingPolicies = new[]\n {\n new Gcp.VMwareEngine.Inputs.ClusterAutoscalingSettingsAutoscalingPolicyArgs\n {\n AutoscalePolicyId = \"autoscaling-policy\",\n NodeTypeId = \"standard-72\",\n ScaleOutSize = 1,\n CpuThresholds = new Gcp.VMwareEngine.Inputs.ClusterAutoscalingSettingsAutoscalingPolicyCpuThresholdsArgs\n {\n ScaleOut = 80,\n ScaleIn = 15,\n },\n ConsumedMemoryThresholds = new Gcp.VMwareEngine.Inputs.ClusterAutoscalingSettingsAutoscalingPolicyConsumedMemoryThresholdsArgs\n {\n ScaleOut = 75,\n ScaleIn = 20,\n },\n StorageThresholds = new Gcp.VMwareEngine.Inputs.ClusterAutoscalingSettingsAutoscalingPolicyStorageThresholdsArgs\n {\n ScaleOut = 80,\n ScaleIn = 20,\n },\n },\n },\n MinClusterNodeCount = 3,\n MaxClusterNodeCount = 8,\n CoolDownPeriod = \"1800s\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tcluster_nw, err := vmwareengine.NewNetwork(ctx, \"cluster-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcluster_pc, err := vmwareengine.NewPrivateCloud(ctx, \"cluster-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: cluster_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t\tCustomCoreCount: pulumi.Int(32),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewCluster(ctx, \"vmw-ext-cluster\", \u0026vmwareengine.ClusterArgs{\n\t\t\tName: pulumi.String(\"ext-cluster\"),\n\t\t\tParent: cluster_pc.ID(),\n\t\t\tNodeTypeConfigs: vmwareengine.ClusterNodeTypeConfigArray{\n\t\t\t\t\u0026vmwareengine.ClusterNodeTypeConfigArgs{\n\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\tCustomCoreCount: pulumi.Int(32),\n\t\t\t\t},\n\t\t\t},\n\t\t\tAutoscalingSettings: \u0026vmwareengine.ClusterAutoscalingSettingsArgs{\n\t\t\t\tAutoscalingPolicies: vmwareengine.ClusterAutoscalingSettingsAutoscalingPolicyArray{\n\t\t\t\t\t\u0026vmwareengine.ClusterAutoscalingSettingsAutoscalingPolicyArgs{\n\t\t\t\t\t\tAutoscalePolicyId: pulumi.String(\"autoscaling-policy\"),\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tScaleOutSize: pulumi.Int(1),\n\t\t\t\t\t\tCpuThresholds: \u0026vmwareengine.ClusterAutoscalingSettingsAutoscalingPolicyCpuThresholdsArgs{\n\t\t\t\t\t\t\tScaleOut: pulumi.Int(80),\n\t\t\t\t\t\t\tScaleIn: pulumi.Int(15),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tConsumedMemoryThresholds: \u0026vmwareengine.ClusterAutoscalingSettingsAutoscalingPolicyConsumedMemoryThresholdsArgs{\n\t\t\t\t\t\t\tScaleOut: pulumi.Int(75),\n\t\t\t\t\t\t\tScaleIn: pulumi.Int(20),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tStorageThresholds: \u0026vmwareengine.ClusterAutoscalingSettingsAutoscalingPolicyStorageThresholdsArgs{\n\t\t\t\t\t\t\tScaleOut: pulumi.Int(80),\n\t\t\t\t\t\t\tScaleIn: pulumi.Int(20),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tMinClusterNodeCount: pulumi.Int(3),\n\t\t\t\tMaxClusterNodeCount: pulumi.Int(8),\n\t\t\t\tCoolDownPeriod: pulumi.String(\"1800s\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.Cluster;\nimport com.pulumi.gcp.vmwareengine.ClusterArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ClusterNodeTypeConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ClusterAutoscalingSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var cluster_nw = new Network(\"cluster-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .type(\"STANDARD\")\n .location(\"global\")\n .description(\"PC network description.\")\n .build());\n\n var cluster_pc = new PrivateCloud(\"cluster-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(cluster_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .customCoreCount(32)\n .build())\n .build())\n .build());\n\n var vmw_ext_cluster = new Cluster(\"vmw-ext-cluster\", ClusterArgs.builder()\n .name(\"ext-cluster\")\n .parent(cluster_pc.id())\n .nodeTypeConfigs(ClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .customCoreCount(32)\n .build())\n .autoscalingSettings(ClusterAutoscalingSettingsArgs.builder()\n .autoscalingPolicies(ClusterAutoscalingSettingsAutoscalingPolicyArgs.builder()\n .autoscalePolicyId(\"autoscaling-policy\")\n .nodeTypeId(\"standard-72\")\n .scaleOutSize(1)\n .cpuThresholds(ClusterAutoscalingSettingsAutoscalingPolicyCpuThresholdsArgs.builder()\n .scaleOut(80)\n .scaleIn(15)\n .build())\n .consumedMemoryThresholds(ClusterAutoscalingSettingsAutoscalingPolicyConsumedMemoryThresholdsArgs.builder()\n .scaleOut(75)\n .scaleIn(20)\n .build())\n .storageThresholds(ClusterAutoscalingSettingsAutoscalingPolicyStorageThresholdsArgs.builder()\n .scaleOut(80)\n .scaleIn(20)\n .build())\n .build())\n .minClusterNodeCount(3)\n .maxClusterNodeCount(8)\n .coolDownPeriod(\"1800s\")\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-ext-cluster:\n type: gcp:vmwareengine:Cluster\n properties:\n name: ext-cluster\n parent: ${[\"cluster-pc\"].id}\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n customCoreCount: 32\n autoscalingSettings:\n autoscalingPolicies:\n - autoscalePolicyId: autoscaling-policy\n nodeTypeId: standard-72\n scaleOutSize: 1\n cpuThresholds:\n scaleOut: 80\n scaleIn: 15\n consumedMemoryThresholds:\n scaleOut: 75\n scaleIn: 20\n storageThresholds:\n scaleOut: 80\n scaleIn: 20\n minClusterNodeCount: 3\n maxClusterNodeCount: 8\n coolDownPeriod: 1800s\n cluster-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"cluster-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n customCoreCount: 32\n cluster-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n type: STANDARD\n location: global\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nCluster can be imported using any of these accepted formats:\n\n* `{{parent}}/clusters/{{name}}`\n\nWhen using the `pulumi import` command, Cluster can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/cluster:Cluster default {{parent}}/clusters/{{name}}\n```\n\n", "properties": { "autoscalingSettings": { "$ref": "#/types/gcp:vmwareengine/ClusterAutoscalingSettings:ClusterAutoscalingSettings", @@ -288478,7 +288478,7 @@ } }, "gcp:vmwareengine/externalAccessRule:ExternalAccessRule": { - "description": "External access firewall rules for filtering incoming traffic destined to `ExternalAddress` resources.\n\n\nTo get more information about ExternalAccessRule, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.networkPolicies.externalAccessRules)\n\n## Example Usage\n\n### Vmware Engine External Access Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst external_access_rule_nw = new gcp.vmwareengine.Network(\"external-access-rule-nw\", {\n name: \"sample-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst external_access_rule_np = new gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\", {\n location: \"us-west1\",\n name: \"sample-np\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: external_access_rule_nw.id,\n});\nconst vmw_engine_external_access_rule = new gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\", {\n name: \"sample-external-access-rule\",\n parent: external_access_rule_np.id,\n priority: 101,\n action: \"DENY\",\n ipProtocol: \"TCP\",\n sourceIpRanges: [{\n ipAddressRange: \"0.0.0.0/0\",\n }],\n sourcePorts: [\"80\"],\n destinationIpRanges: [{\n ipAddressRange: \"0.0.0.0/0\",\n }],\n destinationPorts: [\"433\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_access_rule_nw = gcp.vmwareengine.Network(\"external-access-rule-nw\",\n name=\"sample-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nexternal_access_rule_np = gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\",\n location=\"us-west1\",\n name=\"sample-np\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=external_access_rule_nw.id)\nvmw_engine_external_access_rule = gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\",\n name=\"sample-external-access-rule\",\n parent=external_access_rule_np.id,\n priority=101,\n action=\"DENY\",\n ip_protocol=\"TCP\",\n source_ip_ranges=[{\n \"ip_address_range\": \"0.0.0.0/0\",\n }],\n source_ports=[\"80\"],\n destination_ip_ranges=[{\n \"ip_address_range\": \"0.0.0.0/0\",\n }],\n destination_ports=[\"433\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var external_access_rule_nw = new Gcp.VMwareEngine.Network(\"external-access-rule-nw\", new()\n {\n Name = \"sample-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var external_access_rule_np = new Gcp.VMwareEngine.NetworkPolicy(\"external-access-rule-np\", new()\n {\n Location = \"us-west1\",\n Name = \"sample-np\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = external_access_rule_nw.Id,\n });\n\n var vmw_engine_external_access_rule = new Gcp.VMwareEngine.ExternalAccessRule(\"vmw-engine-external-access-rule\", new()\n {\n Name = \"sample-external-access-rule\",\n Parent = external_access_rule_np.Id,\n Priority = 101,\n Action = \"DENY\",\n IpProtocol = \"TCP\",\n SourceIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleSourceIpRangeArgs\n {\n IpAddressRange = \"0.0.0.0/0\",\n },\n },\n SourcePorts = new[]\n {\n \"80\",\n },\n DestinationIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleDestinationIpRangeArgs\n {\n IpAddressRange = \"0.0.0.0/0\",\n },\n },\n DestinationPorts = new[]\n {\n \"433\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vmwareengine.NewNetwork(ctx, \"external-access-rule-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"sample-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPolicy(ctx, \"external-access-rule-np\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"sample-np\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: external_access_rule_nw.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAccessRule(ctx, \"vmw-engine-external-access-rule\", \u0026vmwareengine.ExternalAccessRuleArgs{\n\t\t\tName: pulumi.String(\"sample-external-access-rule\"),\n\t\t\tParent: external_access_rule_np.ID(),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tAction: pulumi.String(\"DENY\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tSourceIpRanges: vmwareengine.ExternalAccessRuleSourceIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleSourceIpRangeArgs{\n\t\t\t\t\tIpAddressRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSourcePorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"80\"),\n\t\t\t},\n\t\t\tDestinationIpRanges: vmwareengine.ExternalAccessRuleDestinationIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleDestinationIpRangeArgs{\n\t\t\t\t\tIpAddressRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"433\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRule;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRuleArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleSourceIpRangeArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleDestinationIpRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var external_access_rule_nw = new Network(\"external-access-rule-nw\", NetworkArgs.builder()\n .name(\"sample-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var external_access_rule_np = new NetworkPolicy(\"external-access-rule-np\", NetworkPolicyArgs.builder()\n .location(\"us-west1\")\n .name(\"sample-np\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(external_access_rule_nw.id())\n .build());\n\n var vmw_engine_external_access_rule = new ExternalAccessRule(\"vmw-engine-external-access-rule\", ExternalAccessRuleArgs.builder()\n .name(\"sample-external-access-rule\")\n .parent(external_access_rule_np.id())\n .priority(101)\n .action(\"DENY\")\n .ipProtocol(\"TCP\")\n .sourceIpRanges(ExternalAccessRuleSourceIpRangeArgs.builder()\n .ipAddressRange(\"0.0.0.0/0\")\n .build())\n .sourcePorts(\"80\")\n .destinationIpRanges(ExternalAccessRuleDestinationIpRangeArgs.builder()\n .ipAddressRange(\"0.0.0.0/0\")\n .build())\n .destinationPorts(\"433\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n external-access-rule-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: sample-nw\n location: global\n type: STANDARD\n description: PC network description.\n external-access-rule-np:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: us-west1\n name: sample-np\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"external-access-rule-nw\"].id}\n vmw-engine-external-access-rule:\n type: gcp:vmwareengine:ExternalAccessRule\n properties:\n name: sample-external-access-rule\n parent: ${[\"external-access-rule-np\"].id}\n priority: 101\n action: DENY\n ipProtocol: TCP\n sourceIpRanges:\n - ipAddressRange: 0.0.0.0/0\n sourcePorts:\n - '80'\n destinationIpRanges:\n - ipAddressRange: 0.0.0.0/0\n destinationPorts:\n - '433'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine External Access Rule Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst external_access_rule_nw = new gcp.vmwareengine.Network(\"external-access-rule-nw\", {\n name: \"sample-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst external_access_rule_pc = new gcp.vmwareengine.PrivateCloud(\"external-access-rule-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.50.0/24\",\n vmwareEngineNetwork: external_access_rule_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst external_access_rule_np = new gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\", {\n location: \"us-west1\",\n name: \"sample-np\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: external_access_rule_nw.id,\n});\nconst external_access_rule_ea = new gcp.vmwareengine.ExternalAddress(\"external-access-rule-ea\", {\n name: \"sample-ea\",\n parent: external_access_rule_pc.id,\n internalIp: \"192.168.0.65\",\n});\nconst vmw_engine_external_access_rule = new gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\", {\n name: \"sample-external-access-rule\",\n parent: external_access_rule_np.id,\n description: \"Sample Description\",\n priority: 101,\n action: \"ALLOW\",\n ipProtocol: \"tcp\",\n sourceIpRanges: [{\n ipAddressRange: \"0.0.0.0/0\",\n }],\n sourcePorts: [\"80\"],\n destinationIpRanges: [{\n externalAddress: external_access_rule_ea.id,\n }],\n destinationPorts: [\"433\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_access_rule_nw = gcp.vmwareengine.Network(\"external-access-rule-nw\",\n name=\"sample-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nexternal_access_rule_pc = gcp.vmwareengine.PrivateCloud(\"external-access-rule-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.50.0/24\",\n \"vmware_engine_network\": external_access_rule_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\nexternal_access_rule_np = gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\",\n location=\"us-west1\",\n name=\"sample-np\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=external_access_rule_nw.id)\nexternal_access_rule_ea = gcp.vmwareengine.ExternalAddress(\"external-access-rule-ea\",\n name=\"sample-ea\",\n parent=external_access_rule_pc.id,\n internal_ip=\"192.168.0.65\")\nvmw_engine_external_access_rule = gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\",\n name=\"sample-external-access-rule\",\n parent=external_access_rule_np.id,\n description=\"Sample Description\",\n priority=101,\n action=\"ALLOW\",\n ip_protocol=\"tcp\",\n source_ip_ranges=[{\n \"ip_address_range\": \"0.0.0.0/0\",\n }],\n source_ports=[\"80\"],\n destination_ip_ranges=[{\n \"external_address\": external_access_rule_ea.id,\n }],\n destination_ports=[\"433\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var external_access_rule_nw = new Gcp.VMwareEngine.Network(\"external-access-rule-nw\", new()\n {\n Name = \"sample-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var external_access_rule_pc = new Gcp.VMwareEngine.PrivateCloud(\"external-access-rule-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.50.0/24\",\n VmwareEngineNetwork = external_access_rule_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var external_access_rule_np = new Gcp.VMwareEngine.NetworkPolicy(\"external-access-rule-np\", new()\n {\n Location = \"us-west1\",\n Name = \"sample-np\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = external_access_rule_nw.Id,\n });\n\n var external_access_rule_ea = new Gcp.VMwareEngine.ExternalAddress(\"external-access-rule-ea\", new()\n {\n Name = \"sample-ea\",\n Parent = external_access_rule_pc.Id,\n InternalIp = \"192.168.0.65\",\n });\n\n var vmw_engine_external_access_rule = new Gcp.VMwareEngine.ExternalAccessRule(\"vmw-engine-external-access-rule\", new()\n {\n Name = \"sample-external-access-rule\",\n Parent = external_access_rule_np.Id,\n Description = \"Sample Description\",\n Priority = 101,\n Action = \"ALLOW\",\n IpProtocol = \"tcp\",\n SourceIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleSourceIpRangeArgs\n {\n IpAddressRange = \"0.0.0.0/0\",\n },\n },\n SourcePorts = new[]\n {\n \"80\",\n },\n DestinationIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleDestinationIpRangeArgs\n {\n ExternalAddress = external_access_rule_ea.Id,\n },\n },\n DestinationPorts = new[]\n {\n \"433\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vmwareengine.NewNetwork(ctx, \"external-access-rule-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"sample-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"external-access-rule-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.50.0/24\"),\n\t\t\t\tVmwareEngineNetwork: external_access_rule_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPolicy(ctx, \"external-access-rule-np\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"sample-np\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: external_access_rule_nw.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAddress(ctx, \"external-access-rule-ea\", \u0026vmwareengine.ExternalAddressArgs{\n\t\t\tName: pulumi.String(\"sample-ea\"),\n\t\t\tParent: external_access_rule_pc.ID(),\n\t\t\tInternalIp: pulumi.String(\"192.168.0.65\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAccessRule(ctx, \"vmw-engine-external-access-rule\", \u0026vmwareengine.ExternalAccessRuleArgs{\n\t\t\tName: pulumi.String(\"sample-external-access-rule\"),\n\t\t\tParent: external_access_rule_np.ID(),\n\t\t\tDescription: pulumi.String(\"Sample Description\"),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\tSourceIpRanges: vmwareengine.ExternalAccessRuleSourceIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleSourceIpRangeArgs{\n\t\t\t\t\tIpAddressRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSourcePorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"80\"),\n\t\t\t},\n\t\t\tDestinationIpRanges: vmwareengine.ExternalAccessRuleDestinationIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleDestinationIpRangeArgs{\n\t\t\t\t\tExternalAddress: external_access_rule_ea.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"433\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAddress;\nimport com.pulumi.gcp.vmwareengine.ExternalAddressArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRule;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRuleArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleSourceIpRangeArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleDestinationIpRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var external_access_rule_nw = new Network(\"external-access-rule-nw\", NetworkArgs.builder()\n .name(\"sample-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var external_access_rule_pc = new PrivateCloud(\"external-access-rule-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.50.0/24\")\n .vmwareEngineNetwork(external_access_rule_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var external_access_rule_np = new NetworkPolicy(\"external-access-rule-np\", NetworkPolicyArgs.builder()\n .location(\"us-west1\")\n .name(\"sample-np\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(external_access_rule_nw.id())\n .build());\n\n var external_access_rule_ea = new ExternalAddress(\"external-access-rule-ea\", ExternalAddressArgs.builder()\n .name(\"sample-ea\")\n .parent(external_access_rule_pc.id())\n .internalIp(\"192.168.0.65\")\n .build());\n\n var vmw_engine_external_access_rule = new ExternalAccessRule(\"vmw-engine-external-access-rule\", ExternalAccessRuleArgs.builder()\n .name(\"sample-external-access-rule\")\n .parent(external_access_rule_np.id())\n .description(\"Sample Description\")\n .priority(101)\n .action(\"ALLOW\")\n .ipProtocol(\"tcp\")\n .sourceIpRanges(ExternalAccessRuleSourceIpRangeArgs.builder()\n .ipAddressRange(\"0.0.0.0/0\")\n .build())\n .sourcePorts(\"80\")\n .destinationIpRanges(ExternalAccessRuleDestinationIpRangeArgs.builder()\n .externalAddress(external_access_rule_ea.id())\n .build())\n .destinationPorts(\"433\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n external-access-rule-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: sample-nw\n location: global\n type: STANDARD\n description: PC network description.\n external-access-rule-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.50.0/24\n vmwareEngineNetwork: ${[\"external-access-rule-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n external-access-rule-np:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: us-west1\n name: sample-np\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"external-access-rule-nw\"].id}\n external-access-rule-ea:\n type: gcp:vmwareengine:ExternalAddress\n properties:\n name: sample-ea\n parent: ${[\"external-access-rule-pc\"].id}\n internalIp: 192.168.0.65\n vmw-engine-external-access-rule:\n type: gcp:vmwareengine:ExternalAccessRule\n properties:\n name: sample-external-access-rule\n parent: ${[\"external-access-rule-np\"].id}\n description: Sample Description\n priority: 101\n action: ALLOW\n ipProtocol: tcp\n sourceIpRanges:\n - ipAddressRange: 0.0.0.0/0\n sourcePorts:\n - '80'\n destinationIpRanges:\n - externalAddress: ${[\"external-access-rule-ea\"].id}\n destinationPorts:\n - '433'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nExternalAccessRule can be imported using any of these accepted formats:\n\n* `{{parent}}/externalAccessRules/{{name}}`\n\nWhen using the `pulumi import` command, ExternalAccessRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/externalAccessRule:ExternalAccessRule default {{parent}}/externalAccessRules/{{name}}\n```\n\n", + "description": "External access firewall rules for filtering incoming traffic destined to `ExternalAddress` resources.\n\n\nTo get more information about ExternalAccessRule, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.networkPolicies.externalAccessRules)\n\n## Example Usage\n\n### Vmware Engine External Access Rule Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst external_access_rule_nw = new gcp.vmwareengine.Network(\"external-access-rule-nw\", {\n name: \"sample-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst external_access_rule_np = new gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\", {\n location: \"us-west1\",\n name: \"sample-np\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: external_access_rule_nw.id,\n});\nconst vmw_engine_external_access_rule = new gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\", {\n name: \"sample-external-access-rule\",\n parent: external_access_rule_np.id,\n priority: 101,\n action: \"DENY\",\n ipProtocol: \"TCP\",\n sourceIpRanges: [{\n ipAddressRange: \"0.0.0.0/0\",\n }],\n sourcePorts: [\"80\"],\n destinationIpRanges: [{\n ipAddressRange: \"0.0.0.0/0\",\n }],\n destinationPorts: [\"433\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_access_rule_nw = gcp.vmwareengine.Network(\"external-access-rule-nw\",\n name=\"sample-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nexternal_access_rule_np = gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\",\n location=\"us-west1\",\n name=\"sample-np\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=external_access_rule_nw.id)\nvmw_engine_external_access_rule = gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\",\n name=\"sample-external-access-rule\",\n parent=external_access_rule_np.id,\n priority=101,\n action=\"DENY\",\n ip_protocol=\"TCP\",\n source_ip_ranges=[{\n \"ip_address_range\": \"0.0.0.0/0\",\n }],\n source_ports=[\"80\"],\n destination_ip_ranges=[{\n \"ip_address_range\": \"0.0.0.0/0\",\n }],\n destination_ports=[\"433\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var external_access_rule_nw = new Gcp.VMwareEngine.Network(\"external-access-rule-nw\", new()\n {\n Name = \"sample-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var external_access_rule_np = new Gcp.VMwareEngine.NetworkPolicy(\"external-access-rule-np\", new()\n {\n Location = \"us-west1\",\n Name = \"sample-np\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = external_access_rule_nw.Id,\n });\n\n var vmw_engine_external_access_rule = new Gcp.VMwareEngine.ExternalAccessRule(\"vmw-engine-external-access-rule\", new()\n {\n Name = \"sample-external-access-rule\",\n Parent = external_access_rule_np.Id,\n Priority = 101,\n Action = \"DENY\",\n IpProtocol = \"TCP\",\n SourceIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleSourceIpRangeArgs\n {\n IpAddressRange = \"0.0.0.0/0\",\n },\n },\n SourcePorts = new[]\n {\n \"80\",\n },\n DestinationIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleDestinationIpRangeArgs\n {\n IpAddressRange = \"0.0.0.0/0\",\n },\n },\n DestinationPorts = new[]\n {\n \"433\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texternal_access_rule_nw, err := vmwareengine.NewNetwork(ctx, \"external-access-rule-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"sample-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternal_access_rule_np, err := vmwareengine.NewNetworkPolicy(ctx, \"external-access-rule-np\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"sample-np\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: external_access_rule_nw.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAccessRule(ctx, \"vmw-engine-external-access-rule\", \u0026vmwareengine.ExternalAccessRuleArgs{\n\t\t\tName: pulumi.String(\"sample-external-access-rule\"),\n\t\t\tParent: external_access_rule_np.ID(),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tAction: pulumi.String(\"DENY\"),\n\t\t\tIpProtocol: pulumi.String(\"TCP\"),\n\t\t\tSourceIpRanges: vmwareengine.ExternalAccessRuleSourceIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleSourceIpRangeArgs{\n\t\t\t\t\tIpAddressRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSourcePorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"80\"),\n\t\t\t},\n\t\t\tDestinationIpRanges: vmwareengine.ExternalAccessRuleDestinationIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleDestinationIpRangeArgs{\n\t\t\t\t\tIpAddressRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"433\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRule;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRuleArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleSourceIpRangeArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleDestinationIpRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var external_access_rule_nw = new Network(\"external-access-rule-nw\", NetworkArgs.builder()\n .name(\"sample-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var external_access_rule_np = new NetworkPolicy(\"external-access-rule-np\", NetworkPolicyArgs.builder()\n .location(\"us-west1\")\n .name(\"sample-np\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(external_access_rule_nw.id())\n .build());\n\n var vmw_engine_external_access_rule = new ExternalAccessRule(\"vmw-engine-external-access-rule\", ExternalAccessRuleArgs.builder()\n .name(\"sample-external-access-rule\")\n .parent(external_access_rule_np.id())\n .priority(101)\n .action(\"DENY\")\n .ipProtocol(\"TCP\")\n .sourceIpRanges(ExternalAccessRuleSourceIpRangeArgs.builder()\n .ipAddressRange(\"0.0.0.0/0\")\n .build())\n .sourcePorts(\"80\")\n .destinationIpRanges(ExternalAccessRuleDestinationIpRangeArgs.builder()\n .ipAddressRange(\"0.0.0.0/0\")\n .build())\n .destinationPorts(\"433\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n external-access-rule-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: sample-nw\n location: global\n type: STANDARD\n description: PC network description.\n external-access-rule-np:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: us-west1\n name: sample-np\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"external-access-rule-nw\"].id}\n vmw-engine-external-access-rule:\n type: gcp:vmwareengine:ExternalAccessRule\n properties:\n name: sample-external-access-rule\n parent: ${[\"external-access-rule-np\"].id}\n priority: 101\n action: DENY\n ipProtocol: TCP\n sourceIpRanges:\n - ipAddressRange: 0.0.0.0/0\n sourcePorts:\n - '80'\n destinationIpRanges:\n - ipAddressRange: 0.0.0.0/0\n destinationPorts:\n - '433'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine External Access Rule Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst external_access_rule_nw = new gcp.vmwareengine.Network(\"external-access-rule-nw\", {\n name: \"sample-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst external_access_rule_pc = new gcp.vmwareengine.PrivateCloud(\"external-access-rule-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.50.0/24\",\n vmwareEngineNetwork: external_access_rule_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst external_access_rule_np = new gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\", {\n location: \"us-west1\",\n name: \"sample-np\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: external_access_rule_nw.id,\n});\nconst external_access_rule_ea = new gcp.vmwareengine.ExternalAddress(\"external-access-rule-ea\", {\n name: \"sample-ea\",\n parent: external_access_rule_pc.id,\n internalIp: \"192.168.0.65\",\n});\nconst vmw_engine_external_access_rule = new gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\", {\n name: \"sample-external-access-rule\",\n parent: external_access_rule_np.id,\n description: \"Sample Description\",\n priority: 101,\n action: \"ALLOW\",\n ipProtocol: \"tcp\",\n sourceIpRanges: [{\n ipAddressRange: \"0.0.0.0/0\",\n }],\n sourcePorts: [\"80\"],\n destinationIpRanges: [{\n externalAddress: external_access_rule_ea.id,\n }],\n destinationPorts: [\"433\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_access_rule_nw = gcp.vmwareengine.Network(\"external-access-rule-nw\",\n name=\"sample-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nexternal_access_rule_pc = gcp.vmwareengine.PrivateCloud(\"external-access-rule-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.50.0/24\",\n \"vmware_engine_network\": external_access_rule_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\nexternal_access_rule_np = gcp.vmwareengine.NetworkPolicy(\"external-access-rule-np\",\n location=\"us-west1\",\n name=\"sample-np\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=external_access_rule_nw.id)\nexternal_access_rule_ea = gcp.vmwareengine.ExternalAddress(\"external-access-rule-ea\",\n name=\"sample-ea\",\n parent=external_access_rule_pc.id,\n internal_ip=\"192.168.0.65\")\nvmw_engine_external_access_rule = gcp.vmwareengine.ExternalAccessRule(\"vmw-engine-external-access-rule\",\n name=\"sample-external-access-rule\",\n parent=external_access_rule_np.id,\n description=\"Sample Description\",\n priority=101,\n action=\"ALLOW\",\n ip_protocol=\"tcp\",\n source_ip_ranges=[{\n \"ip_address_range\": \"0.0.0.0/0\",\n }],\n source_ports=[\"80\"],\n destination_ip_ranges=[{\n \"external_address\": external_access_rule_ea.id,\n }],\n destination_ports=[\"433\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var external_access_rule_nw = new Gcp.VMwareEngine.Network(\"external-access-rule-nw\", new()\n {\n Name = \"sample-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var external_access_rule_pc = new Gcp.VMwareEngine.PrivateCloud(\"external-access-rule-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.50.0/24\",\n VmwareEngineNetwork = external_access_rule_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var external_access_rule_np = new Gcp.VMwareEngine.NetworkPolicy(\"external-access-rule-np\", new()\n {\n Location = \"us-west1\",\n Name = \"sample-np\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = external_access_rule_nw.Id,\n });\n\n var external_access_rule_ea = new Gcp.VMwareEngine.ExternalAddress(\"external-access-rule-ea\", new()\n {\n Name = \"sample-ea\",\n Parent = external_access_rule_pc.Id,\n InternalIp = \"192.168.0.65\",\n });\n\n var vmw_engine_external_access_rule = new Gcp.VMwareEngine.ExternalAccessRule(\"vmw-engine-external-access-rule\", new()\n {\n Name = \"sample-external-access-rule\",\n Parent = external_access_rule_np.Id,\n Description = \"Sample Description\",\n Priority = 101,\n Action = \"ALLOW\",\n IpProtocol = \"tcp\",\n SourceIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleSourceIpRangeArgs\n {\n IpAddressRange = \"0.0.0.0/0\",\n },\n },\n SourcePorts = new[]\n {\n \"80\",\n },\n DestinationIpRanges = new[]\n {\n new Gcp.VMwareEngine.Inputs.ExternalAccessRuleDestinationIpRangeArgs\n {\n ExternalAddress = external_access_rule_ea.Id,\n },\n },\n DestinationPorts = new[]\n {\n \"433\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texternal_access_rule_nw, err := vmwareengine.NewNetwork(ctx, \"external-access-rule-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"sample-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternal_access_rule_pc, err := vmwareengine.NewPrivateCloud(ctx, \"external-access-rule-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.50.0/24\"),\n\t\t\t\tVmwareEngineNetwork: external_access_rule_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternal_access_rule_np, err := vmwareengine.NewNetworkPolicy(ctx, \"external-access-rule-np\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"sample-np\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: external_access_rule_nw.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternal_access_rule_ea, err := vmwareengine.NewExternalAddress(ctx, \"external-access-rule-ea\", \u0026vmwareengine.ExternalAddressArgs{\n\t\t\tName: pulumi.String(\"sample-ea\"),\n\t\t\tParent: external_access_rule_pc.ID(),\n\t\t\tInternalIp: pulumi.String(\"192.168.0.65\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAccessRule(ctx, \"vmw-engine-external-access-rule\", \u0026vmwareengine.ExternalAccessRuleArgs{\n\t\t\tName: pulumi.String(\"sample-external-access-rule\"),\n\t\t\tParent: external_access_rule_np.ID(),\n\t\t\tDescription: pulumi.String(\"Sample Description\"),\n\t\t\tPriority: pulumi.Int(101),\n\t\t\tAction: pulumi.String(\"ALLOW\"),\n\t\t\tIpProtocol: pulumi.String(\"tcp\"),\n\t\t\tSourceIpRanges: vmwareengine.ExternalAccessRuleSourceIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleSourceIpRangeArgs{\n\t\t\t\t\tIpAddressRange: pulumi.String(\"0.0.0.0/0\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tSourcePorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"80\"),\n\t\t\t},\n\t\t\tDestinationIpRanges: vmwareengine.ExternalAccessRuleDestinationIpRangeArray{\n\t\t\t\t\u0026vmwareengine.ExternalAccessRuleDestinationIpRangeArgs{\n\t\t\t\t\tExternalAddress: external_access_rule_ea.ID(),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDestinationPorts: pulumi.StringArray{\n\t\t\t\tpulumi.String(\"433\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAddress;\nimport com.pulumi.gcp.vmwareengine.ExternalAddressArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRule;\nimport com.pulumi.gcp.vmwareengine.ExternalAccessRuleArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleSourceIpRangeArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.ExternalAccessRuleDestinationIpRangeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var external_access_rule_nw = new Network(\"external-access-rule-nw\", NetworkArgs.builder()\n .name(\"sample-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var external_access_rule_pc = new PrivateCloud(\"external-access-rule-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.50.0/24\")\n .vmwareEngineNetwork(external_access_rule_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var external_access_rule_np = new NetworkPolicy(\"external-access-rule-np\", NetworkPolicyArgs.builder()\n .location(\"us-west1\")\n .name(\"sample-np\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(external_access_rule_nw.id())\n .build());\n\n var external_access_rule_ea = new ExternalAddress(\"external-access-rule-ea\", ExternalAddressArgs.builder()\n .name(\"sample-ea\")\n .parent(external_access_rule_pc.id())\n .internalIp(\"192.168.0.65\")\n .build());\n\n var vmw_engine_external_access_rule = new ExternalAccessRule(\"vmw-engine-external-access-rule\", ExternalAccessRuleArgs.builder()\n .name(\"sample-external-access-rule\")\n .parent(external_access_rule_np.id())\n .description(\"Sample Description\")\n .priority(101)\n .action(\"ALLOW\")\n .ipProtocol(\"tcp\")\n .sourceIpRanges(ExternalAccessRuleSourceIpRangeArgs.builder()\n .ipAddressRange(\"0.0.0.0/0\")\n .build())\n .sourcePorts(\"80\")\n .destinationIpRanges(ExternalAccessRuleDestinationIpRangeArgs.builder()\n .externalAddress(external_access_rule_ea.id())\n .build())\n .destinationPorts(\"433\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n external-access-rule-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: sample-nw\n location: global\n type: STANDARD\n description: PC network description.\n external-access-rule-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.50.0/24\n vmwareEngineNetwork: ${[\"external-access-rule-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n external-access-rule-np:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: us-west1\n name: sample-np\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"external-access-rule-nw\"].id}\n external-access-rule-ea:\n type: gcp:vmwareengine:ExternalAddress\n properties:\n name: sample-ea\n parent: ${[\"external-access-rule-pc\"].id}\n internalIp: 192.168.0.65\n vmw-engine-external-access-rule:\n type: gcp:vmwareengine:ExternalAccessRule\n properties:\n name: sample-external-access-rule\n parent: ${[\"external-access-rule-np\"].id}\n description: Sample Description\n priority: 101\n action: ALLOW\n ipProtocol: tcp\n sourceIpRanges:\n - ipAddressRange: 0.0.0.0/0\n sourcePorts:\n - '80'\n destinationIpRanges:\n - externalAddress: ${[\"external-access-rule-ea\"].id}\n destinationPorts:\n - '433'\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nExternalAccessRule can be imported using any of these accepted formats:\n\n* `{{parent}}/externalAccessRules/{{name}}`\n\nWhen using the `pulumi import` command, ExternalAccessRule can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/externalAccessRule:ExternalAccessRule default {{parent}}/externalAccessRules/{{name}}\n```\n\n", "properties": { "action": { "type": "string", @@ -288708,7 +288708,7 @@ } }, "gcp:vmwareengine/externalAddress:ExternalAddress": { - "description": "An allocated external IP address and its corresponding internal IP address in a private cloud.\n\n\nTo get more information about ExternalAddress, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds.externalAddresses)\n\n## Example Usage\n\n### Vmware Engine External Address Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst external_address_nw = new gcp.vmwareengine.Network(\"external-address-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst external_address_pc = new gcp.vmwareengine.PrivateCloud(\"external-address-pc\", {\n location: \"-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.50.0/24\",\n vmwareEngineNetwork: external_address_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst external_address_np = new gcp.vmwareengine.NetworkPolicy(\"external-address-np\", {\n location: \"\",\n name: \"sample-np\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: external_address_nw.id,\n});\nconst vmw_engine_external_address = new gcp.vmwareengine.ExternalAddress(\"vmw-engine-external-address\", {\n name: \"sample-external-address\",\n parent: external_address_pc.id,\n internalIp: \"192.168.0.66\",\n description: \"Sample description.\",\n}, {\n dependsOn: [external_address_np],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_address_nw = gcp.vmwareengine.Network(\"external-address-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nexternal_address_pc = gcp.vmwareengine.PrivateCloud(\"external-address-pc\",\n location=\"-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.50.0/24\",\n \"vmware_engine_network\": external_address_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\nexternal_address_np = gcp.vmwareengine.NetworkPolicy(\"external-address-np\",\n location=\"\",\n name=\"sample-np\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=external_address_nw.id)\nvmw_engine_external_address = gcp.vmwareengine.ExternalAddress(\"vmw-engine-external-address\",\n name=\"sample-external-address\",\n parent=external_address_pc.id,\n internal_ip=\"192.168.0.66\",\n description=\"Sample description.\",\n opts = pulumi.ResourceOptions(depends_on=[external_address_np]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var external_address_nw = new Gcp.VMwareEngine.Network(\"external-address-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var external_address_pc = new Gcp.VMwareEngine.PrivateCloud(\"external-address-pc\", new()\n {\n Location = \"-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.50.0/24\",\n VmwareEngineNetwork = external_address_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var external_address_np = new Gcp.VMwareEngine.NetworkPolicy(\"external-address-np\", new()\n {\n Location = \"\",\n Name = \"sample-np\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = external_address_nw.Id,\n });\n\n var vmw_engine_external_address = new Gcp.VMwareEngine.ExternalAddress(\"vmw-engine-external-address\", new()\n {\n Name = \"sample-external-address\",\n Parent = external_address_pc.Id,\n InternalIp = \"192.168.0.66\",\n Description = \"Sample description.\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n external_address_np,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vmwareengine.NewNetwork(ctx, \"external-address-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"external-address-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.50.0/24\"),\n\t\t\t\tVmwareEngineNetwork: external_address_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPolicy(ctx, \"external-address-np\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"\"),\n\t\t\tName: pulumi.String(\"sample-np\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: external_address_nw.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAddress(ctx, \"vmw-engine-external-address\", \u0026vmwareengine.ExternalAddressArgs{\n\t\t\tName: pulumi.String(\"sample-external-address\"),\n\t\t\tParent: external_address_pc.ID(),\n\t\t\tInternalIp: pulumi.String(\"192.168.0.66\"),\n\t\t\tDescription: pulumi.String(\"Sample description.\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texternal_address_np,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAddress;\nimport com.pulumi.gcp.vmwareengine.ExternalAddressArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var external_address_nw = new Network(\"external-address-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var external_address_pc = new PrivateCloud(\"external-address-pc\", PrivateCloudArgs.builder()\n .location(\"-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.50.0/24\")\n .vmwareEngineNetwork(external_address_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var external_address_np = new NetworkPolicy(\"external-address-np\", NetworkPolicyArgs.builder()\n .location(\"\")\n .name(\"sample-np\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(external_address_nw.id())\n .build());\n\n var vmw_engine_external_address = new ExternalAddress(\"vmw-engine-external-address\", ExternalAddressArgs.builder()\n .name(\"sample-external-address\")\n .parent(external_address_pc.id())\n .internalIp(\"192.168.0.66\")\n .description(\"Sample description.\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(external_address_np)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n external-address-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n external-address-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: -a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.50.0/24\n vmwareEngineNetwork: ${[\"external-address-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n external-address-np:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: \"\"\n name: sample-np\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"external-address-nw\"].id}\n vmw-engine-external-address:\n type: gcp:vmwareengine:ExternalAddress\n properties:\n name: sample-external-address\n parent: ${[\"external-address-pc\"].id}\n internalIp: 192.168.0.66\n description: Sample description.\n options:\n dependsOn:\n - ${[\"external-address-np\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nExternalAddress can be imported using any of these accepted formats:\n\n* `{{parent}}/externalAddresses/{{name}}`\n\nWhen using the `pulumi import` command, ExternalAddress can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/externalAddress:ExternalAddress default {{parent}}/externalAddresses/{{name}}\n```\n\n", + "description": "An allocated external IP address and its corresponding internal IP address in a private cloud.\n\n\nTo get more information about ExternalAddress, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds.externalAddresses)\n\n## Example Usage\n\n### Vmware Engine External Address Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst external_address_nw = new gcp.vmwareengine.Network(\"external-address-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst external_address_pc = new gcp.vmwareengine.PrivateCloud(\"external-address-pc\", {\n location: \"-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.50.0/24\",\n vmwareEngineNetwork: external_address_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst external_address_np = new gcp.vmwareengine.NetworkPolicy(\"external-address-np\", {\n location: \"\",\n name: \"sample-np\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: external_address_nw.id,\n});\nconst vmw_engine_external_address = new gcp.vmwareengine.ExternalAddress(\"vmw-engine-external-address\", {\n name: \"sample-external-address\",\n parent: external_address_pc.id,\n internalIp: \"192.168.0.66\",\n description: \"Sample description.\",\n}, {\n dependsOn: [external_address_np],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nexternal_address_nw = gcp.vmwareengine.Network(\"external-address-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nexternal_address_pc = gcp.vmwareengine.PrivateCloud(\"external-address-pc\",\n location=\"-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.50.0/24\",\n \"vmware_engine_network\": external_address_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\nexternal_address_np = gcp.vmwareengine.NetworkPolicy(\"external-address-np\",\n location=\"\",\n name=\"sample-np\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=external_address_nw.id)\nvmw_engine_external_address = gcp.vmwareengine.ExternalAddress(\"vmw-engine-external-address\",\n name=\"sample-external-address\",\n parent=external_address_pc.id,\n internal_ip=\"192.168.0.66\",\n description=\"Sample description.\",\n opts = pulumi.ResourceOptions(depends_on=[external_address_np]))\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var external_address_nw = new Gcp.VMwareEngine.Network(\"external-address-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var external_address_pc = new Gcp.VMwareEngine.PrivateCloud(\"external-address-pc\", new()\n {\n Location = \"-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.50.0/24\",\n VmwareEngineNetwork = external_address_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var external_address_np = new Gcp.VMwareEngine.NetworkPolicy(\"external-address-np\", new()\n {\n Location = \"\",\n Name = \"sample-np\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = external_address_nw.Id,\n });\n\n var vmw_engine_external_address = new Gcp.VMwareEngine.ExternalAddress(\"vmw-engine-external-address\", new()\n {\n Name = \"sample-external-address\",\n Parent = external_address_pc.Id,\n InternalIp = \"192.168.0.66\",\n Description = \"Sample description.\",\n }, new CustomResourceOptions\n {\n DependsOn =\n {\n external_address_np,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\texternal_address_nw, err := vmwareengine.NewNetwork(ctx, \"external-address-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternal_address_pc, err := vmwareengine.NewPrivateCloud(ctx, \"external-address-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.50.0/24\"),\n\t\t\t\tVmwareEngineNetwork: external_address_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\texternal_address_np, err := vmwareengine.NewNetworkPolicy(ctx, \"external-address-np\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"\"),\n\t\t\tName: pulumi.String(\"sample-np\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: external_address_nw.ID(),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewExternalAddress(ctx, \"vmw-engine-external-address\", \u0026vmwareengine.ExternalAddressArgs{\n\t\t\tName: pulumi.String(\"sample-external-address\"),\n\t\t\tParent: external_address_pc.ID(),\n\t\t\tInternalIp: pulumi.String(\"192.168.0.66\"),\n\t\t\tDescription: pulumi.String(\"Sample description.\"),\n\t\t}, pulumi.DependsOn([]pulumi.Resource{\n\t\t\texternal_address_np,\n\t\t}))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.ExternalAddress;\nimport com.pulumi.gcp.vmwareengine.ExternalAddressArgs;\nimport com.pulumi.resources.CustomResourceOptions;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var external_address_nw = new Network(\"external-address-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var external_address_pc = new PrivateCloud(\"external-address-pc\", PrivateCloudArgs.builder()\n .location(\"-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.50.0/24\")\n .vmwareEngineNetwork(external_address_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var external_address_np = new NetworkPolicy(\"external-address-np\", NetworkPolicyArgs.builder()\n .location(\"\")\n .name(\"sample-np\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(external_address_nw.id())\n .build());\n\n var vmw_engine_external_address = new ExternalAddress(\"vmw-engine-external-address\", ExternalAddressArgs.builder()\n .name(\"sample-external-address\")\n .parent(external_address_pc.id())\n .internalIp(\"192.168.0.66\")\n .description(\"Sample description.\")\n .build(), CustomResourceOptions.builder()\n .dependsOn(external_address_np)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n external-address-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n external-address-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: -a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.50.0/24\n vmwareEngineNetwork: ${[\"external-address-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n external-address-np:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: \"\"\n name: sample-np\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"external-address-nw\"].id}\n vmw-engine-external-address:\n type: gcp:vmwareengine:ExternalAddress\n properties:\n name: sample-external-address\n parent: ${[\"external-address-pc\"].id}\n internalIp: 192.168.0.66\n description: Sample description.\n options:\n dependsOn:\n - ${[\"external-address-np\"]}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nExternalAddress can be imported using any of these accepted formats:\n\n* `{{parent}}/externalAddresses/{{name}}`\n\nWhen using the `pulumi import` command, ExternalAddress can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/externalAddress:ExternalAddress default {{parent}}/externalAddresses/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -288951,7 +288951,7 @@ } }, "gcp:vmwareengine/networkPeering:NetworkPeering": { - "description": "Represents a network peering resource. Network peerings are global resources.\n\n\nTo get more information about NetworkPeering, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/networks/addPeering)\n\n## Example Usage\n\n### Vmware Engine Network Peering Ven\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_peering_nw = new gcp.vmwareengine.Network(\"network-peering-nw\", {\n name: \"default-np-nw\",\n location: \"global\",\n type: \"STANDARD\",\n});\nconst network_peering_peer_nw = new gcp.vmwareengine.Network(\"network-peering-peer-nw\", {\n name: \"peer-np-nw\",\n location: \"global\",\n type: \"STANDARD\",\n});\nconst vmw_engine_network_peering = new gcp.vmwareengine.NetworkPeering(\"vmw-engine-network-peering\", {\n name: \"sample-network-peering\",\n description: \"Sample description\",\n vmwareEngineNetwork: network_peering_nw.id,\n peerNetwork: network_peering_peer_nw.id,\n peerNetworkType: \"VMWARE_ENGINE_NETWORK\",\n exportCustomRoutes: false,\n importCustomRoutes: false,\n exportCustomRoutesWithPublicIp: false,\n importCustomRoutesWithPublicIp: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_peering_nw = gcp.vmwareengine.Network(\"network-peering-nw\",\n name=\"default-np-nw\",\n location=\"global\",\n type=\"STANDARD\")\nnetwork_peering_peer_nw = gcp.vmwareengine.Network(\"network-peering-peer-nw\",\n name=\"peer-np-nw\",\n location=\"global\",\n type=\"STANDARD\")\nvmw_engine_network_peering = gcp.vmwareengine.NetworkPeering(\"vmw-engine-network-peering\",\n name=\"sample-network-peering\",\n description=\"Sample description\",\n vmware_engine_network=network_peering_nw.id,\n peer_network=network_peering_peer_nw.id,\n peer_network_type=\"VMWARE_ENGINE_NETWORK\",\n export_custom_routes=False,\n import_custom_routes=False,\n export_custom_routes_with_public_ip=False,\n import_custom_routes_with_public_ip=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_peering_nw = new Gcp.VMwareEngine.Network(\"network-peering-nw\", new()\n {\n Name = \"default-np-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n });\n\n var network_peering_peer_nw = new Gcp.VMwareEngine.Network(\"network-peering-peer-nw\", new()\n {\n Name = \"peer-np-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n });\n\n var vmw_engine_network_peering = new Gcp.VMwareEngine.NetworkPeering(\"vmw-engine-network-peering\", new()\n {\n Name = \"sample-network-peering\",\n Description = \"Sample description\",\n VmwareEngineNetwork = network_peering_nw.Id,\n PeerNetwork = network_peering_peer_nw.Id,\n PeerNetworkType = \"VMWARE_ENGINE_NETWORK\",\n ExportCustomRoutes = false,\n ImportCustomRoutes = false,\n ExportCustomRoutesWithPublicIp = false,\n ImportCustomRoutesWithPublicIp = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vmwareengine.NewNetwork(ctx, \"network-peering-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"default-np-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetwork(ctx, \"network-peering-peer-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"peer-np-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPeering(ctx, \"vmw-engine-network-peering\", \u0026vmwareengine.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"sample-network-peering\"),\n\t\t\tDescription: pulumi.String(\"Sample description\"),\n\t\t\tVmwareEngineNetwork: network_peering_nw.ID(),\n\t\t\tPeerNetwork: network_peering_peer_nw.ID(),\n\t\t\tPeerNetworkType: pulumi.String(\"VMWARE_ENGINE_NETWORK\"),\n\t\t\tExportCustomRoutes: pulumi.Bool(false),\n\t\t\tImportCustomRoutes: pulumi.Bool(false),\n\t\t\tExportCustomRoutesWithPublicIp: pulumi.Bool(false),\n\t\t\tImportCustomRoutesWithPublicIp: 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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPeering;\nimport com.pulumi.gcp.vmwareengine.NetworkPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_peering_nw = new Network(\"network-peering-nw\", NetworkArgs.builder()\n .name(\"default-np-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .build());\n\n var network_peering_peer_nw = new Network(\"network-peering-peer-nw\", NetworkArgs.builder()\n .name(\"peer-np-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .build());\n\n var vmw_engine_network_peering = new NetworkPeering(\"vmw-engine-network-peering\", NetworkPeeringArgs.builder()\n .name(\"sample-network-peering\")\n .description(\"Sample description\")\n .vmwareEngineNetwork(network_peering_nw.id())\n .peerNetwork(network_peering_peer_nw.id())\n .peerNetworkType(\"VMWARE_ENGINE_NETWORK\")\n .exportCustomRoutes(false)\n .importCustomRoutes(false)\n .exportCustomRoutesWithPublicIp(false)\n .importCustomRoutesWithPublicIp(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-peering-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: default-np-nw\n location: global\n type: STANDARD\n network-peering-peer-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: peer-np-nw\n location: global\n type: STANDARD\n vmw-engine-network-peering:\n type: gcp:vmwareengine:NetworkPeering\n properties:\n name: sample-network-peering\n description: Sample description\n vmwareEngineNetwork: ${[\"network-peering-nw\"].id}\n peerNetwork: ${[\"network-peering-peer-nw\"].id}\n peerNetworkType: VMWARE_ENGINE_NETWORK\n exportCustomRoutes: false\n importCustomRoutes: false\n exportCustomRoutesWithPublicIp: false\n importCustomRoutesWithPublicIp: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine Network Peering Standard\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_peering_vpc = new gcp.compute.Network(\"network-peering-vpc\", {name: \"default-vpc\"});\nconst network_peering_standard_nw = new gcp.vmwareengine.Network(\"network-peering-standard-nw\", {\n name: \"default-standard-nw-np\",\n location: \"global\",\n type: \"STANDARD\",\n});\nconst vmw_engine_network_peering = new gcp.vmwareengine.NetworkPeering(\"vmw-engine-network-peering\", {\n name: \"sample-network-peering\",\n description: \"Sample description\",\n peerNetwork: network_peering_vpc.id,\n peerNetworkType: \"STANDARD\",\n vmwareEngineNetwork: network_peering_standard_nw.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_peering_vpc = gcp.compute.Network(\"network-peering-vpc\", name=\"default-vpc\")\nnetwork_peering_standard_nw = gcp.vmwareengine.Network(\"network-peering-standard-nw\",\n name=\"default-standard-nw-np\",\n location=\"global\",\n type=\"STANDARD\")\nvmw_engine_network_peering = gcp.vmwareengine.NetworkPeering(\"vmw-engine-network-peering\",\n name=\"sample-network-peering\",\n description=\"Sample description\",\n peer_network=network_peering_vpc.id,\n peer_network_type=\"STANDARD\",\n vmware_engine_network=network_peering_standard_nw.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_peering_vpc = new Gcp.Compute.Network(\"network-peering-vpc\", new()\n {\n Name = \"default-vpc\",\n });\n\n var network_peering_standard_nw = new Gcp.VMwareEngine.Network(\"network-peering-standard-nw\", new()\n {\n Name = \"default-standard-nw-np\",\n Location = \"global\",\n Type = \"STANDARD\",\n });\n\n var vmw_engine_network_peering = new Gcp.VMwareEngine.NetworkPeering(\"vmw-engine-network-peering\", new()\n {\n Name = \"sample-network-peering\",\n Description = \"Sample description\",\n PeerNetwork = network_peering_vpc.Id,\n PeerNetworkType = \"STANDARD\",\n VmwareEngineNetwork = network_peering_standard_nw.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.NewNetwork(ctx, \"network-peering-vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"default-vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetwork(ctx, \"network-peering-standard-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"default-standard-nw-np\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPeering(ctx, \"vmw-engine-network-peering\", \u0026vmwareengine.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"sample-network-peering\"),\n\t\t\tDescription: pulumi.String(\"Sample description\"),\n\t\t\tPeerNetwork: network_peering_vpc.ID(),\n\t\t\tPeerNetworkType: pulumi.String(\"STANDARD\"),\n\t\t\tVmwareEngineNetwork: network_peering_standard_nw.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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPeering;\nimport com.pulumi.gcp.vmwareengine.NetworkPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_peering_vpc = new Network(\"network-peering-vpc\", NetworkArgs.builder()\n .name(\"default-vpc\")\n .build());\n\n var network_peering_standard_nw = new Network(\"network-peering-standard-nw\", NetworkArgs.builder()\n .name(\"default-standard-nw-np\")\n .location(\"global\")\n .type(\"STANDARD\")\n .build());\n\n var vmw_engine_network_peering = new NetworkPeering(\"vmw-engine-network-peering\", NetworkPeeringArgs.builder()\n .name(\"sample-network-peering\")\n .description(\"Sample description\")\n .peerNetwork(network_peering_vpc.id())\n .peerNetworkType(\"STANDARD\")\n .vmwareEngineNetwork(network_peering_standard_nw.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-peering-vpc:\n type: gcp:compute:Network\n properties:\n name: default-vpc\n network-peering-standard-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: default-standard-nw-np\n location: global\n type: STANDARD\n vmw-engine-network-peering:\n type: gcp:vmwareengine:NetworkPeering\n properties:\n name: sample-network-peering\n description: Sample description\n peerNetwork: ${[\"network-peering-vpc\"].id}\n peerNetworkType: STANDARD\n vmwareEngineNetwork: ${[\"network-peering-standard-nw\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkPeering can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/networkPeerings/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NetworkPeering can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/networkPeering:NetworkPeering default projects/{{project}}/locations/global/networkPeerings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/networkPeering:NetworkPeering default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/networkPeering:NetworkPeering default {{name}}\n```\n\n", + "description": "Represents a network peering resource. Network peerings are global resources.\n\n\nTo get more information about NetworkPeering, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/networks/addPeering)\n\n## Example Usage\n\n### Vmware Engine Network Peering Ven\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_peering_nw = new gcp.vmwareengine.Network(\"network-peering-nw\", {\n name: \"default-np-nw\",\n location: \"global\",\n type: \"STANDARD\",\n});\nconst network_peering_peer_nw = new gcp.vmwareengine.Network(\"network-peering-peer-nw\", {\n name: \"peer-np-nw\",\n location: \"global\",\n type: \"STANDARD\",\n});\nconst vmw_engine_network_peering = new gcp.vmwareengine.NetworkPeering(\"vmw-engine-network-peering\", {\n name: \"sample-network-peering\",\n description: \"Sample description\",\n vmwareEngineNetwork: network_peering_nw.id,\n peerNetwork: network_peering_peer_nw.id,\n peerNetworkType: \"VMWARE_ENGINE_NETWORK\",\n exportCustomRoutes: false,\n importCustomRoutes: false,\n exportCustomRoutesWithPublicIp: false,\n importCustomRoutesWithPublicIp: false,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_peering_nw = gcp.vmwareengine.Network(\"network-peering-nw\",\n name=\"default-np-nw\",\n location=\"global\",\n type=\"STANDARD\")\nnetwork_peering_peer_nw = gcp.vmwareengine.Network(\"network-peering-peer-nw\",\n name=\"peer-np-nw\",\n location=\"global\",\n type=\"STANDARD\")\nvmw_engine_network_peering = gcp.vmwareengine.NetworkPeering(\"vmw-engine-network-peering\",\n name=\"sample-network-peering\",\n description=\"Sample description\",\n vmware_engine_network=network_peering_nw.id,\n peer_network=network_peering_peer_nw.id,\n peer_network_type=\"VMWARE_ENGINE_NETWORK\",\n export_custom_routes=False,\n import_custom_routes=False,\n export_custom_routes_with_public_ip=False,\n import_custom_routes_with_public_ip=False)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_peering_nw = new Gcp.VMwareEngine.Network(\"network-peering-nw\", new()\n {\n Name = \"default-np-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n });\n\n var network_peering_peer_nw = new Gcp.VMwareEngine.Network(\"network-peering-peer-nw\", new()\n {\n Name = \"peer-np-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n });\n\n var vmw_engine_network_peering = new Gcp.VMwareEngine.NetworkPeering(\"vmw-engine-network-peering\", new()\n {\n Name = \"sample-network-peering\",\n Description = \"Sample description\",\n VmwareEngineNetwork = network_peering_nw.Id,\n PeerNetwork = network_peering_peer_nw.Id,\n PeerNetworkType = \"VMWARE_ENGINE_NETWORK\",\n ExportCustomRoutes = false,\n ImportCustomRoutes = false,\n ExportCustomRoutesWithPublicIp = false,\n ImportCustomRoutesWithPublicIp = false,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork_peering_nw, err := vmwareengine.NewNetwork(ctx, \"network-peering-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"default-np-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork_peering_peer_nw, err := vmwareengine.NewNetwork(ctx, \"network-peering-peer-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"peer-np-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPeering(ctx, \"vmw-engine-network-peering\", \u0026vmwareengine.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"sample-network-peering\"),\n\t\t\tDescription: pulumi.String(\"Sample description\"),\n\t\t\tVmwareEngineNetwork: network_peering_nw.ID(),\n\t\t\tPeerNetwork: network_peering_peer_nw.ID(),\n\t\t\tPeerNetworkType: pulumi.String(\"VMWARE_ENGINE_NETWORK\"),\n\t\t\tExportCustomRoutes: pulumi.Bool(false),\n\t\t\tImportCustomRoutes: pulumi.Bool(false),\n\t\t\tExportCustomRoutesWithPublicIp: pulumi.Bool(false),\n\t\t\tImportCustomRoutesWithPublicIp: 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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPeering;\nimport com.pulumi.gcp.vmwareengine.NetworkPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_peering_nw = new Network(\"network-peering-nw\", NetworkArgs.builder()\n .name(\"default-np-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .build());\n\n var network_peering_peer_nw = new Network(\"network-peering-peer-nw\", NetworkArgs.builder()\n .name(\"peer-np-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .build());\n\n var vmw_engine_network_peering = new NetworkPeering(\"vmw-engine-network-peering\", NetworkPeeringArgs.builder()\n .name(\"sample-network-peering\")\n .description(\"Sample description\")\n .vmwareEngineNetwork(network_peering_nw.id())\n .peerNetwork(network_peering_peer_nw.id())\n .peerNetworkType(\"VMWARE_ENGINE_NETWORK\")\n .exportCustomRoutes(false)\n .importCustomRoutes(false)\n .exportCustomRoutesWithPublicIp(false)\n .importCustomRoutesWithPublicIp(false)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-peering-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: default-np-nw\n location: global\n type: STANDARD\n network-peering-peer-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: peer-np-nw\n location: global\n type: STANDARD\n vmw-engine-network-peering:\n type: gcp:vmwareengine:NetworkPeering\n properties:\n name: sample-network-peering\n description: Sample description\n vmwareEngineNetwork: ${[\"network-peering-nw\"].id}\n peerNetwork: ${[\"network-peering-peer-nw\"].id}\n peerNetworkType: VMWARE_ENGINE_NETWORK\n exportCustomRoutes: false\n importCustomRoutes: false\n exportCustomRoutesWithPublicIp: false\n importCustomRoutesWithPublicIp: false\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine Network Peering Standard\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_peering_vpc = new gcp.compute.Network(\"network-peering-vpc\", {name: \"default-vpc\"});\nconst network_peering_standard_nw = new gcp.vmwareengine.Network(\"network-peering-standard-nw\", {\n name: \"default-standard-nw-np\",\n location: \"global\",\n type: \"STANDARD\",\n});\nconst vmw_engine_network_peering = new gcp.vmwareengine.NetworkPeering(\"vmw-engine-network-peering\", {\n name: \"sample-network-peering\",\n description: \"Sample description\",\n peerNetwork: network_peering_vpc.id,\n peerNetworkType: \"STANDARD\",\n vmwareEngineNetwork: network_peering_standard_nw.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_peering_vpc = gcp.compute.Network(\"network-peering-vpc\", name=\"default-vpc\")\nnetwork_peering_standard_nw = gcp.vmwareengine.Network(\"network-peering-standard-nw\",\n name=\"default-standard-nw-np\",\n location=\"global\",\n type=\"STANDARD\")\nvmw_engine_network_peering = gcp.vmwareengine.NetworkPeering(\"vmw-engine-network-peering\",\n name=\"sample-network-peering\",\n description=\"Sample description\",\n peer_network=network_peering_vpc.id,\n peer_network_type=\"STANDARD\",\n vmware_engine_network=network_peering_standard_nw.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_peering_vpc = new Gcp.Compute.Network(\"network-peering-vpc\", new()\n {\n Name = \"default-vpc\",\n });\n\n var network_peering_standard_nw = new Gcp.VMwareEngine.Network(\"network-peering-standard-nw\", new()\n {\n Name = \"default-standard-nw-np\",\n Location = \"global\",\n Type = \"STANDARD\",\n });\n\n var vmw_engine_network_peering = new Gcp.VMwareEngine.NetworkPeering(\"vmw-engine-network-peering\", new()\n {\n Name = \"sample-network-peering\",\n Description = \"Sample description\",\n PeerNetwork = network_peering_vpc.Id,\n PeerNetworkType = \"STANDARD\",\n VmwareEngineNetwork = network_peering_standard_nw.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/compute\"\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork_peering_vpc, err := compute.NewNetwork(ctx, \"network-peering-vpc\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"default-vpc\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tnetwork_peering_standard_nw, err := vmwareengine.NewNetwork(ctx, \"network-peering-standard-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"default-standard-nw-np\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPeering(ctx, \"vmw-engine-network-peering\", \u0026vmwareengine.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"sample-network-peering\"),\n\t\t\tDescription: pulumi.String(\"Sample description\"),\n\t\t\tPeerNetwork: network_peering_vpc.ID(),\n\t\t\tPeerNetworkType: pulumi.String(\"STANDARD\"),\n\t\t\tVmwareEngineNetwork: network_peering_standard_nw.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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPeering;\nimport com.pulumi.gcp.vmwareengine.NetworkPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_peering_vpc = new Network(\"network-peering-vpc\", NetworkArgs.builder()\n .name(\"default-vpc\")\n .build());\n\n var network_peering_standard_nw = new Network(\"network-peering-standard-nw\", NetworkArgs.builder()\n .name(\"default-standard-nw-np\")\n .location(\"global\")\n .type(\"STANDARD\")\n .build());\n\n var vmw_engine_network_peering = new NetworkPeering(\"vmw-engine-network-peering\", NetworkPeeringArgs.builder()\n .name(\"sample-network-peering\")\n .description(\"Sample description\")\n .peerNetwork(network_peering_vpc.id())\n .peerNetworkType(\"STANDARD\")\n .vmwareEngineNetwork(network_peering_standard_nw.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-peering-vpc:\n type: gcp:compute:Network\n properties:\n name: default-vpc\n network-peering-standard-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: default-standard-nw-np\n location: global\n type: STANDARD\n vmw-engine-network-peering:\n type: gcp:vmwareengine:NetworkPeering\n properties:\n name: sample-network-peering\n description: Sample description\n peerNetwork: ${[\"network-peering-vpc\"].id}\n peerNetworkType: STANDARD\n vmwareEngineNetwork: ${[\"network-peering-standard-nw\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkPeering can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/global/networkPeerings/{{name}}`\n\n* `{{project}}/{{name}}`\n\n* `{{name}}`\n\nWhen using the `pulumi import` command, NetworkPeering can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/networkPeering:NetworkPeering default projects/{{project}}/locations/global/networkPeerings/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/networkPeering:NetworkPeering default {{project}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/networkPeering:NetworkPeering default {{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -289154,7 +289154,7 @@ } }, "gcp:vmwareengine/networkPolicy:NetworkPolicy": { - "description": "Represents a network policy resource. Network policies are regional resources.\n\n\nTo get more information about NetworkPolicy, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.networkPolicies)\n\n## Example Usage\n\n### Vmware Engine Network 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_policy_nw = new gcp.vmwareengine.Network(\"network-policy-nw\", {\n name: \"sample-network\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"VMwareEngine standard network sample\",\n});\nconst vmw_engine_network_policy = new gcp.vmwareengine.NetworkPolicy(\"vmw-engine-network-policy\", {\n location: \"us-west1\",\n name: \"sample-network-policy\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: network_policy_nw.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_policy_nw = gcp.vmwareengine.Network(\"network-policy-nw\",\n name=\"sample-network\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"VMwareEngine standard network sample\")\nvmw_engine_network_policy = gcp.vmwareengine.NetworkPolicy(\"vmw-engine-network-policy\",\n location=\"us-west1\",\n name=\"sample-network-policy\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=network_policy_nw.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_policy_nw = new Gcp.VMwareEngine.Network(\"network-policy-nw\", new()\n {\n Name = \"sample-network\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"VMwareEngine standard network sample\",\n });\n\n var vmw_engine_network_policy = new Gcp.VMwareEngine.NetworkPolicy(\"vmw-engine-network-policy\", new()\n {\n Location = \"us-west1\",\n Name = \"sample-network-policy\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = network_policy_nw.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vmwareengine.NewNetwork(ctx, \"network-policy-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"sample-network\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"VMwareEngine standard network sample\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPolicy(ctx, \"vmw-engine-network-policy\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"sample-network-policy\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: network_policy_nw.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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_policy_nw = new Network(\"network-policy-nw\", NetworkArgs.builder()\n .name(\"sample-network\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"VMwareEngine standard network sample\")\n .build());\n\n var vmw_engine_network_policy = new NetworkPolicy(\"vmw-engine-network-policy\", NetworkPolicyArgs.builder()\n .location(\"us-west1\")\n .name(\"sample-network-policy\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(network_policy_nw.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-policy-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: sample-network\n location: global\n type: STANDARD\n description: VMwareEngine standard network sample\n vmw-engine-network-policy:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: us-west1\n name: sample-network-policy\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"network-policy-nw\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine Network Policy Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_policy_nw = new gcp.vmwareengine.Network(\"network-policy-nw\", {\n name: \"sample-network\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"VMwareEngine standard network sample\",\n});\nconst vmw_engine_network_policy = new gcp.vmwareengine.NetworkPolicy(\"vmw-engine-network-policy\", {\n location: \"us-west1\",\n name: \"sample-network-policy\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: network_policy_nw.id,\n description: \"Sample Network Policy\",\n internetAccess: {\n enabled: true,\n },\n externalIp: {\n enabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_policy_nw = gcp.vmwareengine.Network(\"network-policy-nw\",\n name=\"sample-network\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"VMwareEngine standard network sample\")\nvmw_engine_network_policy = gcp.vmwareengine.NetworkPolicy(\"vmw-engine-network-policy\",\n location=\"us-west1\",\n name=\"sample-network-policy\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=network_policy_nw.id,\n description=\"Sample Network Policy\",\n internet_access={\n \"enabled\": True,\n },\n external_ip={\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 network_policy_nw = new Gcp.VMwareEngine.Network(\"network-policy-nw\", new()\n {\n Name = \"sample-network\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"VMwareEngine standard network sample\",\n });\n\n var vmw_engine_network_policy = new Gcp.VMwareEngine.NetworkPolicy(\"vmw-engine-network-policy\", new()\n {\n Location = \"us-west1\",\n Name = \"sample-network-policy\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = network_policy_nw.Id,\n Description = \"Sample Network Policy\",\n InternetAccess = new Gcp.VMwareEngine.Inputs.NetworkPolicyInternetAccessArgs\n {\n Enabled = true,\n },\n ExternalIp = new Gcp.VMwareEngine.Inputs.NetworkPolicyExternalIpArgs\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/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vmwareengine.NewNetwork(ctx, \"network-policy-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"sample-network\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"VMwareEngine standard network sample\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPolicy(ctx, \"vmw-engine-network-policy\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"sample-network-policy\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: network_policy_nw.ID(),\n\t\t\tDescription: pulumi.String(\"Sample Network Policy\"),\n\t\t\tInternetAccess: \u0026vmwareengine.NetworkPolicyInternetAccessArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tExternalIp: \u0026vmwareengine.NetworkPolicyExternalIpArgs{\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.NetworkPolicyInternetAccessArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.NetworkPolicyExternalIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_policy_nw = new Network(\"network-policy-nw\", NetworkArgs.builder()\n .name(\"sample-network\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"VMwareEngine standard network sample\")\n .build());\n\n var vmw_engine_network_policy = new NetworkPolicy(\"vmw-engine-network-policy\", NetworkPolicyArgs.builder()\n .location(\"us-west1\")\n .name(\"sample-network-policy\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(network_policy_nw.id())\n .description(\"Sample Network Policy\")\n .internetAccess(NetworkPolicyInternetAccessArgs.builder()\n .enabled(true)\n .build())\n .externalIp(NetworkPolicyExternalIpArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-policy-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: sample-network\n location: global\n type: STANDARD\n description: VMwareEngine standard network sample\n vmw-engine-network-policy:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: us-west1\n name: sample-network-policy\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"network-policy-nw\"].id}\n description: Sample Network Policy\n internetAccess:\n enabled: true\n externalIp:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/networkPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, NetworkPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/networkPolicy:NetworkPolicy default projects/{{project}}/locations/{{location}}/networkPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/networkPolicy:NetworkPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/networkPolicy:NetworkPolicy default {{location}}/{{name}}\n```\n\n", + "description": "Represents a network policy resource. Network policies are regional resources.\n\n\nTo get more information about NetworkPolicy, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.networkPolicies)\n\n## Example Usage\n\n### Vmware Engine Network 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_policy_nw = new gcp.vmwareengine.Network(\"network-policy-nw\", {\n name: \"sample-network\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"VMwareEngine standard network sample\",\n});\nconst vmw_engine_network_policy = new gcp.vmwareengine.NetworkPolicy(\"vmw-engine-network-policy\", {\n location: \"us-west1\",\n name: \"sample-network-policy\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: network_policy_nw.id,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_policy_nw = gcp.vmwareengine.Network(\"network-policy-nw\",\n name=\"sample-network\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"VMwareEngine standard network sample\")\nvmw_engine_network_policy = gcp.vmwareengine.NetworkPolicy(\"vmw-engine-network-policy\",\n location=\"us-west1\",\n name=\"sample-network-policy\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=network_policy_nw.id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var network_policy_nw = new Gcp.VMwareEngine.Network(\"network-policy-nw\", new()\n {\n Name = \"sample-network\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"VMwareEngine standard network sample\",\n });\n\n var vmw_engine_network_policy = new Gcp.VMwareEngine.NetworkPolicy(\"vmw-engine-network-policy\", new()\n {\n Location = \"us-west1\",\n Name = \"sample-network-policy\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = network_policy_nw.Id,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork_policy_nw, err := vmwareengine.NewNetwork(ctx, \"network-policy-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"sample-network\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"VMwareEngine standard network sample\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPolicy(ctx, \"vmw-engine-network-policy\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"sample-network-policy\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: network_policy_nw.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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_policy_nw = new Network(\"network-policy-nw\", NetworkArgs.builder()\n .name(\"sample-network\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"VMwareEngine standard network sample\")\n .build());\n\n var vmw_engine_network_policy = new NetworkPolicy(\"vmw-engine-network-policy\", NetworkPolicyArgs.builder()\n .location(\"us-west1\")\n .name(\"sample-network-policy\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(network_policy_nw.id())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-policy-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: sample-network\n location: global\n type: STANDARD\n description: VMwareEngine standard network sample\n vmw-engine-network-policy:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: us-west1\n name: sample-network-policy\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"network-policy-nw\"].id}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine Network Policy Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst network_policy_nw = new gcp.vmwareengine.Network(\"network-policy-nw\", {\n name: \"sample-network\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"VMwareEngine standard network sample\",\n});\nconst vmw_engine_network_policy = new gcp.vmwareengine.NetworkPolicy(\"vmw-engine-network-policy\", {\n location: \"us-west1\",\n name: \"sample-network-policy\",\n edgeServicesCidr: \"192.168.30.0/26\",\n vmwareEngineNetwork: network_policy_nw.id,\n description: \"Sample Network Policy\",\n internetAccess: {\n enabled: true,\n },\n externalIp: {\n enabled: true,\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nnetwork_policy_nw = gcp.vmwareengine.Network(\"network-policy-nw\",\n name=\"sample-network\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"VMwareEngine standard network sample\")\nvmw_engine_network_policy = gcp.vmwareengine.NetworkPolicy(\"vmw-engine-network-policy\",\n location=\"us-west1\",\n name=\"sample-network-policy\",\n edge_services_cidr=\"192.168.30.0/26\",\n vmware_engine_network=network_policy_nw.id,\n description=\"Sample Network Policy\",\n internet_access={\n \"enabled\": True,\n },\n external_ip={\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 network_policy_nw = new Gcp.VMwareEngine.Network(\"network-policy-nw\", new()\n {\n Name = \"sample-network\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"VMwareEngine standard network sample\",\n });\n\n var vmw_engine_network_policy = new Gcp.VMwareEngine.NetworkPolicy(\"vmw-engine-network-policy\", new()\n {\n Location = \"us-west1\",\n Name = \"sample-network-policy\",\n EdgeServicesCidr = \"192.168.30.0/26\",\n VmwareEngineNetwork = network_policy_nw.Id,\n Description = \"Sample Network Policy\",\n InternetAccess = new Gcp.VMwareEngine.Inputs.NetworkPolicyInternetAccessArgs\n {\n Enabled = true,\n },\n ExternalIp = new Gcp.VMwareEngine.Inputs.NetworkPolicyExternalIpArgs\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/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tnetwork_policy_nw, err := vmwareengine.NewNetwork(ctx, \"network-policy-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"sample-network\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"VMwareEngine standard network sample\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewNetworkPolicy(ctx, \"vmw-engine-network-policy\", \u0026vmwareengine.NetworkPolicyArgs{\n\t\t\tLocation: pulumi.String(\"us-west1\"),\n\t\t\tName: pulumi.String(\"sample-network-policy\"),\n\t\t\tEdgeServicesCidr: pulumi.String(\"192.168.30.0/26\"),\n\t\t\tVmwareEngineNetwork: network_policy_nw.ID(),\n\t\t\tDescription: pulumi.String(\"Sample Network Policy\"),\n\t\t\tInternetAccess: \u0026vmwareengine.NetworkPolicyInternetAccessArgs{\n\t\t\t\tEnabled: pulumi.Bool(true),\n\t\t\t},\n\t\t\tExternalIp: \u0026vmwareengine.NetworkPolicyExternalIpArgs{\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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicy;\nimport com.pulumi.gcp.vmwareengine.NetworkPolicyArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.NetworkPolicyInternetAccessArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.NetworkPolicyExternalIpArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class 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_policy_nw = new Network(\"network-policy-nw\", NetworkArgs.builder()\n .name(\"sample-network\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"VMwareEngine standard network sample\")\n .build());\n\n var vmw_engine_network_policy = new NetworkPolicy(\"vmw-engine-network-policy\", NetworkPolicyArgs.builder()\n .location(\"us-west1\")\n .name(\"sample-network-policy\")\n .edgeServicesCidr(\"192.168.30.0/26\")\n .vmwareEngineNetwork(network_policy_nw.id())\n .description(\"Sample Network Policy\")\n .internetAccess(NetworkPolicyInternetAccessArgs.builder()\n .enabled(true)\n .build())\n .externalIp(NetworkPolicyExternalIpArgs.builder()\n .enabled(true)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n network-policy-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: sample-network\n location: global\n type: STANDARD\n description: VMwareEngine standard network sample\n vmw-engine-network-policy:\n type: gcp:vmwareengine:NetworkPolicy\n properties:\n location: us-west1\n name: sample-network-policy\n edgeServicesCidr: 192.168.30.0/26\n vmwareEngineNetwork: ${[\"network-policy-nw\"].id}\n description: Sample Network Policy\n internetAccess:\n enabled: true\n externalIp:\n enabled: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nNetworkPolicy can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/networkPolicies/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, NetworkPolicy can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/networkPolicy:NetworkPolicy default projects/{{project}}/locations/{{location}}/networkPolicies/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/networkPolicy:NetworkPolicy default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/networkPolicy:NetworkPolicy default {{location}}/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -289321,7 +289321,7 @@ } }, "gcp:vmwareengine/privateCloud:PrivateCloud": { - "description": "Represents a private cloud resource. Private clouds are zonal resources.\n\n\nTo get more information about PrivateCloud, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds)\n\n## Example Usage\n\n### Vmware Engine Private Cloud Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pc_nw = new gcp.vmwareengine.Network(\"pc-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst vmw_engine_pc = new gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: pc_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npc_nw = gcp.vmwareengine.Network(\"pc-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nvmw_engine_pc = gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.30.0/24\",\n \"vmware_engine_network\": pc_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pc_nw = new Gcp.VMwareEngine.Network(\"pc-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var vmw_engine_pc = new Gcp.VMwareEngine.PrivateCloud(\"vmw-engine-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = pc_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vmwareengine.NewNetwork(ctx, \"pc-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"vmw-engine-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: pc_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pc_nw = new Network(\"pc-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var vmw_engine_pc = new PrivateCloud(\"vmw-engine-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(pc_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-engine-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"pc-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n pc-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine Private Cloud Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pc_nw = new gcp.vmwareengine.Network(\"pc-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst vmw_engine_pc = new gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n type: \"TIME_LIMITED\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: pc_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 1,\n customCoreCount: 32,\n }],\n autoscalingSettings: {\n autoscalingPolicies: [{\n autoscalePolicyId: \"autoscaling-policy\",\n nodeTypeId: \"standard-72\",\n scaleOutSize: 1,\n cpuThresholds: {\n scaleOut: 80,\n scaleIn: 15,\n },\n consumedMemoryThresholds: {\n scaleOut: 75,\n scaleIn: 20,\n },\n storageThresholds: {\n scaleOut: 80,\n scaleIn: 20,\n },\n }],\n minClusterNodeCount: 3,\n maxClusterNodeCount: 8,\n coolDownPeriod: \"1800s\",\n },\n },\n deletionDelayHours: 0,\n sendDeletionDelayHoursIfZero: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npc_nw = gcp.vmwareengine.Network(\"pc-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nvmw_engine_pc = gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n type=\"TIME_LIMITED\",\n network_config={\n \"management_cidr\": \"192.168.30.0/24\",\n \"vmware_engine_network\": pc_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 1,\n \"custom_core_count\": 32,\n }],\n \"autoscaling_settings\": {\n \"autoscaling_policies\": [{\n \"autoscale_policy_id\": \"autoscaling-policy\",\n \"node_type_id\": \"standard-72\",\n \"scale_out_size\": 1,\n \"cpu_thresholds\": {\n \"scale_out\": 80,\n \"scale_in\": 15,\n },\n \"consumed_memory_thresholds\": {\n \"scale_out\": 75,\n \"scale_in\": 20,\n },\n \"storage_thresholds\": {\n \"scale_out\": 80,\n \"scale_in\": 20,\n },\n }],\n \"min_cluster_node_count\": 3,\n \"max_cluster_node_count\": 8,\n \"cool_down_period\": \"1800s\",\n },\n },\n deletion_delay_hours=0,\n send_deletion_delay_hours_if_zero=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 pc_nw = new Gcp.VMwareEngine.Network(\"pc-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var vmw_engine_pc = new Gcp.VMwareEngine.PrivateCloud(\"vmw-engine-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n Type = \"TIME_LIMITED\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = pc_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 1,\n CustomCoreCount = 32,\n },\n },\n AutoscalingSettings = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterAutoscalingSettingsArgs\n {\n AutoscalingPolicies = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyArgs\n {\n AutoscalePolicyId = \"autoscaling-policy\",\n NodeTypeId = \"standard-72\",\n ScaleOutSize = 1,\n CpuThresholds = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyCpuThresholdsArgs\n {\n ScaleOut = 80,\n ScaleIn = 15,\n },\n ConsumedMemoryThresholds = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyConsumedMemoryThresholdsArgs\n {\n ScaleOut = 75,\n ScaleIn = 20,\n },\n StorageThresholds = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyStorageThresholdsArgs\n {\n ScaleOut = 80,\n ScaleIn = 20,\n },\n },\n },\n MinClusterNodeCount = 3,\n MaxClusterNodeCount = 8,\n CoolDownPeriod = \"1800s\",\n },\n },\n DeletionDelayHours = 0,\n SendDeletionDelayHoursIfZero = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vmwareengine.NewNetwork(ctx, \"pc-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"vmw-engine-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tType: pulumi.String(\"TIME_LIMITED\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: pc_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(1),\n\t\t\t\t\t\tCustomCoreCount: pulumi.Int(32),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAutoscalingSettings: \u0026vmwareengine.PrivateCloudManagementClusterAutoscalingSettingsArgs{\n\t\t\t\t\tAutoscalingPolicies: vmwareengine.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyArray{\n\t\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyArgs{\n\t\t\t\t\t\t\tAutoscalePolicyId: pulumi.String(\"autoscaling-policy\"),\n\t\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\t\tScaleOutSize: pulumi.Int(1),\n\t\t\t\t\t\t\tCpuThresholds: \u0026vmwareengine.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyCpuThresholdsArgs{\n\t\t\t\t\t\t\t\tScaleOut: pulumi.Int(80),\n\t\t\t\t\t\t\t\tScaleIn: pulumi.Int(15),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tConsumedMemoryThresholds: \u0026vmwareengine.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyConsumedMemoryThresholdsArgs{\n\t\t\t\t\t\t\t\tScaleOut: pulumi.Int(75),\n\t\t\t\t\t\t\t\tScaleIn: pulumi.Int(20),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tStorageThresholds: \u0026vmwareengine.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyStorageThresholdsArgs{\n\t\t\t\t\t\t\t\tScaleOut: pulumi.Int(80),\n\t\t\t\t\t\t\t\tScaleIn: pulumi.Int(20),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMinClusterNodeCount: pulumi.Int(3),\n\t\t\t\t\tMaxClusterNodeCount: pulumi.Int(8),\n\t\t\t\t\tCoolDownPeriod: pulumi.String(\"1800s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionDelayHours: pulumi.Int(0),\n\t\t\tSendDeletionDelayHoursIfZero: 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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterAutoscalingSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pc_nw = new Network(\"pc-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var vmw_engine_pc = new PrivateCloud(\"vmw-engine-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .type(\"TIME_LIMITED\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(pc_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(1)\n .customCoreCount(32)\n .build())\n .autoscalingSettings(PrivateCloudManagementClusterAutoscalingSettingsArgs.builder()\n .autoscalingPolicies(PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyArgs.builder()\n .autoscalePolicyId(\"autoscaling-policy\")\n .nodeTypeId(\"standard-72\")\n .scaleOutSize(1)\n .cpuThresholds(PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyCpuThresholdsArgs.builder()\n .scaleOut(80)\n .scaleIn(15)\n .build())\n .consumedMemoryThresholds(PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyConsumedMemoryThresholdsArgs.builder()\n .scaleOut(75)\n .scaleIn(20)\n .build())\n .storageThresholds(PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyStorageThresholdsArgs.builder()\n .scaleOut(80)\n .scaleIn(20)\n .build())\n .build())\n .minClusterNodeCount(3)\n .maxClusterNodeCount(8)\n .coolDownPeriod(\"1800s\")\n .build())\n .build())\n .deletionDelayHours(0)\n .sendDeletionDelayHoursIfZero(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-engine-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n type: TIME_LIMITED\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"pc-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 1\n customCoreCount: 32\n autoscalingSettings:\n autoscalingPolicies:\n - autoscalePolicyId: autoscaling-policy\n nodeTypeId: standard-72\n scaleOutSize: 1\n cpuThresholds:\n scaleOut: 80\n scaleIn: 15\n consumedMemoryThresholds:\n scaleOut: 75\n scaleIn: 20\n storageThresholds:\n scaleOut: 80\n scaleIn: 20\n minClusterNodeCount: 3\n maxClusterNodeCount: 8\n coolDownPeriod: 1800s\n deletionDelayHours: 0\n sendDeletionDelayHoursIfZero: true\n pc-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPrivateCloud can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/privateClouds/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, PrivateCloud can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default projects/{{project}}/locations/{{location}}/privateClouds/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default {{location}}/{{name}}\n```\n\n", + "description": "Represents a private cloud resource. Private clouds are zonal resources.\n\n\nTo get more information about PrivateCloud, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds)\n\n## Example Usage\n\n### Vmware Engine Private Cloud Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pc_nw = new gcp.vmwareengine.Network(\"pc-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst vmw_engine_pc = new gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: pc_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npc_nw = gcp.vmwareengine.Network(\"pc-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nvmw_engine_pc = gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.30.0/24\",\n \"vmware_engine_network\": pc_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var pc_nw = new Gcp.VMwareEngine.Network(\"pc-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var vmw_engine_pc = new Gcp.VMwareEngine.PrivateCloud(\"vmw-engine-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = pc_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpc_nw, err := vmwareengine.NewNetwork(ctx, \"pc-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"vmw-engine-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: pc_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pc_nw = new Network(\"pc-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var vmw_engine_pc = new PrivateCloud(\"vmw-engine-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(pc_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-engine-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"pc-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n pc-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n### Vmware Engine Private Cloud Full\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst pc_nw = new gcp.vmwareengine.Network(\"pc-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst vmw_engine_pc = new gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n type: \"TIME_LIMITED\",\n networkConfig: {\n managementCidr: \"192.168.30.0/24\",\n vmwareEngineNetwork: pc_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 1,\n customCoreCount: 32,\n }],\n autoscalingSettings: {\n autoscalingPolicies: [{\n autoscalePolicyId: \"autoscaling-policy\",\n nodeTypeId: \"standard-72\",\n scaleOutSize: 1,\n cpuThresholds: {\n scaleOut: 80,\n scaleIn: 15,\n },\n consumedMemoryThresholds: {\n scaleOut: 75,\n scaleIn: 20,\n },\n storageThresholds: {\n scaleOut: 80,\n scaleIn: 20,\n },\n }],\n minClusterNodeCount: 3,\n maxClusterNodeCount: 8,\n coolDownPeriod: \"1800s\",\n },\n },\n deletionDelayHours: 0,\n sendDeletionDelayHoursIfZero: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npc_nw = gcp.vmwareengine.Network(\"pc-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nvmw_engine_pc = gcp.vmwareengine.PrivateCloud(\"vmw-engine-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n type=\"TIME_LIMITED\",\n network_config={\n \"management_cidr\": \"192.168.30.0/24\",\n \"vmware_engine_network\": pc_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 1,\n \"custom_core_count\": 32,\n }],\n \"autoscaling_settings\": {\n \"autoscaling_policies\": [{\n \"autoscale_policy_id\": \"autoscaling-policy\",\n \"node_type_id\": \"standard-72\",\n \"scale_out_size\": 1,\n \"cpu_thresholds\": {\n \"scale_out\": 80,\n \"scale_in\": 15,\n },\n \"consumed_memory_thresholds\": {\n \"scale_out\": 75,\n \"scale_in\": 20,\n },\n \"storage_thresholds\": {\n \"scale_out\": 80,\n \"scale_in\": 20,\n },\n }],\n \"min_cluster_node_count\": 3,\n \"max_cluster_node_count\": 8,\n \"cool_down_period\": \"1800s\",\n },\n },\n deletion_delay_hours=0,\n send_deletion_delay_hours_if_zero=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 pc_nw = new Gcp.VMwareEngine.Network(\"pc-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var vmw_engine_pc = new Gcp.VMwareEngine.PrivateCloud(\"vmw-engine-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n Type = \"TIME_LIMITED\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.30.0/24\",\n VmwareEngineNetwork = pc_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 1,\n CustomCoreCount = 32,\n },\n },\n AutoscalingSettings = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterAutoscalingSettingsArgs\n {\n AutoscalingPolicies = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyArgs\n {\n AutoscalePolicyId = \"autoscaling-policy\",\n NodeTypeId = \"standard-72\",\n ScaleOutSize = 1,\n CpuThresholds = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyCpuThresholdsArgs\n {\n ScaleOut = 80,\n ScaleIn = 15,\n },\n ConsumedMemoryThresholds = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyConsumedMemoryThresholdsArgs\n {\n ScaleOut = 75,\n ScaleIn = 20,\n },\n StorageThresholds = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyStorageThresholdsArgs\n {\n ScaleOut = 80,\n ScaleIn = 20,\n },\n },\n },\n MinClusterNodeCount = 3,\n MaxClusterNodeCount = 8,\n CoolDownPeriod = \"1800s\",\n },\n },\n DeletionDelayHours = 0,\n SendDeletionDelayHoursIfZero = true,\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tpc_nw, err := vmwareengine.NewNetwork(ctx, \"pc-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"vmw-engine-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tType: pulumi.String(\"TIME_LIMITED\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.30.0/24\"),\n\t\t\t\tVmwareEngineNetwork: pc_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(1),\n\t\t\t\t\t\tCustomCoreCount: pulumi.Int(32),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tAutoscalingSettings: \u0026vmwareengine.PrivateCloudManagementClusterAutoscalingSettingsArgs{\n\t\t\t\t\tAutoscalingPolicies: vmwareengine.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyArray{\n\t\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyArgs{\n\t\t\t\t\t\t\tAutoscalePolicyId: pulumi.String(\"autoscaling-policy\"),\n\t\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\t\tScaleOutSize: pulumi.Int(1),\n\t\t\t\t\t\t\tCpuThresholds: \u0026vmwareengine.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyCpuThresholdsArgs{\n\t\t\t\t\t\t\t\tScaleOut: pulumi.Int(80),\n\t\t\t\t\t\t\t\tScaleIn: pulumi.Int(15),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tConsumedMemoryThresholds: \u0026vmwareengine.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyConsumedMemoryThresholdsArgs{\n\t\t\t\t\t\t\t\tScaleOut: pulumi.Int(75),\n\t\t\t\t\t\t\t\tScaleIn: pulumi.Int(20),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tStorageThresholds: \u0026vmwareengine.PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyStorageThresholdsArgs{\n\t\t\t\t\t\t\t\tScaleOut: pulumi.Int(80),\n\t\t\t\t\t\t\t\tScaleIn: pulumi.Int(20),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\tMinClusterNodeCount: pulumi.Int(3),\n\t\t\t\t\tMaxClusterNodeCount: pulumi.Int(8),\n\t\t\t\t\tCoolDownPeriod: pulumi.String(\"1800s\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\tDeletionDelayHours: pulumi.Int(0),\n\t\t\tSendDeletionDelayHoursIfZero: 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.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterAutoscalingSettingsArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var pc_nw = new Network(\"pc-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var vmw_engine_pc = new PrivateCloud(\"vmw-engine-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .type(\"TIME_LIMITED\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.30.0/24\")\n .vmwareEngineNetwork(pc_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(1)\n .customCoreCount(32)\n .build())\n .autoscalingSettings(PrivateCloudManagementClusterAutoscalingSettingsArgs.builder()\n .autoscalingPolicies(PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyArgs.builder()\n .autoscalePolicyId(\"autoscaling-policy\")\n .nodeTypeId(\"standard-72\")\n .scaleOutSize(1)\n .cpuThresholds(PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyCpuThresholdsArgs.builder()\n .scaleOut(80)\n .scaleIn(15)\n .build())\n .consumedMemoryThresholds(PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyConsumedMemoryThresholdsArgs.builder()\n .scaleOut(75)\n .scaleIn(20)\n .build())\n .storageThresholds(PrivateCloudManagementClusterAutoscalingSettingsAutoscalingPolicyStorageThresholdsArgs.builder()\n .scaleOut(80)\n .scaleIn(20)\n .build())\n .build())\n .minClusterNodeCount(3)\n .maxClusterNodeCount(8)\n .coolDownPeriod(\"1800s\")\n .build())\n .build())\n .deletionDelayHours(0)\n .sendDeletionDelayHoursIfZero(true)\n .build());\n\n }\n}\n```\n```yaml\nresources:\n vmw-engine-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n type: TIME_LIMITED\n networkConfig:\n managementCidr: 192.168.30.0/24\n vmwareEngineNetwork: ${[\"pc-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 1\n customCoreCount: 32\n autoscalingSettings:\n autoscalingPolicies:\n - autoscalePolicyId: autoscaling-policy\n nodeTypeId: standard-72\n scaleOutSize: 1\n cpuThresholds:\n scaleOut: 80\n scaleIn: 15\n consumedMemoryThresholds:\n scaleOut: 75\n scaleIn: 20\n storageThresholds:\n scaleOut: 80\n scaleIn: 20\n minClusterNodeCount: 3\n maxClusterNodeCount: 8\n coolDownPeriod: 1800s\n deletionDelayHours: 0\n sendDeletionDelayHoursIfZero: true\n pc-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nPrivateCloud can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/privateClouds/{{name}}`\n\n* `{{project}}/{{location}}/{{name}}`\n\n* `{{location}}/{{name}}`\n\nWhen using the `pulumi import` command, PrivateCloud can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default projects/{{project}}/locations/{{location}}/privateClouds/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default {{project}}/{{location}}/{{name}}\n```\n\n```sh\n$ pulumi import gcp:vmwareengine/privateCloud:PrivateCloud default {{location}}/{{name}}\n```\n\n", "properties": { "deletionDelayHours": { "type": "integer", @@ -289524,7 +289524,7 @@ } }, "gcp:vmwareengine/subnet:Subnet": { - "description": "Subnet in a private cloud. A Private Cloud contains two types of subnets: `management` subnets (such as vMotion) that\nare read-only,and `userDefined`, which can also be updated. This resource should be used to read and update `userDefined`\nsubnets. To read `management` subnets, please utilize the subnet data source.\n\n\nTo get more information about Subnet, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds.subnets)\n\n## Example Usage\n\n### Vmware Engine Subnet User Defined\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst subnet_nw = new gcp.vmwareengine.Network(\"subnet-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst subnet_pc = new gcp.vmwareengine.PrivateCloud(\"subnet-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.50.0/24\",\n vmwareEngineNetwork: subnet_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst vmw_engine_subnet = new gcp.vmwareengine.Subnet(\"vmw-engine-subnet\", {\n name: \"service-1\",\n parent: subnet_pc.id,\n ipCidrRange: \"192.168.100.0/26\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsubnet_nw = gcp.vmwareengine.Network(\"subnet-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nsubnet_pc = gcp.vmwareengine.PrivateCloud(\"subnet-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.50.0/24\",\n \"vmware_engine_network\": subnet_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\nvmw_engine_subnet = gcp.vmwareengine.Subnet(\"vmw-engine-subnet\",\n name=\"service-1\",\n parent=subnet_pc.id,\n ip_cidr_range=\"192.168.100.0/26\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var subnet_nw = new Gcp.VMwareEngine.Network(\"subnet-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var subnet_pc = new Gcp.VMwareEngine.PrivateCloud(\"subnet-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.50.0/24\",\n VmwareEngineNetwork = subnet_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var vmw_engine_subnet = new Gcp.VMwareEngine.Subnet(\"vmw-engine-subnet\", new()\n {\n Name = \"service-1\",\n Parent = subnet_pc.Id,\n IpCidrRange = \"192.168.100.0/26\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := vmwareengine.NewNetwork(ctx, \"subnet-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewPrivateCloud(ctx, \"subnet-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.50.0/24\"),\n\t\t\t\tVmwareEngineNetwork: subnet_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewSubnet(ctx, \"vmw-engine-subnet\", \u0026vmwareengine.SubnetArgs{\n\t\t\tName: pulumi.String(\"service-1\"),\n\t\t\tParent: subnet_pc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.100.0/26\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.Subnet;\nimport com.pulumi.gcp.vmwareengine.SubnetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var subnet_nw = new Network(\"subnet-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var subnet_pc = new PrivateCloud(\"subnet-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.50.0/24\")\n .vmwareEngineNetwork(subnet_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var vmw_engine_subnet = new Subnet(\"vmw-engine-subnet\", SubnetArgs.builder()\n .name(\"service-1\")\n .parent(subnet_pc.id())\n .ipCidrRange(\"192.168.100.0/26\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnet-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n subnet-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.50.0/24\n vmwareEngineNetwork: ${[\"subnet-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n vmw-engine-subnet:\n type: gcp:vmwareengine:Subnet\n properties:\n name: service-1\n parent: ${[\"subnet-pc\"].id}\n ipCidrRange: 192.168.100.0/26\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubnet can be imported using any of these accepted formats:\n\n* `{{parent}}/subnets/{{name}}`\n\nWhen using the `pulumi import` command, Subnet can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/subnet:Subnet default {{parent}}/subnets/{{name}}\n```\n\n", + "description": "Subnet in a private cloud. A Private Cloud contains two types of subnets: `management` subnets (such as vMotion) that\nare read-only,and `userDefined`, which can also be updated. This resource should be used to read and update `userDefined`\nsubnets. To read `management` subnets, please utilize the subnet data source.\n\n\nTo get more information about Subnet, see:\n\n* [API documentation](https://cloud.google.com/vmware-engine/docs/reference/rest/v1/projects.locations.privateClouds.subnets)\n\n## Example Usage\n\n### Vmware Engine Subnet User Defined\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst subnet_nw = new gcp.vmwareengine.Network(\"subnet-nw\", {\n name: \"pc-nw\",\n location: \"global\",\n type: \"STANDARD\",\n description: \"PC network description.\",\n});\nconst subnet_pc = new gcp.vmwareengine.PrivateCloud(\"subnet-pc\", {\n location: \"us-west1-a\",\n name: \"sample-pc\",\n description: \"Sample test PC.\",\n networkConfig: {\n managementCidr: \"192.168.50.0/24\",\n vmwareEngineNetwork: subnet_nw.id,\n },\n managementCluster: {\n clusterId: \"sample-mgmt-cluster\",\n nodeTypeConfigs: [{\n nodeTypeId: \"standard-72\",\n nodeCount: 3,\n }],\n },\n});\nconst vmw_engine_subnet = new gcp.vmwareengine.Subnet(\"vmw-engine-subnet\", {\n name: \"service-1\",\n parent: subnet_pc.id,\n ipCidrRange: \"192.168.100.0/26\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nsubnet_nw = gcp.vmwareengine.Network(\"subnet-nw\",\n name=\"pc-nw\",\n location=\"global\",\n type=\"STANDARD\",\n description=\"PC network description.\")\nsubnet_pc = gcp.vmwareengine.PrivateCloud(\"subnet-pc\",\n location=\"us-west1-a\",\n name=\"sample-pc\",\n description=\"Sample test PC.\",\n network_config={\n \"management_cidr\": \"192.168.50.0/24\",\n \"vmware_engine_network\": subnet_nw.id,\n },\n management_cluster={\n \"cluster_id\": \"sample-mgmt-cluster\",\n \"node_type_configs\": [{\n \"node_type_id\": \"standard-72\",\n \"node_count\": 3,\n }],\n })\nvmw_engine_subnet = gcp.vmwareengine.Subnet(\"vmw-engine-subnet\",\n name=\"service-1\",\n parent=subnet_pc.id,\n ip_cidr_range=\"192.168.100.0/26\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var subnet_nw = new Gcp.VMwareEngine.Network(\"subnet-nw\", new()\n {\n Name = \"pc-nw\",\n Location = \"global\",\n Type = \"STANDARD\",\n Description = \"PC network description.\",\n });\n\n var subnet_pc = new Gcp.VMwareEngine.PrivateCloud(\"subnet-pc\", new()\n {\n Location = \"us-west1-a\",\n Name = \"sample-pc\",\n Description = \"Sample test PC.\",\n NetworkConfig = new Gcp.VMwareEngine.Inputs.PrivateCloudNetworkConfigArgs\n {\n ManagementCidr = \"192.168.50.0/24\",\n VmwareEngineNetwork = subnet_nw.Id,\n },\n ManagementCluster = new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterArgs\n {\n ClusterId = \"sample-mgmt-cluster\",\n NodeTypeConfigs = new[]\n {\n new Gcp.VMwareEngine.Inputs.PrivateCloudManagementClusterNodeTypeConfigArgs\n {\n NodeTypeId = \"standard-72\",\n NodeCount = 3,\n },\n },\n },\n });\n\n var vmw_engine_subnet = new Gcp.VMwareEngine.Subnet(\"vmw-engine-subnet\", new()\n {\n Name = \"service-1\",\n Parent = subnet_pc.Id,\n IpCidrRange = \"192.168.100.0/26\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/vmwareengine\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tsubnet_nw, err := vmwareengine.NewNetwork(ctx, \"subnet-nw\", \u0026vmwareengine.NetworkArgs{\n\t\t\tName: pulumi.String(\"pc-nw\"),\n\t\t\tLocation: pulumi.String(\"global\"),\n\t\t\tType: pulumi.String(\"STANDARD\"),\n\t\t\tDescription: pulumi.String(\"PC network description.\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsubnet_pc, err := vmwareengine.NewPrivateCloud(ctx, \"subnet-pc\", \u0026vmwareengine.PrivateCloudArgs{\n\t\t\tLocation: pulumi.String(\"us-west1-a\"),\n\t\t\tName: pulumi.String(\"sample-pc\"),\n\t\t\tDescription: pulumi.String(\"Sample test PC.\"),\n\t\t\tNetworkConfig: \u0026vmwareengine.PrivateCloudNetworkConfigArgs{\n\t\t\t\tManagementCidr: pulumi.String(\"192.168.50.0/24\"),\n\t\t\t\tVmwareEngineNetwork: subnet_nw.ID(),\n\t\t\t},\n\t\t\tManagementCluster: \u0026vmwareengine.PrivateCloudManagementClusterArgs{\n\t\t\t\tClusterId: pulumi.String(\"sample-mgmt-cluster\"),\n\t\t\t\tNodeTypeConfigs: vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArray{\n\t\t\t\t\t\u0026vmwareengine.PrivateCloudManagementClusterNodeTypeConfigArgs{\n\t\t\t\t\t\tNodeTypeId: pulumi.String(\"standard-72\"),\n\t\t\t\t\t\tNodeCount: pulumi.Int(3),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = vmwareengine.NewSubnet(ctx, \"vmw-engine-subnet\", \u0026vmwareengine.SubnetArgs{\n\t\t\tName: pulumi.String(\"service-1\"),\n\t\t\tParent: subnet_pc.ID(),\n\t\t\tIpCidrRange: pulumi.String(\"192.168.100.0/26\"),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.vmwareengine.Network;\nimport com.pulumi.gcp.vmwareengine.NetworkArgs;\nimport com.pulumi.gcp.vmwareengine.PrivateCloud;\nimport com.pulumi.gcp.vmwareengine.PrivateCloudArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudNetworkConfigArgs;\nimport com.pulumi.gcp.vmwareengine.inputs.PrivateCloudManagementClusterArgs;\nimport com.pulumi.gcp.vmwareengine.Subnet;\nimport com.pulumi.gcp.vmwareengine.SubnetArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var subnet_nw = new Network(\"subnet-nw\", NetworkArgs.builder()\n .name(\"pc-nw\")\n .location(\"global\")\n .type(\"STANDARD\")\n .description(\"PC network description.\")\n .build());\n\n var subnet_pc = new PrivateCloud(\"subnet-pc\", PrivateCloudArgs.builder()\n .location(\"us-west1-a\")\n .name(\"sample-pc\")\n .description(\"Sample test PC.\")\n .networkConfig(PrivateCloudNetworkConfigArgs.builder()\n .managementCidr(\"192.168.50.0/24\")\n .vmwareEngineNetwork(subnet_nw.id())\n .build())\n .managementCluster(PrivateCloudManagementClusterArgs.builder()\n .clusterId(\"sample-mgmt-cluster\")\n .nodeTypeConfigs(PrivateCloudManagementClusterNodeTypeConfigArgs.builder()\n .nodeTypeId(\"standard-72\")\n .nodeCount(3)\n .build())\n .build())\n .build());\n\n var vmw_engine_subnet = new Subnet(\"vmw-engine-subnet\", SubnetArgs.builder()\n .name(\"service-1\")\n .parent(subnet_pc.id())\n .ipCidrRange(\"192.168.100.0/26\")\n .build());\n\n }\n}\n```\n```yaml\nresources:\n subnet-nw:\n type: gcp:vmwareengine:Network\n properties:\n name: pc-nw\n location: global\n type: STANDARD\n description: PC network description.\n subnet-pc:\n type: gcp:vmwareengine:PrivateCloud\n properties:\n location: us-west1-a\n name: sample-pc\n description: Sample test PC.\n networkConfig:\n managementCidr: 192.168.50.0/24\n vmwareEngineNetwork: ${[\"subnet-nw\"].id}\n managementCluster:\n clusterId: sample-mgmt-cluster\n nodeTypeConfigs:\n - nodeTypeId: standard-72\n nodeCount: 3\n vmw-engine-subnet:\n type: gcp:vmwareengine:Subnet\n properties:\n name: service-1\n parent: ${[\"subnet-pc\"].id}\n ipCidrRange: 192.168.100.0/26\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nSubnet can be imported using any of these accepted formats:\n\n* `{{parent}}/subnets/{{name}}`\n\nWhen using the `pulumi import` command, Subnet can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:vmwareengine/subnet:Subnet default {{parent}}/subnets/{{name}}\n```\n\n", "properties": { "createTime": { "type": "string", @@ -290696,7 +290696,7 @@ } }, "gcp:workstations/workstation:Workstation": { - "description": "## Example Usage\n\n### Workstation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n },\n },\n});\nconst defaultWorkstation = new gcp.workstations.Workstation(\"default\", {\n workstationId: \"work-station\",\n workstationConfigId: defaultWorkstationConfig.workstationConfigId,\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n env: {\n name: \"foo\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n },\n })\ndefault_workstation = gcp.workstations.Workstation(\"default\",\n workstation_id=\"work-station\",\n workstation_config_id=default_workstation_config.workstation_config_id,\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n env={\n \"name\": \"foo\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n },\n },\n });\n\n var defaultWorkstation = new Gcp.Workstations.Workstation(\"default\", new()\n {\n WorkstationId = \"work-station\",\n WorkstationConfigId = defaultWorkstationConfig.WorkstationConfigId,\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Env = \n {\n { \"name\", \"foo\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tdefaultWorkstationConfig, err := workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstation(ctx, \"default\", \u0026workstations.WorkstationArgs{\n\t\t\tWorkstationId: pulumi.String(\"work-station\"),\n\t\t\tWorkstationConfigId: defaultWorkstationConfig.WorkstationConfigId,\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tEnv: pulumi.StringMap{\n\t\t\t\t\"name\": pulumi.String(\"foo\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.Workstation;\nimport com.pulumi.gcp.workstations.WorkstationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .build())\n .build())\n .build());\n\n var defaultWorkstation = new Workstation(\"defaultWorkstation\", WorkstationArgs.builder()\n .workstationId(\"work-station\")\n .workstationConfigId(defaultWorkstationConfig.workstationConfigId())\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .env(Map.of(\"name\", \"foo\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n defaultWorkstation:\n type: gcp:workstations:Workstation\n name: default\n properties:\n workstationId: work-station\n workstationConfigId: ${defaultWorkstationConfig.workstationConfigId}\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n labels:\n label: key\n env:\n name: foo\n annotations:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}/workstations/{{workstation_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}`\n\nWhen using the `pulumi import` command, Workstation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstation:Workstation default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}/workstations/{{workstation_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstation:Workstation default {{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstation:Workstation default {{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}\n```\n\n", + "description": "## Example Usage\n\n### Workstation Basic\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n },\n },\n});\nconst defaultWorkstation = new gcp.workstations.Workstation(\"default\", {\n workstationId: \"work-station\",\n workstationConfigId: defaultWorkstationConfig.workstationConfigId,\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n env: {\n name: \"foo\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"workstation-cluster\",\n auto_create_subnetworks=False)\ndefault_subnetwork = gcp.compute.Subnetwork(\"default\",\n name=\"workstation-cluster\",\n ip_cidr_range=\"10.0.0.0/24\",\n region=\"us-central1\",\n network=default.name)\ndefault_workstation_cluster = gcp.workstations.WorkstationCluster(\"default\",\n workstation_cluster_id=\"workstation-cluster\",\n network=default.id,\n subnetwork=default_subnetwork.id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\ndefault_workstation_config = gcp.workstations.WorkstationConfig(\"default\",\n workstation_config_id=\"workstation-config\",\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n host={\n \"gce_instance\": {\n \"machine_type\": \"e2-standard-4\",\n \"boot_disk_size_gb\": 35,\n \"disable_public_ip_addresses\": True,\n },\n })\ndefault_workstation = gcp.workstations.Workstation(\"default\",\n workstation_id=\"work-station\",\n workstation_config_id=default_workstation_config.workstation_config_id,\n workstation_cluster_id=default_workstation_cluster.workstation_cluster_id,\n location=\"us-central1\",\n labels={\n \"label\": \"key\",\n },\n env={\n \"name\": \"foo\",\n },\n annotations={\n \"label-one\": \"value-one\",\n })\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n },\n },\n });\n\n var defaultWorkstation = new Gcp.Workstations.Workstation(\"default\", new()\n {\n WorkstationId = \"work-station\",\n WorkstationConfigId = defaultWorkstationConfig.WorkstationConfigId,\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Env = \n {\n { \"name\", \"foo\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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_default, err := compute.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultSubnetwork, err := compute.NewSubnetwork(ctx, \"default\", \u0026compute.SubnetworkArgs{\n\t\t\tName: pulumi.String(\"workstation-cluster\"),\n\t\t\tIpCidrRange: pulumi.String(\"10.0.0.0/24\"),\n\t\t\tRegion: pulumi.String(\"us-central1\"),\n\t\t\tNetwork: _default.Name,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationCluster, err := workstations.NewWorkstationCluster(ctx, \"default\", \u0026workstations.WorkstationClusterArgs{\n\t\t\tWorkstationClusterId: pulumi.String(\"workstation-cluster\"),\n\t\t\tNetwork: _default.ID(),\n\t\t\tSubnetwork: defaultSubnetwork.ID(),\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefaultWorkstationConfig, err := workstations.NewWorkstationConfig(ctx, \"default\", \u0026workstations.WorkstationConfigArgs{\n\t\t\tWorkstationConfigId: pulumi.String(\"workstation-config\"),\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tHost: \u0026workstations.WorkstationConfigHostArgs{\n\t\t\t\tGceInstance: \u0026workstations.WorkstationConfigHostGceInstanceArgs{\n\t\t\t\t\tMachineType: pulumi.String(\"e2-standard-4\"),\n\t\t\t\t\tBootDiskSizeGb: pulumi.Int(35),\n\t\t\t\t\tDisablePublicIpAddresses: pulumi.Bool(true),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = workstations.NewWorkstation(ctx, \"default\", \u0026workstations.WorkstationArgs{\n\t\t\tWorkstationId: pulumi.String(\"work-station\"),\n\t\t\tWorkstationConfigId: defaultWorkstationConfig.WorkstationConfigId,\n\t\t\tWorkstationClusterId: defaultWorkstationCluster.WorkstationClusterId,\n\t\t\tLocation: pulumi.String(\"us-central1\"),\n\t\t\tLabels: pulumi.StringMap{\n\t\t\t\t\"label\": pulumi.String(\"key\"),\n\t\t\t},\n\t\t\tEnv: pulumi.StringMap{\n\t\t\t\t\"name\": pulumi.String(\"foo\"),\n\t\t\t},\n\t\t\tAnnotations: pulumi.StringMap{\n\t\t\t\t\"label-one\": pulumi.String(\"value-one\"),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.Network;\nimport com.pulumi.gcp.compute.NetworkArgs;\nimport com.pulumi.gcp.compute.Subnetwork;\nimport com.pulumi.gcp.compute.SubnetworkArgs;\nimport com.pulumi.gcp.workstations.WorkstationCluster;\nimport com.pulumi.gcp.workstations.WorkstationClusterArgs;\nimport com.pulumi.gcp.workstations.WorkstationConfig;\nimport com.pulumi.gcp.workstations.WorkstationConfigArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostArgs;\nimport com.pulumi.gcp.workstations.inputs.WorkstationConfigHostGceInstanceArgs;\nimport com.pulumi.gcp.workstations.Workstation;\nimport com.pulumi.gcp.workstations.WorkstationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .build())\n .build())\n .build());\n\n var defaultWorkstation = new Workstation(\"defaultWorkstation\", WorkstationArgs.builder()\n .workstationId(\"work-station\")\n .workstationConfigId(defaultWorkstationConfig.workstationConfigId())\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .env(Map.of(\"name\", \"foo\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Network\n properties:\n name: workstation-cluster\n autoCreateSubnetworks: false\n defaultSubnetwork:\n type: gcp:compute:Subnetwork\n name: default\n properties:\n name: workstation-cluster\n ipCidrRange: 10.0.0.0/24\n region: us-central1\n network: ${default.name}\n defaultWorkstationCluster:\n type: gcp:workstations:WorkstationCluster\n name: default\n properties:\n workstationClusterId: workstation-cluster\n network: ${default.id}\n subnetwork: ${defaultSubnetwork.id}\n location: us-central1\n labels:\n label: key\n annotations:\n label-one: value-one\n defaultWorkstationConfig:\n type: gcp:workstations:WorkstationConfig\n name: default\n properties:\n workstationConfigId: workstation-config\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n defaultWorkstation:\n type: gcp:workstations:Workstation\n name: default\n properties:\n workstationId: work-station\n workstationConfigId: ${defaultWorkstationConfig.workstationConfigId}\n workstationClusterId: ${defaultWorkstationCluster.workstationClusterId}\n location: us-central1\n labels:\n label: key\n env:\n name: foo\n annotations:\n label-one: value-one\n```\n\u003c!--End PulumiCodeChooser --\u003e\n\n## Import\n\nWorkstation can be imported using any of these accepted formats:\n\n* `projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}/workstations/{{workstation_id}}`\n\n* `{{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}`\n\n* `{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}`\n\nWhen using the `pulumi import` command, Workstation can be imported using one of the formats above. For example:\n\n```sh\n$ pulumi import gcp:workstations/workstation:Workstation default projects/{{project}}/locations/{{location}}/workstationClusters/{{workstation_cluster_id}}/workstationConfigs/{{workstation_config_id}}/workstations/{{workstation_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstation:Workstation default {{project}}/{{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}\n```\n\n```sh\n$ pulumi import gcp:workstations/workstation:Workstation default {{location}}/{{workstation_cluster_id}}/{{workstation_config_id}}/{{workstation_id}}\n```\n\n", "properties": { "annotations": { "type": "object", @@ -291261,7 +291261,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: tagKey1.id,\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 maxUsableWorkstations: 1,\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n disableSsh: false,\n vmTags: pulumi.all([tagKey1.id, tagValue1.id]).apply(([tagKey1Id, tagValue1Id]) =\u003e {\n [tagKey1Id]: tagValue1Id,\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.id,\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 max_usable_workstations=1,\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 tagKey1Id=tag_key1.id,\n tagValue1Id=tag_value1.id\n).apply(lambda resolved_outputs: {\n resolved_outputs['tagKey1Id']: resolved_outputs['tagValue1Id'],\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.Id,\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 MaxUsableWorkstations = 1,\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.Id, tagValue1.Id).Apply(values =\u003e\n {\n var tagKey1Id = values.Item1;\n var tagValue1Id = values.Item2;\n return \n {\n { tagKey1Id, tagValue1Id },\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/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.ID(),\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},\nMaxUsableWorkstations: pulumi.Int(1),\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.ID(),tagValue1.ID()).ApplyT(func(_args []interface{}) (map[string]string, error) {\ntagKey1Id := _args[0].(string)\ntagValue1Id := _args[1].(string)\nreturn map[string]string{\ntagKey1Id: tagValue1Id,\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.id())\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 .maxUsableWorkstations(1)\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.id(), tagValue1.id()).applyValue(values -\u003e {\n var tagKey1Id = values.t1;\n var tagValue1Id = values.t2;\n return Map.of(tagKey1Id, tagValue1Id);\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: ${tagKey1.id}\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 maxUsableWorkstations: 1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n disableSsh: false\n vmTags:\n ${tagKey1.id}: ${tagValue1.id}\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### Workstation Config Allowed Ports\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n },\n },\n allowedPorts: [\n {\n first: 80,\n last: 80,\n },\n {\n first: 22,\n last: 22,\n },\n {\n first: 1024,\n last: 65535,\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 },\n },\n allowed_ports=[\n {\n \"first\": 80,\n \"last\": 80,\n },\n {\n \"first\": 22,\n \"last\": 22,\n },\n {\n \"first\": 1024,\n \"last\": 65535,\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n },\n },\n AllowedPorts = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigAllowedPortArgs\n {\n First = 80,\n Last = 80,\n },\n new Gcp.Workstations.Inputs.WorkstationConfigAllowedPortArgs\n {\n First = 22,\n Last = 22,\n },\n new Gcp.Workstations.Inputs.WorkstationConfigAllowedPortArgs\n {\n First = 1024,\n Last = 65535,\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},\n\t\t\t},\n\t\t\tAllowedPorts: workstations.WorkstationConfigAllowedPortArray{\n\t\t\t\t\u0026workstations.WorkstationConfigAllowedPortArgs{\n\t\t\t\t\tFirst: pulumi.Int(80),\n\t\t\t\t\tLast: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t\t\u0026workstations.WorkstationConfigAllowedPortArgs{\n\t\t\t\t\tFirst: pulumi.Int(22),\n\t\t\t\t\tLast: pulumi.Int(22),\n\t\t\t\t},\n\t\t\t\t\u0026workstations.WorkstationConfigAllowedPortArgs{\n\t\t\t\t\tFirst: pulumi.Int(1024),\n\t\t\t\t\tLast: pulumi.Int(65535),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.WorkstationConfigAllowedPortArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .build())\n .build())\n .allowedPorts( \n WorkstationConfigAllowedPortArgs.builder()\n .first(80)\n .last(80)\n .build(),\n WorkstationConfigAllowedPortArgs.builder()\n .first(22)\n .last(22)\n .build(),\n WorkstationConfigAllowedPortArgs.builder()\n .first(1024)\n .last(65535)\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 allowedPorts:\n - first: 80\n last: 80\n - first: 22\n last: 22\n - first: 1024\n last: 65535\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: tagKey1.id,\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 maxUsableWorkstations: 1,\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n disableSsh: false,\n vmTags: pulumi.all([tagKey1.id, tagValue1.id]).apply(([tagKey1Id, tagValue1Id]) =\u003e {\n [tagKey1Id]: tagValue1Id,\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.id,\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 max_usable_workstations=1,\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 tagKey1Id=tag_key1.id,\n tagValue1Id=tag_value1.id\n).apply(lambda resolved_outputs: {\n resolved_outputs['tagKey1Id']: resolved_outputs['tagValue1Id'],\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.Id,\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 MaxUsableWorkstations = 1,\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.Id, tagValue1.Id).Apply(values =\u003e\n {\n var tagKey1Id = values.Item1;\n var tagValue1Id = values.Item2;\n return \n {\n { tagKey1Id, tagValue1Id },\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/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.ID(),\nShortName: pulumi.String(\"valuename\"),\n})\nif err != nil {\nreturn err\n}\n_default, 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},\nMaxUsableWorkstations: pulumi.Int(1),\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.ID(),tagValue1.ID()).ApplyT(func(_args []interface{}) (map[string]string, error) {\ntagKey1Id := _args[0].(string)\ntagValue1Id := _args[1].(string)\nreturn map[string]string{\ntagKey1Id: tagValue1Id,\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.id())\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 .maxUsableWorkstations(1)\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.id(), tagValue1.id()).applyValue(values -\u003e {\n var tagKey1Id = values.t1;\n var tagValue1Id = values.t2;\n return Map.of(tagKey1Id, tagValue1Id);\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: ${tagKey1.id}\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 maxUsableWorkstations: 1\n host:\n gceInstance:\n machineType: e2-standard-4\n bootDiskSizeGb: 35\n disablePublicIpAddresses: true\n disableSsh: false\n vmTags:\n ${tagKey1.id}: ${tagValue1.id}\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_default, 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_default, 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_default, 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_default, 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_default, 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_default, 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_default, 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### Workstation Config Allowed Ports\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"workstation-cluster\",\n autoCreateSubnetworks: false,\n});\nconst defaultSubnetwork = new gcp.compute.Subnetwork(\"default\", {\n name: \"workstation-cluster\",\n ipCidrRange: \"10.0.0.0/24\",\n region: \"us-central1\",\n network: _default.name,\n});\nconst defaultWorkstationCluster = new gcp.workstations.WorkstationCluster(\"default\", {\n workstationClusterId: \"workstation-cluster\",\n network: _default.id,\n subnetwork: defaultSubnetwork.id,\n location: \"us-central1\",\n labels: {\n label: \"key\",\n },\n annotations: {\n \"label-one\": \"value-one\",\n },\n});\nconst defaultWorkstationConfig = new gcp.workstations.WorkstationConfig(\"default\", {\n workstationConfigId: \"workstation-config\",\n workstationClusterId: defaultWorkstationCluster.workstationClusterId,\n location: \"us-central1\",\n host: {\n gceInstance: {\n machineType: \"e2-standard-4\",\n bootDiskSizeGb: 35,\n disablePublicIpAddresses: true,\n },\n },\n allowedPorts: [\n {\n first: 80,\n last: 80,\n },\n {\n first: 22,\n last: 22,\n },\n {\n first: 1024,\n last: 65535,\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 },\n },\n allowed_ports=[\n {\n \"first\": 80,\n \"last\": 80,\n },\n {\n \"first\": 22,\n \"last\": 22,\n },\n {\n \"first\": 1024,\n \"last\": 65535,\n },\n ])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = new Gcp.Compute.Network(\"default\", new()\n {\n Name = \"workstation-cluster\",\n AutoCreateSubnetworks = false,\n });\n\n var defaultSubnetwork = new Gcp.Compute.Subnetwork(\"default\", new()\n {\n Name = \"workstation-cluster\",\n IpCidrRange = \"10.0.0.0/24\",\n Region = \"us-central1\",\n Network = @default.Name,\n });\n\n var defaultWorkstationCluster = new Gcp.Workstations.WorkstationCluster(\"default\", new()\n {\n WorkstationClusterId = \"workstation-cluster\",\n Network = @default.Id,\n Subnetwork = defaultSubnetwork.Id,\n Location = \"us-central1\",\n Labels = \n {\n { \"label\", \"key\" },\n },\n Annotations = \n {\n { \"label-one\", \"value-one\" },\n },\n });\n\n var defaultWorkstationConfig = new Gcp.Workstations.WorkstationConfig(\"default\", new()\n {\n WorkstationConfigId = \"workstation-config\",\n WorkstationClusterId = defaultWorkstationCluster.WorkstationClusterId,\n Location = \"us-central1\",\n Host = new Gcp.Workstations.Inputs.WorkstationConfigHostArgs\n {\n GceInstance = new Gcp.Workstations.Inputs.WorkstationConfigHostGceInstanceArgs\n {\n MachineType = \"e2-standard-4\",\n BootDiskSizeGb = 35,\n DisablePublicIpAddresses = true,\n },\n },\n AllowedPorts = new[]\n {\n new Gcp.Workstations.Inputs.WorkstationConfigAllowedPortArgs\n {\n First = 80,\n Last = 80,\n },\n new Gcp.Workstations.Inputs.WorkstationConfigAllowedPortArgs\n {\n First = 22,\n Last = 22,\n },\n new Gcp.Workstations.Inputs.WorkstationConfigAllowedPortArgs\n {\n First = 1024,\n Last = 65535,\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_default, 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},\n\t\t\t},\n\t\t\tAllowedPorts: workstations.WorkstationConfigAllowedPortArray{\n\t\t\t\t\u0026workstations.WorkstationConfigAllowedPortArgs{\n\t\t\t\t\tFirst: pulumi.Int(80),\n\t\t\t\t\tLast: pulumi.Int(80),\n\t\t\t\t},\n\t\t\t\t\u0026workstations.WorkstationConfigAllowedPortArgs{\n\t\t\t\t\tFirst: pulumi.Int(22),\n\t\t\t\t\tLast: pulumi.Int(22),\n\t\t\t\t},\n\t\t\t\t\u0026workstations.WorkstationConfigAllowedPortArgs{\n\t\t\t\t\tFirst: pulumi.Int(1024),\n\t\t\t\t\tLast: pulumi.Int(65535),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport 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.WorkstationConfigAllowedPortArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n var default_ = new Network(\"default\", NetworkArgs.builder()\n .name(\"workstation-cluster\")\n .autoCreateSubnetworks(false)\n .build());\n\n var defaultSubnetwork = new Subnetwork(\"defaultSubnetwork\", SubnetworkArgs.builder()\n .name(\"workstation-cluster\")\n .ipCidrRange(\"10.0.0.0/24\")\n .region(\"us-central1\")\n .network(default_.name())\n .build());\n\n var defaultWorkstationCluster = new WorkstationCluster(\"defaultWorkstationCluster\", WorkstationClusterArgs.builder()\n .workstationClusterId(\"workstation-cluster\")\n .network(default_.id())\n .subnetwork(defaultSubnetwork.id())\n .location(\"us-central1\")\n .labels(Map.of(\"label\", \"key\"))\n .annotations(Map.of(\"label-one\", \"value-one\"))\n .build());\n\n var defaultWorkstationConfig = new WorkstationConfig(\"defaultWorkstationConfig\", WorkstationConfigArgs.builder()\n .workstationConfigId(\"workstation-config\")\n .workstationClusterId(defaultWorkstationCluster.workstationClusterId())\n .location(\"us-central1\")\n .host(WorkstationConfigHostArgs.builder()\n .gceInstance(WorkstationConfigHostGceInstanceArgs.builder()\n .machineType(\"e2-standard-4\")\n .bootDiskSizeGb(35)\n .disablePublicIpAddresses(true)\n .build())\n .build())\n .allowedPorts( \n WorkstationConfigAllowedPortArgs.builder()\n .first(80)\n .last(80)\n .build(),\n WorkstationConfigAllowedPortArgs.builder()\n .first(22)\n .last(22)\n .build(),\n WorkstationConfigAllowedPortArgs.builder()\n .first(1024)\n .last(65535)\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 allowedPorts:\n - first: 80\n last: 80\n - first: 22\n last: 22\n - first: 1024\n last: 65535\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": { "allowedPorts": { "type": "array", @@ -292593,7 +292593,7 @@ } }, "gcp:accesscontextmanager/getAccessPolicy:getAccessPolicy": { - "description": "Get information about an Access Context Manager AccessPolicy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy-org = gcp.accesscontextmanager.getAccessPolicy({\n parent: \"organizations/1234567\",\n});\nconst policy-scoped = gcp.accesscontextmanager.getAccessPolicy({\n parent: \"organizations/1234567\",\n scopes: [\"projects/1234567\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy_org = gcp.accesscontextmanager.get_access_policy(parent=\"organizations/1234567\")\npolicy_scoped = gcp.accesscontextmanager.get_access_policy(parent=\"organizations/1234567\",\n scopes=[\"projects/1234567\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var policy_org = Gcp.AccessContextManager.GetAccessPolicy.Invoke(new()\n {\n Parent = \"organizations/1234567\",\n });\n\n var policy_scoped = Gcp.AccessContextManager.GetAccessPolicy.Invoke(new()\n {\n Parent = \"organizations/1234567\",\n Scopes = new[]\n {\n \"projects/1234567\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := accesscontextmanager.LookupAccessPolicy(ctx, \u0026accesscontextmanager.LookupAccessPolicyArgs{\n\t\t\tParent: \"organizations/1234567\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.LookupAccessPolicy(ctx, \u0026accesscontextmanager.LookupAccessPolicyArgs{\n\t\t\tParent: \"organizations/1234567\",\n\t\t\tScopes: []string{\n\t\t\t\t\"projects/1234567\",\n\t\t\t},\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.accesscontextmanager.AccesscontextmanagerFunctions;\nimport com.pulumi.gcp.accesscontextmanager.inputs.GetAccessPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var policy-org = AccesscontextmanagerFunctions.getAccessPolicy(GetAccessPolicyArgs.builder()\n .parent(\"organizations/1234567\")\n .build());\n\n final var policy-scoped = AccesscontextmanagerFunctions.getAccessPolicy(GetAccessPolicyArgs.builder()\n .parent(\"organizations/1234567\")\n .scopes(\"projects/1234567\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n policy-org:\n fn::invoke:\n function: gcp:accesscontextmanager:getAccessPolicy\n arguments:\n parent: organizations/1234567\n policy-scoped:\n fn::invoke:\n function: gcp:accesscontextmanager:getAccessPolicy\n arguments:\n parent: organizations/1234567\n scopes:\n - projects/1234567\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about an Access Context Manager AccessPolicy.\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst policy_org = gcp.accesscontextmanager.getAccessPolicy({\n parent: \"organizations/1234567\",\n});\nconst policy_scoped = gcp.accesscontextmanager.getAccessPolicy({\n parent: \"organizations/1234567\",\n scopes: [\"projects/1234567\"],\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npolicy_org = gcp.accesscontextmanager.get_access_policy(parent=\"organizations/1234567\")\npolicy_scoped = gcp.accesscontextmanager.get_access_policy(parent=\"organizations/1234567\",\n scopes=[\"projects/1234567\"])\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var policy_org = Gcp.AccessContextManager.GetAccessPolicy.Invoke(new()\n {\n Parent = \"organizations/1234567\",\n });\n\n var policy_scoped = Gcp.AccessContextManager.GetAccessPolicy.Invoke(new()\n {\n Parent = \"organizations/1234567\",\n Scopes = new[]\n {\n \"projects/1234567\",\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/accesscontextmanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := accesscontextmanager.LookupAccessPolicy(ctx, \u0026accesscontextmanager.LookupAccessPolicyArgs{\n\t\t\tParent: \"organizations/1234567\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = accesscontextmanager.LookupAccessPolicy(ctx, \u0026accesscontextmanager.LookupAccessPolicyArgs{\n\t\t\tParent: \"organizations/1234567\",\n\t\t\tScopes: []string{\n\t\t\t\t\"projects/1234567\",\n\t\t\t},\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.accesscontextmanager.AccesscontextmanagerFunctions;\nimport com.pulumi.gcp.accesscontextmanager.inputs.GetAccessPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var policy-org = AccesscontextmanagerFunctions.getAccessPolicy(GetAccessPolicyArgs.builder()\n .parent(\"organizations/1234567\")\n .build());\n\n final var policy-scoped = AccesscontextmanagerFunctions.getAccessPolicy(GetAccessPolicyArgs.builder()\n .parent(\"organizations/1234567\")\n .scopes(\"projects/1234567\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n policy-org:\n fn::invoke:\n function: gcp:accesscontextmanager:getAccessPolicy\n arguments:\n parent: organizations/1234567\n policy-scoped:\n fn::invoke:\n function: gcp:accesscontextmanager:getAccessPolicy\n arguments:\n parent: organizations/1234567\n scopes:\n - projects/1234567\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getAccessPolicy.\n", "properties": { @@ -293004,7 +293004,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, \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", + "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": { @@ -293149,7 +293149,7 @@ } }, "gcp:apphub/getDiscoveredService:getDiscoveredService": { - "description": "Get information about a discovered service from its uri.\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 my-service = gcp.apphub.getDiscoveredService({\n location: \"my-location\",\n serviceUri: \"my-service-uri\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_service = gcp.apphub.get_discovered_service(location=\"my-location\",\n service_uri=\"my-service-uri\")\n```\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_service = Gcp.Apphub.GetDiscoveredService.Invoke(new()\n {\n Location = \"my-location\",\n ServiceUri = \"my-service-uri\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apphub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := apphub.GetDiscoveredService(ctx, \u0026apphub.GetDiscoveredServiceArgs{\n\t\t\tLocation: \"my-location\",\n\t\t\tServiceUri: \"my-service-uri\",\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.apphub.ApphubFunctions;\nimport com.pulumi.gcp.apphub.inputs.GetDiscoveredServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-service = ApphubFunctions.getDiscoveredService(GetDiscoveredServiceArgs.builder()\n .location(\"my-location\")\n .serviceUri(\"my-service-uri\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-service:\n fn::invoke:\n function: gcp:apphub:getDiscoveredService\n arguments:\n location: my-location\n serviceUri: my-service-uri\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a discovered service from its uri.\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 my_service = gcp.apphub.getDiscoveredService({\n location: \"my-location\",\n serviceUri: \"my-service-uri\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_service = gcp.apphub.get_discovered_service(location=\"my-location\",\n service_uri=\"my-service-uri\")\n```\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_service = Gcp.Apphub.GetDiscoveredService.Invoke(new()\n {\n Location = \"my-location\",\n ServiceUri = \"my-service-uri\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apphub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := apphub.GetDiscoveredService(ctx, \u0026apphub.GetDiscoveredServiceArgs{\n\t\t\tLocation: \"my-location\",\n\t\t\tServiceUri: \"my-service-uri\",\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.apphub.ApphubFunctions;\nimport com.pulumi.gcp.apphub.inputs.GetDiscoveredServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-service = ApphubFunctions.getDiscoveredService(GetDiscoveredServiceArgs.builder()\n .location(\"my-location\")\n .serviceUri(\"my-service-uri\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-service:\n fn::invoke:\n function: gcp:apphub:getDiscoveredService\n arguments:\n location: my-location\n serviceUri: my-service-uri\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getDiscoveredService.\n", "properties": { @@ -293220,7 +293220,7 @@ } }, "gcp:apphub/getDiscoveredWorkload:getDiscoveredWorkload": { - "description": "Get information about a discovered workload from its uri.\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 my-workload = gcp.apphub.getDiscoveredWorkload({\n location: \"us-central1\",\n workloadUri: \"my-workload-uri\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_workload = gcp.apphub.get_discovered_workload(location=\"us-central1\",\n workload_uri=\"my-workload-uri\")\n```\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_workload = Gcp.Apphub.GetDiscoveredWorkload.Invoke(new()\n {\n Location = \"us-central1\",\n WorkloadUri = \"my-workload-uri\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apphub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := apphub.GetDiscoveredWorkload(ctx, \u0026apphub.GetDiscoveredWorkloadArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t\tWorkloadUri: \"my-workload-uri\",\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.apphub.ApphubFunctions;\nimport com.pulumi.gcp.apphub.inputs.GetDiscoveredWorkloadArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-workload = ApphubFunctions.getDiscoveredWorkload(GetDiscoveredWorkloadArgs.builder()\n .location(\"us-central1\")\n .workloadUri(\"my-workload-uri\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-workload:\n fn::invoke:\n function: gcp:apphub:getDiscoveredWorkload\n arguments:\n location: us-central1\n workloadUri: my-workload-uri\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a discovered workload from its uri.\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 my_workload = gcp.apphub.getDiscoveredWorkload({\n location: \"us-central1\",\n workloadUri: \"my-workload-uri\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_workload = gcp.apphub.get_discovered_workload(location=\"us-central1\",\n workload_uri=\"my-workload-uri\")\n```\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_workload = Gcp.Apphub.GetDiscoveredWorkload.Invoke(new()\n {\n Location = \"us-central1\",\n WorkloadUri = \"my-workload-uri\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/apphub\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := apphub.GetDiscoveredWorkload(ctx, \u0026apphub.GetDiscoveredWorkloadArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t\tWorkloadUri: \"my-workload-uri\",\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.apphub.ApphubFunctions;\nimport com.pulumi.gcp.apphub.inputs.GetDiscoveredWorkloadArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-workload = ApphubFunctions.getDiscoveredWorkload(GetDiscoveredWorkloadArgs.builder()\n .location(\"us-central1\")\n .workloadUri(\"my-workload-uri\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-workload:\n fn::invoke:\n function: gcp:apphub:getDiscoveredWorkload\n arguments:\n location: us-central1\n workloadUri: my-workload-uri\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getDiscoveredWorkload.\n", "properties": { @@ -293430,7 +293430,7 @@ } }, "gcp:artifactregistry/getRepository:getRepository": { - "description": "Get information about a Google Artifact Registry Repository. For more information see\nthe [official documentation](https://cloud.google.com/artifact-registry/docs/)\nand [API](https://cloud.google.com/artifact-registry/docs/apis).\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 my-repo = gcp.artifactregistry.getRepository({\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.get_repository(location=\"us-central1\",\n repository_id=\"my-repository\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = Gcp.ArtifactRegistry.GetRepository.Invoke(new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\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.LookupRepository(ctx, \u0026artifactregistry.LookupRepositoryArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t\tRepositoryId: \"my-repository\",\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.artifactregistry.ArtifactregistryFunctions;\nimport com.pulumi.gcp.artifactregistry.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-repo = ArtifactregistryFunctions.getRepository(GetRepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-repo:\n fn::invoke:\n function: gcp:artifactregistry:getRepository\n arguments:\n location: us-central1\n repositoryId: my-repository\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a Google Artifact Registry Repository. For more information see\nthe [official documentation](https://cloud.google.com/artifact-registry/docs/)\nand [API](https://cloud.google.com/artifact-registry/docs/apis).\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 my_repo = gcp.artifactregistry.getRepository({\n location: \"us-central1\",\n repositoryId: \"my-repository\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.artifactregistry.get_repository(location=\"us-central1\",\n repository_id=\"my-repository\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = Gcp.ArtifactRegistry.GetRepository.Invoke(new()\n {\n Location = \"us-central1\",\n RepositoryId = \"my-repository\",\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.LookupRepository(ctx, \u0026artifactregistry.LookupRepositoryArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t\tRepositoryId: \"my-repository\",\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.artifactregistry.ArtifactregistryFunctions;\nimport com.pulumi.gcp.artifactregistry.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-repo = ArtifactregistryFunctions.getRepository(GetRepositoryArgs.builder()\n .location(\"us-central1\")\n .repositoryId(\"my-repository\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-repo:\n fn::invoke:\n function: gcp:artifactregistry:getRepository\n arguments:\n location: us-central1\n repositoryId: my-repository\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRepository.\n", "properties": { @@ -293789,7 +293789,7 @@ } }, "gcp:backupdisasterrecovery/getBackupPlanAssociation:getBackupPlanAssociation": { - "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 my-backupplan-association = gcp.backupdisasterrecovery.getBackupPlanAssociation({\n location: \"us-central1\",\n backupPlanAssociationId: \"bpa-id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_backupplan_association = gcp.backupdisasterrecovery.get_backup_plan_association(location=\"us-central1\",\n backup_plan_association_id=\"bpa-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 my_backupplan_association = Gcp.BackupDisasterRecovery.GetBackupPlanAssociation.Invoke(new()\n {\n Location = \"us-central1\",\n BackupPlanAssociationId = \"bpa-id\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/backupdisasterrecovery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := backupdisasterrecovery.LookupBackupPlanAssociation(ctx, \u0026backupdisasterrecovery.LookupBackupPlanAssociationArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t\tBackupPlanAssociationId: \"bpa-id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;\nimport com.pulumi.gcp.backupdisasterrecovery.inputs.GetBackupPlanAssociationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-backupplan-association = BackupdisasterrecoveryFunctions.getBackupPlanAssociation(GetBackupPlanAssociationArgs.builder()\n .location(\"us-central1\")\n .backupPlanAssociationId(\"bpa-id\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-backupplan-association:\n fn::invoke:\n function: gcp:backupdisasterrecovery:getBackupPlanAssociation\n arguments:\n location: us-central1\n backupPlanAssociationId: bpa-id\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 my_backupplan_association = gcp.backupdisasterrecovery.getBackupPlanAssociation({\n location: \"us-central1\",\n backupPlanAssociationId: \"bpa-id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_backupplan_association = gcp.backupdisasterrecovery.get_backup_plan_association(location=\"us-central1\",\n backup_plan_association_id=\"bpa-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 my_backupplan_association = Gcp.BackupDisasterRecovery.GetBackupPlanAssociation.Invoke(new()\n {\n Location = \"us-central1\",\n BackupPlanAssociationId = \"bpa-id\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/backupdisasterrecovery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := backupdisasterrecovery.LookupBackupPlanAssociation(ctx, \u0026backupdisasterrecovery.LookupBackupPlanAssociationArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t\tBackupPlanAssociationId: \"bpa-id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;\nimport com.pulumi.gcp.backupdisasterrecovery.inputs.GetBackupPlanAssociationArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-backupplan-association = BackupdisasterrecoveryFunctions.getBackupPlanAssociation(GetBackupPlanAssociationArgs.builder()\n .location(\"us-central1\")\n .backupPlanAssociationId(\"bpa-id\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-backupplan-association:\n fn::invoke:\n function: gcp:backupdisasterrecovery:getBackupPlanAssociation\n arguments:\n location: us-central1\n backupPlanAssociationId: bpa-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getBackupPlanAssociation.\n", "properties": { @@ -293876,7 +293876,7 @@ } }, "gcp:backupdisasterrecovery/getBackupVault:getBackupVault": { - "description": "A Backup and DRBackupVault.\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 my-backup-vault = gcp.backupdisasterrecovery.getBackupVault({\n location: \"us-central1\",\n backupVaultId: \"bv-1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_backup_vault = gcp.backupdisasterrecovery.get_backup_vault(location=\"us-central1\",\n backup_vault_id=\"bv-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 my_backup_vault = Gcp.BackupDisasterRecovery.GetBackupVault.Invoke(new()\n {\n Location = \"us-central1\",\n BackupVaultId = \"bv-1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/backupdisasterrecovery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := backupdisasterrecovery.LookupBackupVault(ctx, \u0026backupdisasterrecovery.LookupBackupVaultArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t\tBackupVaultId: \"bv-1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;\nimport com.pulumi.gcp.backupdisasterrecovery.inputs.GetBackupVaultArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-backup-vault = BackupdisasterrecoveryFunctions.getBackupVault(GetBackupVaultArgs.builder()\n .location(\"us-central1\")\n .backupVaultId(\"bv-1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-backup-vault:\n fn::invoke:\n function: gcp:backupdisasterrecovery:getBackupVault\n arguments:\n location: us-central1\n backupVaultId: bv-1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "A Backup and DRBackupVault.\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 my_backup_vault = gcp.backupdisasterrecovery.getBackupVault({\n location: \"us-central1\",\n backupVaultId: \"bv-1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_backup_vault = gcp.backupdisasterrecovery.get_backup_vault(location=\"us-central1\",\n backup_vault_id=\"bv-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 my_backup_vault = Gcp.BackupDisasterRecovery.GetBackupVault.Invoke(new()\n {\n Location = \"us-central1\",\n BackupVaultId = \"bv-1\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/backupdisasterrecovery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := backupdisasterrecovery.LookupBackupVault(ctx, \u0026backupdisasterrecovery.LookupBackupVaultArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t\tBackupVaultId: \"bv-1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;\nimport com.pulumi.gcp.backupdisasterrecovery.inputs.GetBackupVaultArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-backup-vault = BackupdisasterrecoveryFunctions.getBackupVault(GetBackupVaultArgs.builder()\n .location(\"us-central1\")\n .backupVaultId(\"bv-1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-backup-vault:\n fn::invoke:\n function: gcp:backupdisasterrecovery:getBackupVault\n arguments:\n location: us-central1\n backupVaultId: bv-1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getBackupVault.\n", "properties": { @@ -294158,7 +294158,7 @@ } }, "gcp:backupdisasterrecovery/getManagementServer:getManagementServer": { - "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 my-backup-dr-management-server = gcp.backupdisasterrecovery.getManagementServer({\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_backup_dr_management_server = gcp.backupdisasterrecovery.get_management_server(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 my_backup_dr_management_server = Gcp.BackupDisasterRecovery.GetManagementServer.Invoke(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/backupdisasterrecovery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := backupdisasterrecovery.LookupManagementServer(ctx, \u0026backupdisasterrecovery.LookupManagementServerArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;\nimport com.pulumi.gcp.backupdisasterrecovery.inputs.GetManagementServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-backup-dr-management-server = BackupdisasterrecoveryFunctions.getManagementServer(GetManagementServerArgs.builder()\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-backup-dr-management-server:\n fn::invoke:\n function: gcp:backupdisasterrecovery:getManagementServer\n arguments:\n location: us-central1\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 my_backup_dr_management_server = gcp.backupdisasterrecovery.getManagementServer({\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_backup_dr_management_server = gcp.backupdisasterrecovery.get_management_server(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 my_backup_dr_management_server = Gcp.BackupDisasterRecovery.GetManagementServer.Invoke(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/backupdisasterrecovery\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := backupdisasterrecovery.LookupManagementServer(ctx, \u0026backupdisasterrecovery.LookupManagementServerArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.backupdisasterrecovery.BackupdisasterrecoveryFunctions;\nimport com.pulumi.gcp.backupdisasterrecovery.inputs.GetManagementServerArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-backup-dr-management-server = BackupdisasterrecoveryFunctions.getManagementServer(GetManagementServerArgs.builder()\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-backup-dr-management-server:\n fn::invoke:\n function: gcp:backupdisasterrecovery:getManagementServer\n arguments:\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getManagementServer.\n", "properties": { @@ -294220,7 +294220,7 @@ } }, "gcp:beyondcorp/getAppConnection:getAppConnection": { - "description": "Get information about a Google BeyondCorp App Connection.\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 my-beyondcorp-app-connection = gcp.beyondcorp.getAppConnection({\n name: \"my-beyondcorp-app-connection\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_beyondcorp_app_connection = gcp.beyondcorp.get_app_connection(name=\"my-beyondcorp-app-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 my_beyondcorp_app_connection = Gcp.Beyondcorp.GetAppConnection.Invoke(new()\n {\n Name = \"my-beyondcorp-app-connection\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := beyondcorp.LookupAppConnection(ctx, \u0026beyondcorp.LookupAppConnectionArgs{\n\t\t\tName: \"my-beyondcorp-app-connection\",\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.beyondcorp.BeyondcorpFunctions;\nimport com.pulumi.gcp.beyondcorp.inputs.GetAppConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-beyondcorp-app-connection = BeyondcorpFunctions.getAppConnection(GetAppConnectionArgs.builder()\n .name(\"my-beyondcorp-app-connection\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-beyondcorp-app-connection:\n fn::invoke:\n function: gcp:beyondcorp:getAppConnection\n arguments:\n name: my-beyondcorp-app-connection\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a Google BeyondCorp App Connection.\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 my_beyondcorp_app_connection = gcp.beyondcorp.getAppConnection({\n name: \"my-beyondcorp-app-connection\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_beyondcorp_app_connection = gcp.beyondcorp.get_app_connection(name=\"my-beyondcorp-app-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 my_beyondcorp_app_connection = Gcp.Beyondcorp.GetAppConnection.Invoke(new()\n {\n Name = \"my-beyondcorp-app-connection\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := beyondcorp.LookupAppConnection(ctx, \u0026beyondcorp.LookupAppConnectionArgs{\n\t\t\tName: \"my-beyondcorp-app-connection\",\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.beyondcorp.BeyondcorpFunctions;\nimport com.pulumi.gcp.beyondcorp.inputs.GetAppConnectionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-beyondcorp-app-connection = BeyondcorpFunctions.getAppConnection(GetAppConnectionArgs.builder()\n .name(\"my-beyondcorp-app-connection\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-beyondcorp-app-connection:\n fn::invoke:\n function: gcp:beyondcorp:getAppConnection\n arguments:\n name: my-beyondcorp-app-connection\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getAppConnection.\n", "properties": { @@ -294319,7 +294319,7 @@ } }, "gcp:beyondcorp/getAppConnector:getAppConnector": { - "description": "Get information about a Google BeyondCorp App Connector.\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 my-beyondcorp-app-connector = gcp.beyondcorp.getAppConnector({\n name: \"my-beyondcorp-app-connector\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_beyondcorp_app_connector = gcp.beyondcorp.get_app_connector(name=\"my-beyondcorp-app-connector\")\n```\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_beyondcorp_app_connector = Gcp.Beyondcorp.GetAppConnector.Invoke(new()\n {\n Name = \"my-beyondcorp-app-connector\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := beyondcorp.LookupAppConnector(ctx, \u0026beyondcorp.LookupAppConnectorArgs{\n\t\t\tName: \"my-beyondcorp-app-connector\",\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.beyondcorp.BeyondcorpFunctions;\nimport com.pulumi.gcp.beyondcorp.inputs.GetAppConnectorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-beyondcorp-app-connector = BeyondcorpFunctions.getAppConnector(GetAppConnectorArgs.builder()\n .name(\"my-beyondcorp-app-connector\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-beyondcorp-app-connector:\n fn::invoke:\n function: gcp:beyondcorp:getAppConnector\n arguments:\n name: my-beyondcorp-app-connector\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a Google BeyondCorp App Connector.\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 my_beyondcorp_app_connector = gcp.beyondcorp.getAppConnector({\n name: \"my-beyondcorp-app-connector\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_beyondcorp_app_connector = gcp.beyondcorp.get_app_connector(name=\"my-beyondcorp-app-connector\")\n```\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_beyondcorp_app_connector = Gcp.Beyondcorp.GetAppConnector.Invoke(new()\n {\n Name = \"my-beyondcorp-app-connector\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := beyondcorp.LookupAppConnector(ctx, \u0026beyondcorp.LookupAppConnectorArgs{\n\t\t\tName: \"my-beyondcorp-app-connector\",\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.beyondcorp.BeyondcorpFunctions;\nimport com.pulumi.gcp.beyondcorp.inputs.GetAppConnectorArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-beyondcorp-app-connector = BeyondcorpFunctions.getAppConnector(GetAppConnectorArgs.builder()\n .name(\"my-beyondcorp-app-connector\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-beyondcorp-app-connector:\n fn::invoke:\n function: gcp:beyondcorp:getAppConnector\n arguments:\n name: my-beyondcorp-app-connector\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getAppConnector.\n", "properties": { @@ -294404,7 +294404,7 @@ } }, "gcp:beyondcorp/getAppGateway:getAppGateway": { - "description": "Get information about a Google BeyondCorp App Gateway.\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 my-beyondcorp-app-gateway = gcp.beyondcorp.getAppGateway({\n name: \"my-beyondcorp-app-gateway\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_beyondcorp_app_gateway = gcp.beyondcorp.get_app_gateway(name=\"my-beyondcorp-app-gateway\")\n```\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_beyondcorp_app_gateway = Gcp.Beyondcorp.GetAppGateway.Invoke(new()\n {\n Name = \"my-beyondcorp-app-gateway\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := beyondcorp.LookupAppGateway(ctx, \u0026beyondcorp.LookupAppGatewayArgs{\n\t\t\tName: \"my-beyondcorp-app-gateway\",\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.beyondcorp.BeyondcorpFunctions;\nimport com.pulumi.gcp.beyondcorp.inputs.GetAppGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-beyondcorp-app-gateway = BeyondcorpFunctions.getAppGateway(GetAppGatewayArgs.builder()\n .name(\"my-beyondcorp-app-gateway\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-beyondcorp-app-gateway:\n fn::invoke:\n function: gcp:beyondcorp:getAppGateway\n arguments:\n name: my-beyondcorp-app-gateway\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a Google BeyondCorp App Gateway.\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 my_beyondcorp_app_gateway = gcp.beyondcorp.getAppGateway({\n name: \"my-beyondcorp-app-gateway\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_beyondcorp_app_gateway = gcp.beyondcorp.get_app_gateway(name=\"my-beyondcorp-app-gateway\")\n```\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_beyondcorp_app_gateway = Gcp.Beyondcorp.GetAppGateway.Invoke(new()\n {\n Name = \"my-beyondcorp-app-gateway\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/beyondcorp\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := beyondcorp.LookupAppGateway(ctx, \u0026beyondcorp.LookupAppGatewayArgs{\n\t\t\tName: \"my-beyondcorp-app-gateway\",\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.beyondcorp.BeyondcorpFunctions;\nimport com.pulumi.gcp.beyondcorp.inputs.GetAppGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-beyondcorp-app-gateway = BeyondcorpFunctions.getAppGateway(GetAppGatewayArgs.builder()\n .name(\"my-beyondcorp-app-gateway\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-beyondcorp-app-gateway:\n fn::invoke:\n function: gcp:beyondcorp:getAppGateway\n arguments:\n name: my-beyondcorp-app-gateway\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getAppGateway.\n", "properties": { @@ -295325,7 +295325,7 @@ } }, "gcp:certificateauthority/getAuthority:getAuthority": { - "description": "Get info about a Google CAS Certificate Authority.\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.certificateauthority.getAuthority({\n location: \"us-west1\",\n pool: \"pool-name\",\n certificateAuthorityId: \"ca-id\",\n});\nexport const csr = _default.then(_default =\u003e _default.pemCsr);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.get_authority(location=\"us-west1\",\n pool=\"pool-name\",\n certificate_authority_id=\"ca-id\")\npulumi.export(\"csr\", default.pem_csr)\n```\n```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.CertificateAuthority.GetAuthority.Invoke(new()\n {\n Location = \"us-west1\",\n Pool = \"pool-name\",\n CertificateAuthorityId = \"ca-id\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"csr\"] = @default.Apply(@default =\u003e @default.Apply(getAuthorityResult =\u003e getAuthorityResult.PemCsr)),\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := certificateauthority.LookupAuthority(ctx, \u0026certificateauthority.LookupAuthorityArgs{\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t\tPool: pulumi.StringRef(\"pool-name\"),\n\t\t\tCertificateAuthorityId: pulumi.StringRef(\"ca-id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"csr\", _default.PemCsr)\n\t\treturn nil\n\t})\n}\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.CertificateauthorityFunctions;\nimport com.pulumi.gcp.certificateauthority.inputs.GetAuthorityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 = CertificateauthorityFunctions.getAuthority(GetAuthorityArgs.builder()\n .location(\"us-west1\")\n .pool(\"pool-name\")\n .certificateAuthorityId(\"ca-id\")\n .build());\n\n ctx.export(\"csr\", default_.pemCsr());\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n function: gcp:certificateauthority:getAuthority\n arguments:\n location: us-west1\n pool: pool-name\n certificateAuthorityId: ca-id\noutputs:\n csr: ${default.pemCsr}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get info about a Google CAS Certificate Authority.\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.certificateauthority.getAuthority({\n location: \"us-west1\",\n pool: \"pool-name\",\n certificateAuthorityId: \"ca-id\",\n});\nexport const csr = _default.then(_default =\u003e _default.pemCsr);\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificateauthority.get_authority(location=\"us-west1\",\n pool=\"pool-name\",\n certificate_authority_id=\"ca-id\")\npulumi.export(\"csr\", default.pem_csr)\n```\n```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.CertificateAuthority.GetAuthority.Invoke(new()\n {\n Location = \"us-west1\",\n Pool = \"pool-name\",\n CertificateAuthorityId = \"ca-id\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"csr\"] = @default.Apply(@default =\u003e @default.Apply(getAuthorityResult =\u003e getAuthorityResult.PemCsr)),\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := certificateauthority.LookupAuthority(ctx, \u0026certificateauthority.LookupAuthorityArgs{\n\t\t\tLocation: pulumi.StringRef(\"us-west1\"),\n\t\t\tPool: pulumi.StringRef(\"pool-name\"),\n\t\t\tCertificateAuthorityId: pulumi.StringRef(\"ca-id\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"csr\", _default.PemCsr)\n\t\treturn nil\n\t})\n}\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.CertificateauthorityFunctions;\nimport com.pulumi.gcp.certificateauthority.inputs.GetAuthorityArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 = CertificateauthorityFunctions.getAuthority(GetAuthorityArgs.builder()\n .location(\"us-west1\")\n .pool(\"pool-name\")\n .certificateAuthorityId(\"ca-id\")\n .build());\n\n ctx.export(\"csr\", default_.pemCsr());\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n function: gcp:certificateauthority:getAuthority\n arguments:\n location: us-west1\n pool: pool-name\n certificateAuthorityId: ca-id\noutputs:\n csr: ${default.pemCsr}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getAuthority.\n", "properties": { @@ -295610,7 +295610,7 @@ } }, "gcp:certificatemanager/getCertificateMap:getCertificateMap": { - "description": "Get info about a Google Certificate Manager Certificate Map resource.\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.getCertificateMap({\n name: \"cert-map\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificatemanager.get_certificate_map(name=\"cert-map\")\n```\n```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.GetCertificateMap.Invoke(new()\n {\n Name = \"cert-map\",\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.GetCertificateMap(ctx, \u0026certificatemanager.GetCertificateMapArgs{\n\t\t\tName: \"cert-map\",\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.GetCertificateMapArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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.getCertificateMap(GetCertificateMapArgs.builder()\n .name(\"cert-map\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n function: gcp:certificatemanager:getCertificateMap\n arguments:\n name: cert-map\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get info about a Google Certificate Manager Certificate Map resource.\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.getCertificateMap({\n name: \"cert-map\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.certificatemanager.get_certificate_map(name=\"cert-map\")\n```\n```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.GetCertificateMap.Invoke(new()\n {\n Name = \"cert-map\",\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.GetCertificateMap(ctx, \u0026certificatemanager.GetCertificateMapArgs{\n\t\t\tName: \"cert-map\",\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.GetCertificateMapArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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.getCertificateMap(GetCertificateMapArgs.builder()\n .name(\"cert-map\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n function: gcp:certificatemanager:getCertificateMap\n arguments:\n name: cert-map\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getCertificateMap.\n", "properties": { @@ -295692,7 +295692,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, \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", + "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": { @@ -296282,7 +296282,7 @@ } }, "gcp:cloudfunctions/getFunction:getFunction": { - "description": "Get information about a Google Cloud Function. For more information see\nthe [official documentation](https://cloud.google.com/functions/docs/)\nand [API](https://cloud.google.com/functions/docs/apis).\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 my-function = gcp.cloudfunctions.getFunction({\n name: \"function\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_function = gcp.cloudfunctions.get_function(name=\"function\")\n```\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_function = Gcp.CloudFunctions.GetFunction.Invoke(new()\n {\n Name = \"function\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudfunctions.LookupFunction(ctx, \u0026cloudfunctions.LookupFunctionArgs{\n\t\t\tName: \"function\",\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.cloudfunctions.CloudfunctionsFunctions;\nimport com.pulumi.gcp.cloudfunctions.inputs.GetFunctionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-function = CloudfunctionsFunctions.getFunction(GetFunctionArgs.builder()\n .name(\"function\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-function:\n fn::invoke:\n function: gcp:cloudfunctions:getFunction\n arguments:\n name: function\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a Google Cloud Function. For more information see\nthe [official documentation](https://cloud.google.com/functions/docs/)\nand [API](https://cloud.google.com/functions/docs/apis).\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 my_function = gcp.cloudfunctions.getFunction({\n name: \"function\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_function = gcp.cloudfunctions.get_function(name=\"function\")\n```\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_function = Gcp.CloudFunctions.GetFunction.Invoke(new()\n {\n Name = \"function\",\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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudfunctions.LookupFunction(ctx, \u0026cloudfunctions.LookupFunctionArgs{\n\t\t\tName: \"function\",\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.cloudfunctions.CloudfunctionsFunctions;\nimport com.pulumi.gcp.cloudfunctions.inputs.GetFunctionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-function = CloudfunctionsFunctions.getFunction(GetFunctionArgs.builder()\n .name(\"function\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-function:\n fn::invoke:\n function: gcp:cloudfunctions:getFunction\n arguments:\n name: function\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getFunction.\n", "properties": { @@ -296566,7 +296566,7 @@ } }, "gcp:cloudfunctionsv2/getFunction:getFunction": { - "description": "Get information about a Google Cloud Function (2nd gen). For more information see:\n\n* [API documentation](https://cloud.google.com/functions/docs/reference/rest/v2beta/projects.locations.functions).\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 my-function = gcp.cloudfunctionsv2.getFunction({\n name: \"function\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_function = gcp.cloudfunctionsv2.get_function(name=\"function\",\n location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_function = Gcp.CloudFunctionsV2.GetFunction.Invoke(new()\n {\n Name = \"function\",\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/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudfunctionsv2.LookupFunction(ctx, \u0026cloudfunctionsv2.LookupFunctionArgs{\n\t\t\tName: \"function\",\n\t\t\tLocation: \"us-central1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudfunctionsv2.Cloudfunctionsv2Functions;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.GetFunctionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-function = Cloudfunctionsv2Functions.getFunction(GetFunctionArgs.builder()\n .name(\"function\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-function:\n fn::invoke:\n function: gcp:cloudfunctionsv2:getFunction\n arguments:\n name: function\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a Google Cloud Function (2nd gen). For more information see:\n\n* [API documentation](https://cloud.google.com/functions/docs/reference/rest/v2beta/projects.locations.functions).\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 my_function = gcp.cloudfunctionsv2.getFunction({\n name: \"function\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_function = gcp.cloudfunctionsv2.get_function(name=\"function\",\n location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_function = Gcp.CloudFunctionsV2.GetFunction.Invoke(new()\n {\n Name = \"function\",\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/cloudfunctionsv2\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := cloudfunctionsv2.LookupFunction(ctx, \u0026cloudfunctionsv2.LookupFunctionArgs{\n\t\t\tName: \"function\",\n\t\t\tLocation: \"us-central1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudfunctionsv2.Cloudfunctionsv2Functions;\nimport com.pulumi.gcp.cloudfunctionsv2.inputs.GetFunctionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-function = Cloudfunctionsv2Functions.getFunction(GetFunctionArgs.builder()\n .name(\"function\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-function:\n fn::invoke:\n function: gcp:cloudfunctionsv2:getFunction\n arguments:\n name: function\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getFunction.\n", "properties": { @@ -297124,7 +297124,7 @@ } }, "gcp:cloudrun/getService:getService": { - "description": "Get information about a Google Cloud Run Service. For more information see\nthe [official documentation](https://cloud.google.com/run/docs/)\nand [API](https://cloud.google.com/run/docs/apis).\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 run-service = gcp.cloudrun.getService({\n name: \"my-service\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nrun_service = gcp.cloudrun.get_service(name=\"my-service\",\n location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var run_service = Gcp.CloudRun.GetService.Invoke(new()\n {\n Name = \"my-service\",\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/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.LookupService(ctx, \u0026cloudrun.LookupServiceArgs{\n\t\t\tName: \"my-service\",\n\t\t\tLocation: \"us-central1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.CloudrunFunctions;\nimport com.pulumi.gcp.cloudrun.inputs.GetServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var run-service = CloudrunFunctions.getService(GetServiceArgs.builder()\n .name(\"my-service\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n run-service:\n fn::invoke:\n function: gcp:cloudrun:getService\n arguments:\n name: my-service\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a Google Cloud Run Service. For more information see\nthe [official documentation](https://cloud.google.com/run/docs/)\nand [API](https://cloud.google.com/run/docs/apis).\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 run_service = gcp.cloudrun.getService({\n name: \"my-service\",\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nrun_service = gcp.cloudrun.get_service(name=\"my-service\",\n location=\"us-central1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var run_service = Gcp.CloudRun.GetService.Invoke(new()\n {\n Name = \"my-service\",\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/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.LookupService(ctx, \u0026cloudrun.LookupServiceArgs{\n\t\t\tName: \"my-service\",\n\t\t\tLocation: \"us-central1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.cloudrun.CloudrunFunctions;\nimport com.pulumi.gcp.cloudrun.inputs.GetServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var run-service = CloudrunFunctions.getService(GetServiceArgs.builder()\n .name(\"my-service\")\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n run-service:\n fn::invoke:\n function: gcp:cloudrun:getService\n arguments:\n name: my-service\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getService.\n", "properties": { @@ -298351,7 +298351,7 @@ } }, "gcp:compute/getBackendBucket:getBackendBucket": { - "description": "Get information about a BackendBucket.\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 my-backend-bucket = gcp.compute.getBackendBucket({\n name: \"my-backend\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_backend_bucket = gcp.compute.get_backend_bucket(name=\"my-backend\")\n```\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_backend_bucket = Gcp.Compute.GetBackendBucket.Invoke(new()\n {\n Name = \"my-backend\",\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.LookupBackendBucket(ctx, \u0026compute.LookupBackendBucketArgs{\n\t\t\tName: \"my-backend\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetBackendBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-backend-bucket = ComputeFunctions.getBackendBucket(GetBackendBucketArgs.builder()\n .name(\"my-backend\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-backend-bucket:\n fn::invoke:\n function: gcp:compute:getBackendBucket\n arguments:\n name: my-backend\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a BackendBucket.\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 my_backend_bucket = gcp.compute.getBackendBucket({\n name: \"my-backend\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_backend_bucket = gcp.compute.get_backend_bucket(name=\"my-backend\")\n```\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_backend_bucket = Gcp.Compute.GetBackendBucket.Invoke(new()\n {\n Name = \"my-backend\",\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.LookupBackendBucket(ctx, \u0026compute.LookupBackendBucketArgs{\n\t\t\tName: \"my-backend\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetBackendBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-backend-bucket = ComputeFunctions.getBackendBucket(GetBackendBucketArgs.builder()\n .name(\"my-backend\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-backend-bucket:\n fn::invoke:\n function: gcp:compute:getBackendBucket\n arguments:\n name: my-backend\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getBackendBucket.\n", "properties": { @@ -298828,7 +298828,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, \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", + "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": { @@ -298883,7 +298883,7 @@ } }, "gcp:compute/getDisk:getDisk": { - "description": "Get information about a Google Compute Persistent disks.\n\n[the official documentation](https://cloud.google.com/compute/docs/disks) and its [API](https://cloud.google.com/compute/docs/reference/latest/disks).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst persistent-boot-disk = gcp.compute.getDisk({\n name: \"persistent-boot-disk\",\n project: \"example\",\n});\nconst _default = new gcp.compute.Instance(\"default\", {bootDisk: {\n source: persistent_boot_disk.then(persistent_boot_disk =\u003e persistent_boot_disk.selfLink),\n autoDelete: false,\n}});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npersistent_boot_disk = gcp.compute.get_disk(name=\"persistent-boot-disk\",\n project=\"example\")\ndefault = gcp.compute.Instance(\"default\", boot_disk={\n \"source\": persistent_boot_disk.self_link,\n \"auto_delete\": False,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var persistent_boot_disk = Gcp.Compute.GetDisk.Invoke(new()\n {\n Name = \"persistent-boot-disk\",\n Project = \"example\",\n });\n\n var @default = new Gcp.Compute.Instance(\"default\", new()\n {\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n Source = persistent_boot_disk.Apply(persistent_boot_disk =\u003e persistent_boot_disk.Apply(getDiskResult =\u003e getDiskResult.SelfLink)),\n AutoDelete = false,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tpersistent_boot_disk, err := compute.LookupDisk(ctx, \u0026compute.LookupDiskArgs{\n\t\t\tName: \"persistent-boot-disk\",\n\t\t\tProject: pulumi.StringRef(\"example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tSource: pulumi.String(persistent_boot_disk.SelfLink),\n\t\t\t\tAutoDelete: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDiskArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var persistent-boot-disk = ComputeFunctions.getDisk(GetDiskArgs.builder()\n .name(\"persistent-boot-disk\")\n .project(\"example\")\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .bootDisk(InstanceBootDiskArgs.builder()\n .source(persistent_boot_disk.selfLink())\n .autoDelete(false)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Instance\n properties:\n bootDisk:\n source: ${[\"persistent-boot-disk\"].selfLink}\n autoDelete: false\nvariables:\n persistent-boot-disk:\n fn::invoke:\n function: gcp:compute:getDisk\n arguments:\n name: persistent-boot-disk\n project: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a Google Compute Persistent disks.\n\n[the official documentation](https://cloud.google.com/compute/docs/disks) and its [API](https://cloud.google.com/compute/docs/reference/latest/disks).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst persistent_boot_disk = gcp.compute.getDisk({\n name: \"persistent-boot-disk\",\n project: \"example\",\n});\nconst _default = new gcp.compute.Instance(\"default\", {bootDisk: {\n source: persistent_boot_disk.then(persistent_boot_disk =\u003e persistent_boot_disk.selfLink),\n autoDelete: false,\n}});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\npersistent_boot_disk = gcp.compute.get_disk(name=\"persistent-boot-disk\",\n project=\"example\")\ndefault = gcp.compute.Instance(\"default\", boot_disk={\n \"source\": persistent_boot_disk.self_link,\n \"auto_delete\": False,\n})\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var persistent_boot_disk = Gcp.Compute.GetDisk.Invoke(new()\n {\n Name = \"persistent-boot-disk\",\n Project = \"example\",\n });\n\n var @default = new Gcp.Compute.Instance(\"default\", new()\n {\n BootDisk = new Gcp.Compute.Inputs.InstanceBootDiskArgs\n {\n Source = persistent_boot_disk.Apply(persistent_boot_disk =\u003e persistent_boot_disk.Apply(getDiskResult =\u003e getDiskResult.SelfLink)),\n AutoDelete = false,\n },\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/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\tpersistent_boot_disk, err := compute.LookupDisk(ctx, \u0026compute.LookupDiskArgs{\n\t\t\tName: \"persistent-boot-disk\",\n\t\t\tProject: pulumi.StringRef(\"example\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewInstance(ctx, \"default\", \u0026compute.InstanceArgs{\n\t\t\tBootDisk: \u0026compute.InstanceBootDiskArgs{\n\t\t\t\tSource: pulumi.String(persistent_boot_disk.SelfLink),\n\t\t\t\tAutoDelete: pulumi.Bool(false),\n\t\t\t},\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetDiskArgs;\nimport com.pulumi.gcp.compute.Instance;\nimport com.pulumi.gcp.compute.InstanceArgs;\nimport com.pulumi.gcp.compute.inputs.InstanceBootDiskArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var persistent-boot-disk = ComputeFunctions.getDisk(GetDiskArgs.builder()\n .name(\"persistent-boot-disk\")\n .project(\"example\")\n .build());\n\n var default_ = new Instance(\"default\", InstanceArgs.builder()\n .bootDisk(InstanceBootDiskArgs.builder()\n .source(persistent_boot_disk.selfLink())\n .autoDelete(false)\n .build())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n default:\n type: gcp:compute:Instance\n properties:\n bootDisk:\n source: ${[\"persistent-boot-disk\"].selfLink}\n autoDelete: false\nvariables:\n persistent-boot-disk:\n fn::invoke:\n function: gcp:compute:getDisk\n arguments:\n name: persistent-boot-disk\n project: example\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getDisk.\n", "properties": { @@ -299181,7 +299181,7 @@ } }, "gcp:compute/getForwardingRule:getForwardingRule": { - "description": "Get a forwarding rule within GCE from its name.\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 my-forwarding-rule = gcp.compute.getForwardingRule({\n name: \"forwarding-rule-us-east1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_forwarding_rule = gcp.compute.get_forwarding_rule(name=\"forwarding-rule-us-east1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_forwarding_rule = Gcp.Compute.GetForwardingRule.Invoke(new()\n {\n Name = \"forwarding-rule-us-east1\",\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.LookupForwardingRule(ctx, \u0026compute.LookupForwardingRuleArgs{\n\t\t\tName: \"forwarding-rule-us-east1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-forwarding-rule = ComputeFunctions.getForwardingRule(GetForwardingRuleArgs.builder()\n .name(\"forwarding-rule-us-east1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-forwarding-rule:\n fn::invoke:\n function: gcp:compute:getForwardingRule\n arguments:\n name: forwarding-rule-us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get a forwarding rule within GCE from its name.\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 my_forwarding_rule = gcp.compute.getForwardingRule({\n name: \"forwarding-rule-us-east1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_forwarding_rule = gcp.compute.get_forwarding_rule(name=\"forwarding-rule-us-east1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_forwarding_rule = Gcp.Compute.GetForwardingRule.Invoke(new()\n {\n Name = \"forwarding-rule-us-east1\",\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.LookupForwardingRule(ctx, \u0026compute.LookupForwardingRuleArgs{\n\t\t\tName: \"forwarding-rule-us-east1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-forwarding-rule = ComputeFunctions.getForwardingRule(GetForwardingRuleArgs.builder()\n .name(\"forwarding-rule-us-east1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-forwarding-rule:\n fn::invoke:\n function: gcp:compute:getForwardingRule\n arguments:\n name: forwarding-rule-us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getForwardingRule.\n", "properties": { @@ -299376,7 +299376,7 @@ } }, "gcp:compute/getForwardingRules:getForwardingRules": { - "description": "List all networks in a specified Google Cloud 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 my-forwarding-rules = gcp.compute.getForwardingRules({\n project: \"my-cloud-project\",\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_forwarding_rules = gcp.compute.get_forwarding_rules(project=\"my-cloud-project\",\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 my_forwarding_rules = Gcp.Compute.GetForwardingRules.Invoke(new()\n {\n Project = \"my-cloud-project\",\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/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetForwardingRules(ctx, \u0026compute.GetForwardingRulesArgs{\n\t\t\tProject: pulumi.StringRef(\"my-cloud-project\"),\n\t\t\tRegion: pulumi.StringRef(\"us-central1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.GetForwardingRulesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-forwarding-rules = ComputeFunctions.getForwardingRules(GetForwardingRulesArgs.builder()\n .project(\"my-cloud-project\")\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-forwarding-rules:\n fn::invoke:\n function: gcp:compute:getForwardingRules\n arguments:\n project: my-cloud-project\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "List all networks in a specified Google Cloud 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 my_forwarding_rules = gcp.compute.getForwardingRules({\n project: \"my-cloud-project\",\n region: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_forwarding_rules = gcp.compute.get_forwarding_rules(project=\"my-cloud-project\",\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 my_forwarding_rules = Gcp.Compute.GetForwardingRules.Invoke(new()\n {\n Project = \"my-cloud-project\",\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/compute\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := compute.GetForwardingRules(ctx, \u0026compute.GetForwardingRulesArgs{\n\t\t\tProject: pulumi.StringRef(\"my-cloud-project\"),\n\t\t\tRegion: pulumi.StringRef(\"us-central1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\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.GetForwardingRulesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-forwarding-rules = ComputeFunctions.getForwardingRules(GetForwardingRulesArgs.builder()\n .project(\"my-cloud-project\")\n .region(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-forwarding-rules:\n fn::invoke:\n function: gcp:compute:getForwardingRules\n arguments:\n project: my-cloud-project\n region: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getForwardingRules.\n", "properties": { @@ -299506,7 +299506,7 @@ } }, "gcp:compute/getGlobalForwardingRule:getGlobalForwardingRule": { - "description": "Get a global forwarding rule within GCE from its name.\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 my-forwarding-rule = gcp.compute.getGlobalForwardingRule({\n name: \"forwarding-rule-global\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_forwarding_rule = gcp.compute.get_global_forwarding_rule(name=\"forwarding-rule-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 my_forwarding_rule = Gcp.Compute.GetGlobalForwardingRule.Invoke(new()\n {\n Name = \"forwarding-rule-global\",\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.LookupGlobalForwardingRule(ctx, \u0026compute.LookupGlobalForwardingRuleArgs{\n\t\t\tName: \"forwarding-rule-global\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetGlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-forwarding-rule = ComputeFunctions.getGlobalForwardingRule(GetGlobalForwardingRuleArgs.builder()\n .name(\"forwarding-rule-global\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-forwarding-rule:\n fn::invoke:\n function: gcp:compute:getGlobalForwardingRule\n arguments:\n name: forwarding-rule-global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get a global forwarding rule within GCE from its name.\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 my_forwarding_rule = gcp.compute.getGlobalForwardingRule({\n name: \"forwarding-rule-global\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_forwarding_rule = gcp.compute.get_global_forwarding_rule(name=\"forwarding-rule-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 my_forwarding_rule = Gcp.Compute.GetGlobalForwardingRule.Invoke(new()\n {\n Name = \"forwarding-rule-global\",\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.LookupGlobalForwardingRule(ctx, \u0026compute.LookupGlobalForwardingRuleArgs{\n\t\t\tName: \"forwarding-rule-global\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetGlobalForwardingRuleArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-forwarding-rule = ComputeFunctions.getGlobalForwardingRule(GetGlobalForwardingRuleArgs.builder()\n .name(\"forwarding-rule-global\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-forwarding-rule:\n fn::invoke:\n function: gcp:compute:getGlobalForwardingRule\n arguments:\n name: forwarding-rule-global\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getGlobalForwardingRule.\n", "properties": { @@ -301301,7 +301301,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, \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", + "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_default, 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": { @@ -301354,7 +301354,7 @@ } }, "gcp:compute/getNetwork:getNetwork": { - "description": "Get a network within GCE from its name.\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 my-network = gcp.compute.getNetwork({\n name: \"default-us-east1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_network = gcp.compute.get_network(name=\"default-us-east1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"default-us-east1\",\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.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"default-us-east1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"default-us-east1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-network:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: default-us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get a network within GCE from its name.\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 my_network = gcp.compute.getNetwork({\n name: \"default-us-east1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_network = gcp.compute.get_network(name=\"default-us-east1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_network = Gcp.Compute.GetNetwork.Invoke(new()\n {\n Name = \"default-us-east1\",\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.LookupNetwork(ctx, \u0026compute.LookupNetworkArgs{\n\t\t\tName: \"default-us-east1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-network = ComputeFunctions.getNetwork(GetNetworkArgs.builder()\n .name(\"default-us-east1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-network:\n fn::invoke:\n function: gcp:compute:getNetwork\n arguments:\n name: default-us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getNetwork.\n", "properties": { @@ -301521,7 +301521,7 @@ } }, "gcp:compute/getNetworkPeering:getNetworkPeering": { - "description": "Get information of a specified compute network peering. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/vpc/vpc-peering)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/networks).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"foobar\",\n autoCreateSubnetworks: false,\n});\nconst other = new gcp.compute.Network(\"other\", {\n name: \"other\",\n autoCreateSubnetworks: false,\n});\nconst peering1 = new gcp.compute.NetworkPeering(\"peering1\", {\n name: \"peering1\",\n network: _default.selfLink,\n peerNetwork: other.selfLink,\n});\nconst peering2 = new gcp.compute.NetworkPeering(\"peering2\", {\n name: \"peering2\",\n network: other.selfLink,\n peerNetwork: _default.selfLink,\n});\nconst peering1Ds = gcp.compute.getNetworkPeeringOutput({\n name: peering1.name,\n network: peering1.network,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"foobar\",\n auto_create_subnetworks=False)\nother = gcp.compute.Network(\"other\",\n name=\"other\",\n auto_create_subnetworks=False)\npeering1 = gcp.compute.NetworkPeering(\"peering1\",\n name=\"peering1\",\n network=default.self_link,\n peer_network=other.self_link)\npeering2 = gcp.compute.NetworkPeering(\"peering2\",\n name=\"peering2\",\n network=other.self_link,\n peer_network=default.self_link)\npeering1_ds = gcp.compute.get_network_peering_output(name=peering1.name,\n network=peering1.network)\n```\n```csharp\nusing 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 = \"foobar\",\n AutoCreateSubnetworks = false,\n });\n\n var other = new Gcp.Compute.Network(\"other\", new()\n {\n Name = \"other\",\n AutoCreateSubnetworks = false,\n });\n\n var peering1 = new Gcp.Compute.NetworkPeering(\"peering1\", new()\n {\n Name = \"peering1\",\n Network = @default.SelfLink,\n PeerNetwork = other.SelfLink,\n });\n\n var peering2 = new Gcp.Compute.NetworkPeering(\"peering2\", new()\n {\n Name = \"peering2\",\n Network = other.SelfLink,\n PeerNetwork = @default.SelfLink,\n });\n\n var peering1Ds = Gcp.Compute.GetNetworkPeering.Invoke(new()\n {\n Name = peering1.Name,\n Network = peering1.Network,\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(\"foobar\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tother, err := compute.NewNetwork(ctx, \"other\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"other\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpeering1, err := compute.NewNetworkPeering(ctx, \"peering1\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peering1\"),\n\t\t\tNetwork: _default.SelfLink,\n\t\t\tPeerNetwork: other.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeering(ctx, \"peering2\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peering2\"),\n\t\t\tNetwork: other.SelfLink,\n\t\t\tPeerNetwork: _default.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = compute.LookupNetworkPeeringOutput(ctx, compute.GetNetworkPeeringOutputArgs{\n\t\t\tName: peering1.Name,\n\t\t\tNetwork: peering1.Network,\n\t\t}, nil)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"foobar\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var other = new Network(\"other\", NetworkArgs.builder()\n .name(\"other\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var peering1 = new NetworkPeering(\"peering1\", NetworkPeeringArgs.builder()\n .name(\"peering1\")\n .network(default_.selfLink())\n .peerNetwork(other.selfLink())\n .build());\n\n var peering2 = new NetworkPeering(\"peering2\", NetworkPeeringArgs.builder()\n .name(\"peering2\")\n .network(other.selfLink())\n .peerNetwork(default_.selfLink())\n .build());\n\n final var peering1Ds = ComputeFunctions.getNetworkPeering(GetNetworkPeeringArgs.builder()\n .name(peering1.name())\n .network(peering1.network())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peering1:\n type: gcp:compute:NetworkPeering\n properties:\n name: peering1\n network: ${default.selfLink}\n peerNetwork: ${other.selfLink}\n peering2:\n type: gcp:compute:NetworkPeering\n properties:\n name: peering2\n network: ${other.selfLink}\n peerNetwork: ${default.selfLink}\n default:\n type: gcp:compute:Network\n properties:\n name: foobar\n autoCreateSubnetworks: 'false'\n other:\n type: gcp:compute:Network\n properties:\n name: other\n autoCreateSubnetworks: 'false'\nvariables:\n peering1Ds:\n fn::invoke:\n function: gcp:compute:getNetworkPeering\n arguments:\n name: ${peering1.name}\n network: ${peering1.network}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information of a specified compute network peering. For more information see\n[the official documentation](https://cloud.google.com/compute/docs/vpc/vpc-peering)\nand\n[API](https://cloud.google.com/compute/docs/reference/latest/networks).\n\n## Example Usage\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst _default = new gcp.compute.Network(\"default\", {\n name: \"foobar\",\n autoCreateSubnetworks: false,\n});\nconst other = new gcp.compute.Network(\"other\", {\n name: \"other\",\n autoCreateSubnetworks: false,\n});\nconst peering1 = new gcp.compute.NetworkPeering(\"peering1\", {\n name: \"peering1\",\n network: _default.selfLink,\n peerNetwork: other.selfLink,\n});\nconst peering2 = new gcp.compute.NetworkPeering(\"peering2\", {\n name: \"peering2\",\n network: other.selfLink,\n peerNetwork: _default.selfLink,\n});\nconst peering1Ds = gcp.compute.getNetworkPeeringOutput({\n name: peering1.name,\n network: peering1.network,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.compute.Network(\"default\",\n name=\"foobar\",\n auto_create_subnetworks=False)\nother = gcp.compute.Network(\"other\",\n name=\"other\",\n auto_create_subnetworks=False)\npeering1 = gcp.compute.NetworkPeering(\"peering1\",\n name=\"peering1\",\n network=default.self_link,\n peer_network=other.self_link)\npeering2 = gcp.compute.NetworkPeering(\"peering2\",\n name=\"peering2\",\n network=other.self_link,\n peer_network=default.self_link)\npeering1_ds = gcp.compute.get_network_peering_output(name=peering1.name,\n network=peering1.network)\n```\n```csharp\nusing 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 = \"foobar\",\n AutoCreateSubnetworks = false,\n });\n\n var other = new Gcp.Compute.Network(\"other\", new()\n {\n Name = \"other\",\n AutoCreateSubnetworks = false,\n });\n\n var peering1 = new Gcp.Compute.NetworkPeering(\"peering1\", new()\n {\n Name = \"peering1\",\n Network = @default.SelfLink,\n PeerNetwork = other.SelfLink,\n });\n\n var peering2 = new Gcp.Compute.NetworkPeering(\"peering2\", new()\n {\n Name = \"peering2\",\n Network = other.SelfLink,\n PeerNetwork = @default.SelfLink,\n });\n\n var peering1Ds = Gcp.Compute.GetNetworkPeering.Invoke(new()\n {\n Name = peering1.Name,\n Network = peering1.Network,\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.NewNetwork(ctx, \"default\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"foobar\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tother, err := compute.NewNetwork(ctx, \"other\", \u0026compute.NetworkArgs{\n\t\t\tName: pulumi.String(\"other\"),\n\t\t\tAutoCreateSubnetworks: pulumi.Bool(false),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpeering1, err := compute.NewNetworkPeering(ctx, \"peering1\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peering1\"),\n\t\t\tNetwork: _default.SelfLink,\n\t\t\tPeerNetwork: other.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = compute.NewNetworkPeering(ctx, \"peering2\", \u0026compute.NetworkPeeringArgs{\n\t\t\tName: pulumi.String(\"peering2\"),\n\t\t\tNetwork: other.SelfLink,\n\t\t\tPeerNetwork: _default.SelfLink,\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_ = compute.LookupNetworkPeeringOutput(ctx, compute.GetNetworkPeeringOutputArgs{\n\t\t\tName: peering1.Name,\n\t\t\tNetwork: peering1.Network,\n\t\t}, nil)\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.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.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworkPeeringArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n 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(\"foobar\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var other = new Network(\"other\", NetworkArgs.builder()\n .name(\"other\")\n .autoCreateSubnetworks(\"false\")\n .build());\n\n var peering1 = new NetworkPeering(\"peering1\", NetworkPeeringArgs.builder()\n .name(\"peering1\")\n .network(default_.selfLink())\n .peerNetwork(other.selfLink())\n .build());\n\n var peering2 = new NetworkPeering(\"peering2\", NetworkPeeringArgs.builder()\n .name(\"peering2\")\n .network(other.selfLink())\n .peerNetwork(default_.selfLink())\n .build());\n\n final var peering1Ds = ComputeFunctions.getNetworkPeering(GetNetworkPeeringArgs.builder()\n .name(peering1.name())\n .network(peering1.network())\n .build());\n\n }\n}\n```\n```yaml\nresources:\n peering1:\n type: gcp:compute:NetworkPeering\n properties:\n name: peering1\n network: ${default.selfLink}\n peerNetwork: ${other.selfLink}\n peering2:\n type: gcp:compute:NetworkPeering\n properties:\n name: peering2\n network: ${other.selfLink}\n peerNetwork: ${default.selfLink}\n default:\n type: gcp:compute:Network\n properties:\n name: foobar\n autoCreateSubnetworks: 'false'\n other:\n type: gcp:compute:Network\n properties:\n name: other\n autoCreateSubnetworks: 'false'\nvariables:\n peering1Ds:\n fn::invoke:\n function: gcp:compute:getNetworkPeering\n arguments:\n name: ${peering1.name}\n network: ${peering1.network}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getNetworkPeering.\n", "properties": { @@ -301595,7 +301595,7 @@ } }, "gcp:compute/getNetworks:getNetworks": { - "description": "List all networks in a specified Google Cloud 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 my-networks = gcp.compute.getNetworks({\n project: \"my-cloud-project\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_networks = gcp.compute.get_networks(project=\"my-cloud-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 my_networks = Gcp.Compute.GetNetworks.Invoke(new()\n {\n Project = \"my-cloud-project\",\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.GetNetworks(ctx, \u0026compute.GetNetworksArgs{\n\t\t\tProject: pulumi.StringRef(\"my-cloud-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworksArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-networks = ComputeFunctions.getNetworks(GetNetworksArgs.builder()\n .project(\"my-cloud-project\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-networks:\n fn::invoke:\n function: gcp:compute:getNetworks\n arguments:\n project: my-cloud-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "List all networks in a specified Google Cloud 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 my_networks = gcp.compute.getNetworks({\n project: \"my-cloud-project\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_networks = gcp.compute.get_networks(project=\"my-cloud-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 my_networks = Gcp.Compute.GetNetworks.Invoke(new()\n {\n Project = \"my-cloud-project\",\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.GetNetworks(ctx, \u0026compute.GetNetworksArgs{\n\t\t\tProject: pulumi.StringRef(\"my-cloud-project\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetNetworksArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-networks = ComputeFunctions.getNetworks(GetNetworksArgs.builder()\n .project(\"my-cloud-project\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-networks:\n fn::invoke:\n function: gcp:compute:getNetworks\n arguments:\n project: my-cloud-project\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getNetworks.\n", "properties": { @@ -302260,7 +302260,7 @@ } }, "gcp:compute/getRegionInstanceTemplate:getRegionInstanceTemplate": { - "description": "Get information about 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/rest/v1/regionInstanceTemplates).\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// by name\nconst generic = gcp.compute.getRegionInstanceTemplate({\n name: \"generic-tpl-20200107\",\n});\n// using a filter\nconst generic-regex = gcp.compute.getRegionInstanceTemplate({\n filter: \"name != generic-tpl-20200107\",\n mostRecent: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# by name\ngeneric = gcp.compute.get_region_instance_template(name=\"generic-tpl-20200107\")\n# using a filter\ngeneric_regex = gcp.compute.get_region_instance_template(filter=\"name != generic-tpl-20200107\",\n most_recent=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 // by name\n var generic = Gcp.Compute.GetRegionInstanceTemplate.Invoke(new()\n {\n Name = \"generic-tpl-20200107\",\n });\n\n // using a filter\n var generic_regex = Gcp.Compute.GetRegionInstanceTemplate.Invoke(new()\n {\n Filter = \"name != generic-tpl-20200107\",\n MostRecent = 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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// by name\n\t\t_, err := compute.LookupRegionInstanceTemplate(ctx, \u0026compute.LookupRegionInstanceTemplateArgs{\n\t\t\tName: pulumi.StringRef(\"generic-tpl-20200107\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// using a filter\n\t\t_, err = compute.LookupRegionInstanceTemplate(ctx, \u0026compute.LookupRegionInstanceTemplateArgs{\n\t\t\tFilter: pulumi.StringRef(\"name != generic-tpl-20200107\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetRegionInstanceTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // by name\n final var generic = ComputeFunctions.getRegionInstanceTemplate(GetRegionInstanceTemplateArgs.builder()\n .name(\"generic-tpl-20200107\")\n .build());\n\n // using a filter\n final var generic-regex = ComputeFunctions.getRegionInstanceTemplate(GetRegionInstanceTemplateArgs.builder()\n .filter(\"name != generic-tpl-20200107\")\n .mostRecent(true)\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n # by name\n generic:\n fn::invoke:\n function: gcp:compute:getRegionInstanceTemplate\n arguments:\n name: generic-tpl-20200107\n # using a filter\n generic-regex:\n fn::invoke:\n function: gcp:compute:getRegionInstanceTemplate\n arguments:\n filter: name != generic-tpl-20200107\n mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about 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/rest/v1/regionInstanceTemplates).\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// by name\nconst generic = gcp.compute.getRegionInstanceTemplate({\n name: \"generic-tpl-20200107\",\n});\n// using a filter\nconst generic_regex = gcp.compute.getRegionInstanceTemplate({\n filter: \"name != generic-tpl-20200107\",\n mostRecent: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# by name\ngeneric = gcp.compute.get_region_instance_template(name=\"generic-tpl-20200107\")\n# using a filter\ngeneric_regex = gcp.compute.get_region_instance_template(filter=\"name != generic-tpl-20200107\",\n most_recent=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 // by name\n var generic = Gcp.Compute.GetRegionInstanceTemplate.Invoke(new()\n {\n Name = \"generic-tpl-20200107\",\n });\n\n // using a filter\n var generic_regex = Gcp.Compute.GetRegionInstanceTemplate.Invoke(new()\n {\n Filter = \"name != generic-tpl-20200107\",\n MostRecent = 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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// by name\n\t\t_, err := compute.LookupRegionInstanceTemplate(ctx, \u0026compute.LookupRegionInstanceTemplateArgs{\n\t\t\tName: pulumi.StringRef(\"generic-tpl-20200107\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// using a filter\n\t\t_, err = compute.LookupRegionInstanceTemplate(ctx, \u0026compute.LookupRegionInstanceTemplateArgs{\n\t\t\tFilter: pulumi.StringRef(\"name != generic-tpl-20200107\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetRegionInstanceTemplateArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // by name\n final var generic = ComputeFunctions.getRegionInstanceTemplate(GetRegionInstanceTemplateArgs.builder()\n .name(\"generic-tpl-20200107\")\n .build());\n\n // using a filter\n final var generic-regex = ComputeFunctions.getRegionInstanceTemplate(GetRegionInstanceTemplateArgs.builder()\n .filter(\"name != generic-tpl-20200107\")\n .mostRecent(true)\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n # by name\n generic:\n fn::invoke:\n function: gcp:compute:getRegionInstanceTemplate\n arguments:\n name: generic-tpl-20200107\n # using a filter\n generic-regex:\n fn::invoke:\n function: gcp:compute:getRegionInstanceTemplate\n arguments:\n filter: name != generic-tpl-20200107\n mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRegionInstanceTemplate.\n", "properties": { @@ -302929,7 +302929,7 @@ } }, "gcp:compute/getRouter:getRouter": { - "description": "Get a router within GCE from its name and VPC.\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 my-router = gcp.compute.getRouter({\n name: \"myrouter-us-east1\",\n network: \"my-network\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_router = gcp.compute.get_router(name=\"myrouter-us-east1\",\n network=\"my-network\")\n```\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_router = Gcp.Compute.GetRouter.Invoke(new()\n {\n Name = \"myrouter-us-east1\",\n Network = \"my-network\",\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.LookupRouter(ctx, \u0026compute.LookupRouterArgs{\n\t\t\tName: \"myrouter-us-east1\",\n\t\t\tNetwork: \"my-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetRouterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-router = ComputeFunctions.getRouter(GetRouterArgs.builder()\n .name(\"myrouter-us-east1\")\n .network(\"my-network\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-router:\n fn::invoke:\n function: gcp:compute:getRouter\n arguments:\n name: myrouter-us-east1\n network: my-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get a router within GCE from its name and VPC.\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 my_router = gcp.compute.getRouter({\n name: \"myrouter-us-east1\",\n network: \"my-network\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_router = gcp.compute.get_router(name=\"myrouter-us-east1\",\n network=\"my-network\")\n```\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_router = Gcp.Compute.GetRouter.Invoke(new()\n {\n Name = \"myrouter-us-east1\",\n Network = \"my-network\",\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.LookupRouter(ctx, \u0026compute.LookupRouterArgs{\n\t\t\tName: \"myrouter-us-east1\",\n\t\t\tNetwork: \"my-network\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetRouterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-router = ComputeFunctions.getRouter(GetRouterArgs.builder()\n .name(\"myrouter-us-east1\")\n .network(\"my-network\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-router:\n fn::invoke:\n function: gcp:compute:getRouter\n arguments:\n name: myrouter-us-east1\n network: my-network\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRouter.\n", "properties": { @@ -303165,7 +303165,7 @@ } }, "gcp:compute/getRouterStatus:getRouterStatus": { - "description": "Get a Cloud Router's status within GCE from its name and region. This data source exposes the\nroutes learned by a Cloud Router via BGP peers.\n\nFor more information see [the official documentation](https://cloud.google.com/network-connectivity/docs/router/how-to/viewing-router-details)\nand\n[API](https://cloud.google.com/compute/docs/reference/rest/v1/routers/getRouterStatus).\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 my-router = gcp.compute.getRouterStatus({\n name: \"myrouter\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_router = gcp.compute.get_router_status(name=\"myrouter\")\n```\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_router = Gcp.Compute.GetRouterStatus.Invoke(new()\n {\n Name = \"myrouter\",\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.GetRouterStatus(ctx, \u0026compute.GetRouterStatusArgs{\n\t\t\tName: \"myrouter\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetRouterStatusArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-router = ComputeFunctions.getRouterStatus(GetRouterStatusArgs.builder()\n .name(\"myrouter\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-router:\n fn::invoke:\n function: gcp:compute:getRouterStatus\n arguments:\n name: myrouter\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get a Cloud Router's status within GCE from its name and region. This data source exposes the\nroutes learned by a Cloud Router via BGP peers.\n\nFor more information see [the official documentation](https://cloud.google.com/network-connectivity/docs/router/how-to/viewing-router-details)\nand\n[API](https://cloud.google.com/compute/docs/reference/rest/v1/routers/getRouterStatus).\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 my_router = gcp.compute.getRouterStatus({\n name: \"myrouter\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_router = gcp.compute.get_router_status(name=\"myrouter\")\n```\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_router = Gcp.Compute.GetRouterStatus.Invoke(new()\n {\n Name = \"myrouter\",\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.GetRouterStatus(ctx, \u0026compute.GetRouterStatusArgs{\n\t\t\tName: \"myrouter\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetRouterStatusArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-router = ComputeFunctions.getRouterStatus(GetRouterStatusArgs.builder()\n .name(\"myrouter\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-router:\n fn::invoke:\n function: gcp:compute:getRouterStatus\n arguments:\n name: myrouter\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRouterStatus.\n", "properties": { @@ -303234,7 +303234,7 @@ } }, "gcp:compute/getSSLPolicy:getSSLPolicy": { - "description": "Gets an SSL Policy within GCE from its name, for use with Target HTTPS and Target SSL Proxies.\n For more information see [the official documentation](https://cloud.google.com/compute/docs/load-balancing/ssl-policies).\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 my-ssl-policy = gcp.compute.getSSLPolicy({\n name: \"production-ssl-policy\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_ssl_policy = gcp.compute.get_ssl_policy(name=\"production-ssl-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 my_ssl_policy = Gcp.Compute.GetSSLPolicy.Invoke(new()\n {\n Name = \"production-ssl-policy\",\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.LookupSSLPolicy(ctx, \u0026compute.LookupSSLPolicyArgs{\n\t\t\tName: \"production-ssl-policy\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetSSLPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-ssl-policy = ComputeFunctions.getSSLPolicy(GetSSLPolicyArgs.builder()\n .name(\"production-ssl-policy\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-ssl-policy:\n fn::invoke:\n function: gcp:compute:getSSLPolicy\n arguments:\n name: production-ssl-policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Gets an SSL Policy within GCE from its name, for use with Target HTTPS and Target SSL Proxies.\n For more information see [the official documentation](https://cloud.google.com/compute/docs/load-balancing/ssl-policies).\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 my_ssl_policy = gcp.compute.getSSLPolicy({\n name: \"production-ssl-policy\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_ssl_policy = gcp.compute.get_ssl_policy(name=\"production-ssl-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 my_ssl_policy = Gcp.Compute.GetSSLPolicy.Invoke(new()\n {\n Name = \"production-ssl-policy\",\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.LookupSSLPolicy(ctx, \u0026compute.LookupSSLPolicyArgs{\n\t\t\tName: \"production-ssl-policy\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetSSLPolicyArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-ssl-policy = ComputeFunctions.getSSLPolicy(GetSSLPolicyArgs.builder()\n .name(\"production-ssl-policy\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-ssl-policy:\n fn::invoke:\n function: gcp:compute:getSSLPolicy\n arguments:\n name: production-ssl-policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getSSLPolicy.\n", "properties": { @@ -303402,7 +303402,7 @@ } }, "gcp:compute/getSnapshot:getSnapshot": { - "description": "To get more information about Snapshot, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/snapshots)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/disks/create-snapshots)\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//by name \nconst snapshot = gcp.compute.getSnapshot({\n name: \"my-snapshot\",\n});\n// using a filter\nconst latest-snapshot = gcp.compute.getSnapshot({\n filter: \"name != my-snapshot\",\n mostRecent: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n#by name \nsnapshot = gcp.compute.get_snapshot(name=\"my-snapshot\")\n# using a filter\nlatest_snapshot = gcp.compute.get_snapshot(filter=\"name != my-snapshot\",\n most_recent=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 //by name \n var snapshot = Gcp.Compute.GetSnapshot.Invoke(new()\n {\n Name = \"my-snapshot\",\n });\n\n // using a filter\n var latest_snapshot = Gcp.Compute.GetSnapshot.Invoke(new()\n {\n Filter = \"name != my-snapshot\",\n MostRecent = 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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// by name\n\t\t_, err := compute.LookupSnapshot(ctx, \u0026compute.LookupSnapshotArgs{\n\t\t\tName: pulumi.StringRef(\"my-snapshot\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// using a filter\n\t\t_, err = compute.LookupSnapshot(ctx, \u0026compute.LookupSnapshotArgs{\n\t\t\tFilter: pulumi.StringRef(\"name != my-snapshot\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n //by name \n final var snapshot = ComputeFunctions.getSnapshot(GetSnapshotArgs.builder()\n .name(\"my-snapshot\")\n .build());\n\n // using a filter\n final var latest-snapshot = ComputeFunctions.getSnapshot(GetSnapshotArgs.builder()\n .filter(\"name != my-snapshot\")\n .mostRecent(true)\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n #by name\n snapshot:\n fn::invoke:\n function: gcp:compute:getSnapshot\n arguments:\n name: my-snapshot\n # using a filter\n latest-snapshot:\n fn::invoke:\n function: gcp:compute:getSnapshot\n arguments:\n filter: name != my-snapshot\n mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "To get more information about Snapshot, see:\n\n* [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/snapshots)\n* How-to Guides\n * [Official Documentation](https://cloud.google.com/compute/docs/disks/create-snapshots)\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//by name \nconst snapshot = gcp.compute.getSnapshot({\n name: \"my-snapshot\",\n});\n// using a filter\nconst latest_snapshot = gcp.compute.getSnapshot({\n filter: \"name != my-snapshot\",\n mostRecent: true,\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n#by name \nsnapshot = gcp.compute.get_snapshot(name=\"my-snapshot\")\n# using a filter\nlatest_snapshot = gcp.compute.get_snapshot(filter=\"name != my-snapshot\",\n most_recent=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 //by name \n var snapshot = Gcp.Compute.GetSnapshot.Invoke(new()\n {\n Name = \"my-snapshot\",\n });\n\n // using a filter\n var latest_snapshot = Gcp.Compute.GetSnapshot.Invoke(new()\n {\n Filter = \"name != my-snapshot\",\n MostRecent = 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/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t// by name\n\t\t_, err := compute.LookupSnapshot(ctx, \u0026compute.LookupSnapshotArgs{\n\t\t\tName: pulumi.StringRef(\"my-snapshot\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t// using a filter\n\t\t_, err = compute.LookupSnapshot(ctx, \u0026compute.LookupSnapshotArgs{\n\t\t\tFilter: pulumi.StringRef(\"name != my-snapshot\"),\n\t\t\tMostRecent: pulumi.BoolRef(true),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetSnapshotArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n //by name \n final var snapshot = ComputeFunctions.getSnapshot(GetSnapshotArgs.builder()\n .name(\"my-snapshot\")\n .build());\n\n // using a filter\n final var latest-snapshot = ComputeFunctions.getSnapshot(GetSnapshotArgs.builder()\n .filter(\"name != my-snapshot\")\n .mostRecent(true)\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n #by name\n snapshot:\n fn::invoke:\n function: gcp:compute:getSnapshot\n arguments:\n name: my-snapshot\n # using a filter\n latest-snapshot:\n fn::invoke:\n function: gcp:compute:getSnapshot\n arguments:\n filter: name != my-snapshot\n mostRecent: true\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getSnapshot.\n", "properties": { @@ -303596,7 +303596,7 @@ } }, "gcp:compute/getSubnetwork:getSubnetwork": { - "description": "Get a subnetwork within GCE from its name and region.\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 my-subnetwork = gcp.compute.getSubnetwork({\n name: \"default-us-east1\",\n region: \"us-east1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_subnetwork = gcp.compute.get_subnetwork(name=\"default-us-east1\",\n region=\"us-east1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_subnetwork = Gcp.Compute.GetSubnetwork.Invoke(new()\n {\n Name = \"default-us-east1\",\n Region = \"us-east1\",\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.LookupSubnetwork(ctx, \u0026compute.LookupSubnetworkArgs{\n\t\t\tName: pulumi.StringRef(\"default-us-east1\"),\n\t\t\tRegion: pulumi.StringRef(\"us-east1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetSubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-subnetwork = ComputeFunctions.getSubnetwork(GetSubnetworkArgs.builder()\n .name(\"default-us-east1\")\n .region(\"us-east1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-subnetwork:\n fn::invoke:\n function: gcp:compute:getSubnetwork\n arguments:\n name: default-us-east1\n region: us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get a subnetwork within GCE from its name and region.\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 my_subnetwork = gcp.compute.getSubnetwork({\n name: \"default-us-east1\",\n region: \"us-east1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_subnetwork = gcp.compute.get_subnetwork(name=\"default-us-east1\",\n region=\"us-east1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_subnetwork = Gcp.Compute.GetSubnetwork.Invoke(new()\n {\n Name = \"default-us-east1\",\n Region = \"us-east1\",\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.LookupSubnetwork(ctx, \u0026compute.LookupSubnetworkArgs{\n\t\t\tName: pulumi.StringRef(\"default-us-east1\"),\n\t\t\tRegion: pulumi.StringRef(\"us-east1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetSubnetworkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-subnetwork = ComputeFunctions.getSubnetwork(GetSubnetworkArgs.builder()\n .name(\"default-us-east1\")\n .region(\"us-east1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-subnetwork:\n fn::invoke:\n function: gcp:compute:getSubnetwork\n arguments:\n name: default-us-east1\n region: us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getSubnetwork.\n", "properties": { @@ -303754,7 +303754,7 @@ } }, "gcp:compute/getSubnetworks:getSubnetworks": { - "description": "Get subnetworks within GCE.\nSee [the official documentation](https://cloud.google.com/vpc/docs/subnets)\nand [API](https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks/list).\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 my-subnetworks = gcp.compute.getSubnetworks({\n filter: \"ipCidrRange eq 192.168.178.0/24\",\n project: \"my-project\",\n region: \"us-east1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_subnetworks = gcp.compute.get_subnetworks(filter=\"ipCidrRange eq 192.168.178.0/24\",\n project=\"my-project\",\n region=\"us-east1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_subnetworks = Gcp.Compute.GetSubnetworks.Invoke(new()\n {\n Filter = \"ipCidrRange eq 192.168.178.0/24\",\n Project = \"my-project\",\n Region = \"us-east1\",\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.GetSubnetworks(ctx, \u0026compute.GetSubnetworksArgs{\n\t\t\tFilter: pulumi.StringRef(\"ipCidrRange eq 192.168.178.0/24\"),\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t\tRegion: pulumi.StringRef(\"us-east1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetSubnetworksArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-subnetworks = ComputeFunctions.getSubnetworks(GetSubnetworksArgs.builder()\n .filter(\"ipCidrRange eq 192.168.178.0/24\")\n .project(\"my-project\")\n .region(\"us-east1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-subnetworks:\n fn::invoke:\n function: gcp:compute:getSubnetworks\n arguments:\n filter: ipCidrRange eq 192.168.178.0/24\n project: my-project\n region: us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get subnetworks within GCE.\nSee [the official documentation](https://cloud.google.com/vpc/docs/subnets)\nand [API](https://cloud.google.com/compute/docs/reference/rest/v1/subnetworks/list).\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 my_subnetworks = gcp.compute.getSubnetworks({\n filter: \"ipCidrRange eq 192.168.178.0/24\",\n project: \"my-project\",\n region: \"us-east1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_subnetworks = gcp.compute.get_subnetworks(filter=\"ipCidrRange eq 192.168.178.0/24\",\n project=\"my-project\",\n region=\"us-east1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_subnetworks = Gcp.Compute.GetSubnetworks.Invoke(new()\n {\n Filter = \"ipCidrRange eq 192.168.178.0/24\",\n Project = \"my-project\",\n Region = \"us-east1\",\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.GetSubnetworks(ctx, \u0026compute.GetSubnetworksArgs{\n\t\t\tFilter: pulumi.StringRef(\"ipCidrRange eq 192.168.178.0/24\"),\n\t\t\tProject: pulumi.StringRef(\"my-project\"),\n\t\t\tRegion: pulumi.StringRef(\"us-east1\"),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetSubnetworksArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-subnetworks = ComputeFunctions.getSubnetworks(GetSubnetworksArgs.builder()\n .filter(\"ipCidrRange eq 192.168.178.0/24\")\n .project(\"my-project\")\n .region(\"us-east1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-subnetworks:\n fn::invoke:\n function: gcp:compute:getSubnetworks\n arguments:\n filter: ipCidrRange eq 192.168.178.0/24\n project: my-project\n region: us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getSubnetworks.\n", "properties": { @@ -303805,7 +303805,7 @@ } }, "gcp:compute/getVPNGateway:getVPNGateway": { - "description": "Get a VPN gateway within GCE from its name.\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 my-vpn-gateway = gcp.compute.getVPNGateway({\n name: \"vpn-gateway-us-east1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_vpn_gateway = gcp.compute.get_vpn_gateway(name=\"vpn-gateway-us-east1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_vpn_gateway = Gcp.Compute.GetVPNGateway.Invoke(new()\n {\n Name = \"vpn-gateway-us-east1\",\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.LookupVPNGateway(ctx, \u0026compute.LookupVPNGatewayArgs{\n\t\t\tName: \"vpn-gateway-us-east1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetVPNGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-vpn-gateway = ComputeFunctions.getVPNGateway(GetVPNGatewayArgs.builder()\n .name(\"vpn-gateway-us-east1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-vpn-gateway:\n fn::invoke:\n function: gcp:compute:getVPNGateway\n arguments:\n name: vpn-gateway-us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get a VPN gateway within GCE from its name.\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 my_vpn_gateway = gcp.compute.getVPNGateway({\n name: \"vpn-gateway-us-east1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_vpn_gateway = gcp.compute.get_vpn_gateway(name=\"vpn-gateway-us-east1\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_vpn_gateway = Gcp.Compute.GetVPNGateway.Invoke(new()\n {\n Name = \"vpn-gateway-us-east1\",\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.LookupVPNGateway(ctx, \u0026compute.LookupVPNGatewayArgs{\n\t\t\tName: \"vpn-gateway-us-east1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetVPNGatewayArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-vpn-gateway = ComputeFunctions.getVPNGateway(GetVPNGatewayArgs.builder()\n .name(\"vpn-gateway-us-east1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-vpn-gateway:\n fn::invoke:\n function: gcp:compute:getVPNGateway\n arguments:\n name: vpn-gateway-us-east1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getVPNGateway.\n", "properties": { @@ -303923,7 +303923,7 @@ }, "gcp:compute/routerStatus:RouterStatus": { "deprecationMessage": "gcp.compute.RouterStatus has been deprecated in favor of gcp.compute.getRouterStatus", - "description": "Get a Cloud Router's status within GCE from its name and region. This data source exposes the\nroutes learned by a Cloud Router via BGP peers.\n\nFor more information see [the official documentation](https://cloud.google.com/network-connectivity/docs/router/how-to/viewing-router-details)\nand\n[API](https://cloud.google.com/compute/docs/reference/rest/v1/routers/getRouterStatus).\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 my-router = gcp.compute.getRouterStatus({\n name: \"myrouter\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_router = gcp.compute.get_router_status(name=\"myrouter\")\n```\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_router = Gcp.Compute.GetRouterStatus.Invoke(new()\n {\n Name = \"myrouter\",\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.GetRouterStatus(ctx, \u0026compute.GetRouterStatusArgs{\n\t\t\tName: \"myrouter\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetRouterStatusArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-router = ComputeFunctions.getRouterStatus(GetRouterStatusArgs.builder()\n .name(\"myrouter\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-router:\n fn::invoke:\n function: gcp:compute:getRouterStatus\n arguments:\n name: myrouter\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get a Cloud Router's status within GCE from its name and region. This data source exposes the\nroutes learned by a Cloud Router via BGP peers.\n\nFor more information see [the official documentation](https://cloud.google.com/network-connectivity/docs/router/how-to/viewing-router-details)\nand\n[API](https://cloud.google.com/compute/docs/reference/rest/v1/routers/getRouterStatus).\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 my_router = gcp.compute.getRouterStatus({\n name: \"myrouter\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_router = gcp.compute.get_router_status(name=\"myrouter\")\n```\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_router = Gcp.Compute.GetRouterStatus.Invoke(new()\n {\n Name = \"myrouter\",\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.GetRouterStatus(ctx, \u0026compute.GetRouterStatusArgs{\n\t\t\tName: \"myrouter\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.compute.ComputeFunctions;\nimport com.pulumi.gcp.compute.inputs.GetRouterStatusArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-router = ComputeFunctions.getRouterStatus(GetRouterStatusArgs.builder()\n .name(\"myrouter\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-router:\n fn::invoke:\n function: gcp:compute:getRouterStatus\n arguments:\n name: myrouter\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking RouterStatus.\n", "properties": { @@ -310405,7 +310405,7 @@ } }, "gcp:logging/getSink:getSink": { - "description": "Use this data source to get a project, folder, organization or billing account logging sink details.\nTo get more information about Service, see:\n\n[API documentation](https://cloud.google.com/logging/docs/reference/v2/rest/v2/sinks)\n\n## Example Usage\n\n### Retrieve Project Logging Sink 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-sink = gcp.logging.getSink({\n id: \"projects/0123456789/sinks/my-sink-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject_sink = gcp.logging.get_sink(id=\"projects/0123456789/sinks/my-sink-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_sink = Gcp.Logging.GetSink.Invoke(new()\n {\n Id = \"projects/0123456789/sinks/my-sink-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logging.GetSink(ctx, \u0026logging.GetSinkArgs{\n\t\t\tId: \"projects/0123456789/sinks/my-sink-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.logging.LoggingFunctions;\nimport com.pulumi.gcp.logging.inputs.GetSinkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project-sink = LoggingFunctions.getSink(GetSinkArgs.builder()\n .id(\"projects/0123456789/sinks/my-sink-name\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n project-sink:\n fn::invoke:\n function: gcp:logging:getSink\n arguments:\n id: projects/0123456789/sinks/my-sink-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to get a project, folder, organization or billing account logging sink details.\nTo get more information about Service, see:\n\n[API documentation](https://cloud.google.com/logging/docs/reference/v2/rest/v2/sinks)\n\n## Example Usage\n\n### Retrieve Project Logging Sink 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_sink = gcp.logging.getSink({\n id: \"projects/0123456789/sinks/my-sink-name\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nproject_sink = gcp.logging.get_sink(id=\"projects/0123456789/sinks/my-sink-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_sink = Gcp.Logging.GetSink.Invoke(new()\n {\n Id = \"projects/0123456789/sinks/my-sink-name\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/logging\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := logging.GetSink(ctx, \u0026logging.GetSinkArgs{\n\t\t\tId: \"projects/0123456789/sinks/my-sink-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.logging.LoggingFunctions;\nimport com.pulumi.gcp.logging.inputs.GetSinkArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var project-sink = LoggingFunctions.getSink(GetSinkArgs.builder()\n .id(\"projects/0123456789/sinks/my-sink-name\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n project-sink:\n fn::invoke:\n function: gcp:logging:getSink\n arguments:\n id: projects/0123456789/sinks/my-sink-name\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getSink.\n", "properties": { @@ -310548,7 +310548,7 @@ } }, "gcp:monitoring/getClusterIstioService:getClusterIstioService": { - "description": "A Monitoring Service is the root resource under which operational aspects of a\ngeneric service are accessible. A service is some discrete, autonomous, and\nnetwork-accessible unit, designed to solve an individual concern\n\nAn Cluster Istio monitoring service is automatically created by GCP to monitor\nCluster Istio services.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)\n* How-to Guides\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n## Example Usage\n\n### Monitoring Cluster Istio Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Monitors the default ClusterIstio service\nconst default = gcp.monitoring.getClusterIstioService({\n location: \"us-west2-a\",\n clusterName: \"west\",\n serviceNamespace: \"istio-system\",\n serviceName: \"istio-policy\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Monitors the default ClusterIstio service\ndefault = gcp.monitoring.get_cluster_istio_service(location=\"us-west2-a\",\n cluster_name=\"west\",\n service_namespace=\"istio-system\",\n service_name=\"istio-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 // Monitors the default ClusterIstio service\n var @default = Gcp.Monitoring.GetClusterIstioService.Invoke(new()\n {\n Location = \"us-west2-a\",\n ClusterName = \"west\",\n ServiceNamespace = \"istio-system\",\n ServiceName = \"istio-policy\",\n });\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\t// Monitors the default ClusterIstio service\n\t\t_, err := monitoring.GetClusterIstioService(ctx, \u0026monitoring.GetClusterIstioServiceArgs{\n\t\t\tLocation: \"us-west2-a\",\n\t\t\tClusterName: \"west\",\n\t\t\tServiceNamespace: \"istio-system\",\n\t\t\tServiceName: \"istio-policy\",\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.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetClusterIstioServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Monitors the default ClusterIstio service\n final var default = MonitoringFunctions.getClusterIstioService(GetClusterIstioServiceArgs.builder()\n .location(\"us-west2-a\")\n .clusterName(\"west\")\n .serviceNamespace(\"istio-system\")\n .serviceName(\"istio-policy\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n # Monitors the default ClusterIstio service\n default:\n fn::invoke:\n function: gcp:monitoring:getClusterIstioService\n arguments:\n location: us-west2-a\n clusterName: west\n serviceNamespace: istio-system\n serviceName: istio-policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "A Monitoring Service is the root resource under which operational aspects of a\ngeneric service are accessible. A service is some discrete, autonomous, and\nnetwork-accessible unit, designed to solve an individual concern\n\nAn Cluster Istio monitoring service is automatically created by GCP to monitor\nCluster Istio services.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)\n* How-to Guides\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n## Example Usage\n\n### Monitoring Cluster Istio Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Monitors the default ClusterIstio service\nconst _default = gcp.monitoring.getClusterIstioService({\n location: \"us-west2-a\",\n clusterName: \"west\",\n serviceNamespace: \"istio-system\",\n serviceName: \"istio-policy\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Monitors the default ClusterIstio service\ndefault = gcp.monitoring.get_cluster_istio_service(location=\"us-west2-a\",\n cluster_name=\"west\",\n service_namespace=\"istio-system\",\n service_name=\"istio-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 // Monitors the default ClusterIstio service\n var @default = Gcp.Monitoring.GetClusterIstioService.Invoke(new()\n {\n Location = \"us-west2-a\",\n ClusterName = \"west\",\n ServiceNamespace = \"istio-system\",\n ServiceName = \"istio-policy\",\n });\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\t// Monitors the default ClusterIstio service\n\t\t_, err := monitoring.GetClusterIstioService(ctx, \u0026monitoring.GetClusterIstioServiceArgs{\n\t\t\tLocation: \"us-west2-a\",\n\t\t\tClusterName: \"west\",\n\t\t\tServiceNamespace: \"istio-system\",\n\t\t\tServiceName: \"istio-policy\",\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.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetClusterIstioServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Monitors the default ClusterIstio service\n final var default = MonitoringFunctions.getClusterIstioService(GetClusterIstioServiceArgs.builder()\n .location(\"us-west2-a\")\n .clusterName(\"west\")\n .serviceNamespace(\"istio-system\")\n .serviceName(\"istio-policy\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n # Monitors the default ClusterIstio service\n default:\n fn::invoke:\n function: gcp:monitoring:getClusterIstioService\n arguments:\n location: us-west2-a\n clusterName: west\n serviceNamespace: istio-system\n serviceName: istio-policy\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getClusterIstioService.\n", "properties": { @@ -310644,7 +310644,7 @@ } }, "gcp:monitoring/getIstioCanonicalService:getIstioCanonicalService": { - "description": "A Monitoring Service is the root resource under which operational aspects of a\ngeneric service are accessible. A service is some discrete, autonomous, and\nnetwork-accessible unit, designed to solve an individual concern\n\nA monitoring Istio Canonical Service is automatically created by GCP to monitor\nIstio Canonical Services.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)\n* How-to Guides\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n## Example Usage\n\n### Monitoring Istio Canonical Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Monitors the default MeshIstio service\nconst default = gcp.monitoring.getIstioCanonicalService({\n meshUid: \"proj-573164786102\",\n canonicalServiceNamespace: \"istio-system\",\n canonicalService: \"prometheus\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Monitors the default MeshIstio service\ndefault = gcp.monitoring.get_istio_canonical_service(mesh_uid=\"proj-573164786102\",\n canonical_service_namespace=\"istio-system\",\n canonical_service=\"prometheus\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Monitors the default MeshIstio service\n var @default = Gcp.Monitoring.GetIstioCanonicalService.Invoke(new()\n {\n MeshUid = \"proj-573164786102\",\n CanonicalServiceNamespace = \"istio-system\",\n CanonicalService = \"prometheus\",\n });\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\t// Monitors the default MeshIstio service\n\t\t_, err := monitoring.GetIstioCanonicalService(ctx, \u0026monitoring.GetIstioCanonicalServiceArgs{\n\t\t\tMeshUid: \"proj-573164786102\",\n\t\t\tCanonicalServiceNamespace: \"istio-system\",\n\t\t\tCanonicalService: \"prometheus\",\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.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetIstioCanonicalServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Monitors the default MeshIstio service\n final var default = MonitoringFunctions.getIstioCanonicalService(GetIstioCanonicalServiceArgs.builder()\n .meshUid(\"proj-573164786102\")\n .canonicalServiceNamespace(\"istio-system\")\n .canonicalService(\"prometheus\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n # Monitors the default MeshIstio service\n default:\n fn::invoke:\n function: gcp:monitoring:getIstioCanonicalService\n arguments:\n meshUid: proj-573164786102\n canonicalServiceNamespace: istio-system\n canonicalService: prometheus\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "A Monitoring Service is the root resource under which operational aspects of a\ngeneric service are accessible. A service is some discrete, autonomous, and\nnetwork-accessible unit, designed to solve an individual concern\n\nA monitoring Istio Canonical Service is automatically created by GCP to monitor\nIstio Canonical Services.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)\n* How-to Guides\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n## Example Usage\n\n### Monitoring Istio Canonical Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Monitors the default MeshIstio service\nconst _default = gcp.monitoring.getIstioCanonicalService({\n meshUid: \"proj-573164786102\",\n canonicalServiceNamespace: \"istio-system\",\n canonicalService: \"prometheus\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Monitors the default MeshIstio service\ndefault = gcp.monitoring.get_istio_canonical_service(mesh_uid=\"proj-573164786102\",\n canonical_service_namespace=\"istio-system\",\n canonical_service=\"prometheus\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Monitors the default MeshIstio service\n var @default = Gcp.Monitoring.GetIstioCanonicalService.Invoke(new()\n {\n MeshUid = \"proj-573164786102\",\n CanonicalServiceNamespace = \"istio-system\",\n CanonicalService = \"prometheus\",\n });\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\t// Monitors the default MeshIstio service\n\t\t_, err := monitoring.GetIstioCanonicalService(ctx, \u0026monitoring.GetIstioCanonicalServiceArgs{\n\t\t\tMeshUid: \"proj-573164786102\",\n\t\t\tCanonicalServiceNamespace: \"istio-system\",\n\t\t\tCanonicalService: \"prometheus\",\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.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetIstioCanonicalServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Monitors the default MeshIstio service\n final var default = MonitoringFunctions.getIstioCanonicalService(GetIstioCanonicalServiceArgs.builder()\n .meshUid(\"proj-573164786102\")\n .canonicalServiceNamespace(\"istio-system\")\n .canonicalService(\"prometheus\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n # Monitors the default MeshIstio service\n default:\n fn::invoke:\n function: gcp:monitoring:getIstioCanonicalService\n arguments:\n meshUid: proj-573164786102\n canonicalServiceNamespace: istio-system\n canonicalService: prometheus\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getIstioCanonicalService.\n", "properties": { @@ -310731,7 +310731,7 @@ } }, "gcp:monitoring/getMeshIstioService:getMeshIstioService": { - "description": "A Monitoring Service is the root resource under which operational aspects of a\ngeneric service are accessible. A service is some discrete, autonomous, and\nnetwork-accessible unit, designed to solve an individual concern\n\nAn Mesh Istio monitoring service is automatically created by GCP to monitor\nMesh Istio services.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)\n* How-to Guides\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n## Example Usage\n\n### Monitoring Mesh Istio Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Monitors the default MeshIstio service\nconst default = gcp.monitoring.getMeshIstioService({\n meshUid: \"proj-573164786102\",\n serviceNamespace: \"istio-system\",\n serviceName: \"prometheus\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Monitors the default MeshIstio service\ndefault = gcp.monitoring.get_mesh_istio_service(mesh_uid=\"proj-573164786102\",\n service_namespace=\"istio-system\",\n service_name=\"prometheus\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Monitors the default MeshIstio service\n var @default = Gcp.Monitoring.GetMeshIstioService.Invoke(new()\n {\n MeshUid = \"proj-573164786102\",\n ServiceNamespace = \"istio-system\",\n ServiceName = \"prometheus\",\n });\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\t// Monitors the default MeshIstio service\n\t\t_, err := monitoring.GetMeshIstioService(ctx, \u0026monitoring.GetMeshIstioServiceArgs{\n\t\t\tMeshUid: \"proj-573164786102\",\n\t\t\tServiceNamespace: \"istio-system\",\n\t\t\tServiceName: \"prometheus\",\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.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetMeshIstioServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Monitors the default MeshIstio service\n final var default = MonitoringFunctions.getMeshIstioService(GetMeshIstioServiceArgs.builder()\n .meshUid(\"proj-573164786102\")\n .serviceNamespace(\"istio-system\")\n .serviceName(\"prometheus\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n # Monitors the default MeshIstio service\n default:\n fn::invoke:\n function: gcp:monitoring:getMeshIstioService\n arguments:\n meshUid: proj-573164786102\n serviceNamespace: istio-system\n serviceName: prometheus\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "A Monitoring Service is the root resource under which operational aspects of a\ngeneric service are accessible. A service is some discrete, autonomous, and\nnetwork-accessible unit, designed to solve an individual concern\n\nAn Mesh Istio monitoring service is automatically created by GCP to monitor\nMesh Istio services.\n\n\nTo get more information about Service, see:\n\n* [API documentation](https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services)\n* How-to Guides\n * [Service Monitoring](https://cloud.google.com/monitoring/service-monitoring)\n * [Monitoring API Documentation](https://cloud.google.com/monitoring/api/v3/)\n\n## Example Usage\n\n### Monitoring Mesh Istio Service\n\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\n// Monitors the default MeshIstio service\nconst _default = gcp.monitoring.getMeshIstioService({\n meshUid: \"proj-573164786102\",\n serviceNamespace: \"istio-system\",\n serviceName: \"prometheus\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\n# Monitors the default MeshIstio service\ndefault = gcp.monitoring.get_mesh_istio_service(mesh_uid=\"proj-573164786102\",\n service_namespace=\"istio-system\",\n service_name=\"prometheus\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n // Monitors the default MeshIstio service\n var @default = Gcp.Monitoring.GetMeshIstioService.Invoke(new()\n {\n MeshUid = \"proj-573164786102\",\n ServiceNamespace = \"istio-system\",\n ServiceName = \"prometheus\",\n });\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\t// Monitors the default MeshIstio service\n\t\t_, err := monitoring.GetMeshIstioService(ctx, \u0026monitoring.GetMeshIstioServiceArgs{\n\t\t\tMeshUid: \"proj-573164786102\",\n\t\t\tServiceNamespace: \"istio-system\",\n\t\t\tServiceName: \"prometheus\",\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.monitoring.MonitoringFunctions;\nimport com.pulumi.gcp.monitoring.inputs.GetMeshIstioServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n // Monitors the default MeshIstio service\n final var default = MonitoringFunctions.getMeshIstioService(GetMeshIstioServiceArgs.builder()\n .meshUid(\"proj-573164786102\")\n .serviceNamespace(\"istio-system\")\n .serviceName(\"prometheus\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n # Monitors the default MeshIstio service\n default:\n fn::invoke:\n function: gcp:monitoring:getMeshIstioService\n arguments:\n meshUid: proj-573164786102\n serviceNamespace: istio-system\n serviceName: prometheus\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getMeshIstioService.\n", "properties": { @@ -311213,7 +311213,7 @@ } }, "gcp:oracledatabase/getAutonomousDatabase:getAutonomousDatabase": { - "description": "Get information about an AutonomousDatabase.\n\nFor more information see the\n[API](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.autonomousDatabases).\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 my-instance = gcp.oracledatabase.getAutonomousDatabase({\n location: \"us-east4\",\n autonomousDatabaseId: \"autonomous_database_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_instance = gcp.oracledatabase.get_autonomous_database(location=\"us-east4\",\n autonomous_database_id=\"autonomous_database_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 my_instance = Gcp.OracleDatabase.GetAutonomousDatabase.Invoke(new()\n {\n Location = \"us-east4\",\n AutonomousDatabaseId = \"autonomous_database_id\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := oracledatabase.LookupAutonomousDatabase(ctx, \u0026oracledatabase.LookupAutonomousDatabaseArgs{\n\t\t\tLocation: \"us-east4\",\n\t\t\tAutonomousDatabaseId: \"autonomous_database_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.oracledatabase.OracledatabaseFunctions;\nimport com.pulumi.gcp.oracledatabase.inputs.GetAutonomousDatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-instance = OracledatabaseFunctions.getAutonomousDatabase(GetAutonomousDatabaseArgs.builder()\n .location(\"us-east4\")\n .autonomousDatabaseId(\"autonomous_database_id\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-instance:\n fn::invoke:\n function: gcp:oracledatabase:getAutonomousDatabase\n arguments:\n location: us-east4\n autonomousDatabaseId: autonomous_database_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about an AutonomousDatabase.\n\nFor more information see the\n[API](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.autonomousDatabases).\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 my_instance = gcp.oracledatabase.getAutonomousDatabase({\n location: \"us-east4\",\n autonomousDatabaseId: \"autonomous_database_id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_instance = gcp.oracledatabase.get_autonomous_database(location=\"us-east4\",\n autonomous_database_id=\"autonomous_database_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 my_instance = Gcp.OracleDatabase.GetAutonomousDatabase.Invoke(new()\n {\n Location = \"us-east4\",\n AutonomousDatabaseId = \"autonomous_database_id\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := oracledatabase.LookupAutonomousDatabase(ctx, \u0026oracledatabase.LookupAutonomousDatabaseArgs{\n\t\t\tLocation: \"us-east4\",\n\t\t\tAutonomousDatabaseId: \"autonomous_database_id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.oracledatabase.OracledatabaseFunctions;\nimport com.pulumi.gcp.oracledatabase.inputs.GetAutonomousDatabaseArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-instance = OracledatabaseFunctions.getAutonomousDatabase(GetAutonomousDatabaseArgs.builder()\n .location(\"us-east4\")\n .autonomousDatabaseId(\"autonomous_database_id\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-instance:\n fn::invoke:\n function: gcp:oracledatabase:getAutonomousDatabase\n arguments:\n location: us-east4\n autonomousDatabaseId: autonomous_database_id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getAutonomousDatabase.\n", "properties": { @@ -311328,7 +311328,7 @@ } }, "gcp:oracledatabase/getAutonomousDatabases:getAutonomousDatabases": { - "description": "List all AutonomousDatabases.\n\nFor more information see the\n[API](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.autonomousDatabases).\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 my-adbs = gcp.oracledatabase.getAutonomousDatabases({\n location: \"us-east4\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_adbs = gcp.oracledatabase.get_autonomous_databases(location=\"us-east4\")\n```\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_adbs = Gcp.OracleDatabase.GetAutonomousDatabases.Invoke(new()\n {\n Location = \"us-east4\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := oracledatabase.GetAutonomousDatabases(ctx, \u0026oracledatabase.GetAutonomousDatabasesArgs{\n\t\t\tLocation: \"us-east4\",\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.oracledatabase.OracledatabaseFunctions;\nimport com.pulumi.gcp.oracledatabase.inputs.GetAutonomousDatabasesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-adbs = OracledatabaseFunctions.getAutonomousDatabases(GetAutonomousDatabasesArgs.builder()\n .location(\"us-east4\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-adbs:\n fn::invoke:\n function: gcp:oracledatabase:getAutonomousDatabases\n arguments:\n location: us-east4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "List all AutonomousDatabases.\n\nFor more information see the\n[API](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.autonomousDatabases).\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 my_adbs = gcp.oracledatabase.getAutonomousDatabases({\n location: \"us-east4\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_adbs = gcp.oracledatabase.get_autonomous_databases(location=\"us-east4\")\n```\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_adbs = Gcp.OracleDatabase.GetAutonomousDatabases.Invoke(new()\n {\n Location = \"us-east4\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := oracledatabase.GetAutonomousDatabases(ctx, \u0026oracledatabase.GetAutonomousDatabasesArgs{\n\t\t\tLocation: \"us-east4\",\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.oracledatabase.OracledatabaseFunctions;\nimport com.pulumi.gcp.oracledatabase.inputs.GetAutonomousDatabasesArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-adbs = OracledatabaseFunctions.getAutonomousDatabases(GetAutonomousDatabasesArgs.builder()\n .location(\"us-east4\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-adbs:\n fn::invoke:\n function: gcp:oracledatabase:getAutonomousDatabases\n arguments:\n location: us-east4\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getAutonomousDatabases.\n", "properties": { @@ -311375,7 +311375,7 @@ } }, "gcp:oracledatabase/getCloudExadataInfrastructure:getCloudExadataInfrastructure": { - "description": "Get information about an ExadataInfrastructure.\n\nFor more information see the\n[API](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.cloudExadataInfrastructures).\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 my-instance = gcp.oracledatabase.getCloudExadataInfrastructure({\n location: \"us-east4\",\n cloudExadataInfrastructureId: \"exadata-id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_instance = gcp.oracledatabase.get_cloud_exadata_infrastructure(location=\"us-east4\",\n cloud_exadata_infrastructure_id=\"exadata-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 my_instance = Gcp.OracleDatabase.GetCloudExadataInfrastructure.Invoke(new()\n {\n Location = \"us-east4\",\n CloudExadataInfrastructureId = \"exadata-id\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := oracledatabase.LookupCloudExadataInfrastructure(ctx, \u0026oracledatabase.LookupCloudExadataInfrastructureArgs{\n\t\t\tLocation: \"us-east4\",\n\t\t\tCloudExadataInfrastructureId: \"exadata-id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.oracledatabase.OracledatabaseFunctions;\nimport com.pulumi.gcp.oracledatabase.inputs.GetCloudExadataInfrastructureArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-instance = OracledatabaseFunctions.getCloudExadataInfrastructure(GetCloudExadataInfrastructureArgs.builder()\n .location(\"us-east4\")\n .cloudExadataInfrastructureId(\"exadata-id\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-instance:\n fn::invoke:\n function: gcp:oracledatabase:getCloudExadataInfrastructure\n arguments:\n location: us-east4\n cloudExadataInfrastructureId: exadata-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about an ExadataInfrastructure.\n\nFor more information see the\n[API](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.cloudExadataInfrastructures).\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 my_instance = gcp.oracledatabase.getCloudExadataInfrastructure({\n location: \"us-east4\",\n cloudExadataInfrastructureId: \"exadata-id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_instance = gcp.oracledatabase.get_cloud_exadata_infrastructure(location=\"us-east4\",\n cloud_exadata_infrastructure_id=\"exadata-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 my_instance = Gcp.OracleDatabase.GetCloudExadataInfrastructure.Invoke(new()\n {\n Location = \"us-east4\",\n CloudExadataInfrastructureId = \"exadata-id\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := oracledatabase.LookupCloudExadataInfrastructure(ctx, \u0026oracledatabase.LookupCloudExadataInfrastructureArgs{\n\t\t\tLocation: \"us-east4\",\n\t\t\tCloudExadataInfrastructureId: \"exadata-id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.oracledatabase.OracledatabaseFunctions;\nimport com.pulumi.gcp.oracledatabase.inputs.GetCloudExadataInfrastructureArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-instance = OracledatabaseFunctions.getCloudExadataInfrastructure(GetCloudExadataInfrastructureArgs.builder()\n .location(\"us-east4\")\n .cloudExadataInfrastructureId(\"exadata-id\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-instance:\n fn::invoke:\n function: gcp:oracledatabase:getCloudExadataInfrastructure\n arguments:\n location: us-east4\n cloudExadataInfrastructureId: exadata-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getCloudExadataInfrastructure.\n", "properties": { @@ -311525,7 +311525,7 @@ } }, "gcp:oracledatabase/getCloudVmCluster:getCloudVmCluster": { - "description": "Get information about a CloudVmCluster.\n\nFor more information see the\n[API](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.cloudVmClusters).\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 my-vmcluster = gcp.oracledatabase.getCloudVmCluster({\n location: \"us-east4\",\n cloudVmClusterId: \"vmcluster-id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_vmcluster = gcp.oracledatabase.get_cloud_vm_cluster(location=\"us-east4\",\n cloud_vm_cluster_id=\"vmcluster-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 my_vmcluster = Gcp.OracleDatabase.GetCloudVmCluster.Invoke(new()\n {\n Location = \"us-east4\",\n CloudVmClusterId = \"vmcluster-id\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := oracledatabase.LookupCloudVmCluster(ctx, \u0026oracledatabase.LookupCloudVmClusterArgs{\n\t\t\tLocation: \"us-east4\",\n\t\t\tCloudVmClusterId: \"vmcluster-id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.oracledatabase.OracledatabaseFunctions;\nimport com.pulumi.gcp.oracledatabase.inputs.GetCloudVmClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-vmcluster = OracledatabaseFunctions.getCloudVmCluster(GetCloudVmClusterArgs.builder()\n .location(\"us-east4\")\n .cloudVmClusterId(\"vmcluster-id\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-vmcluster:\n fn::invoke:\n function: gcp:oracledatabase:getCloudVmCluster\n arguments:\n location: us-east4\n cloudVmClusterId: vmcluster-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a CloudVmCluster.\n\nFor more information see the\n[API](https://cloud.google.com/oracle/database/docs/reference/rest/v1/projects.locations.cloudVmClusters).\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 my_vmcluster = gcp.oracledatabase.getCloudVmCluster({\n location: \"us-east4\",\n cloudVmClusterId: \"vmcluster-id\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_vmcluster = gcp.oracledatabase.get_cloud_vm_cluster(location=\"us-east4\",\n cloud_vm_cluster_id=\"vmcluster-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 my_vmcluster = Gcp.OracleDatabase.GetCloudVmCluster.Invoke(new()\n {\n Location = \"us-east4\",\n CloudVmClusterId = \"vmcluster-id\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/oracledatabase\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := oracledatabase.LookupCloudVmCluster(ctx, \u0026oracledatabase.LookupCloudVmClusterArgs{\n\t\t\tLocation: \"us-east4\",\n\t\t\tCloudVmClusterId: \"vmcluster-id\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.oracledatabase.OracledatabaseFunctions;\nimport com.pulumi.gcp.oracledatabase.inputs.GetCloudVmClusterArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-vmcluster = OracledatabaseFunctions.getCloudVmCluster(GetCloudVmClusterArgs.builder()\n .location(\"us-east4\")\n .cloudVmClusterId(\"vmcluster-id\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-vmcluster:\n fn::invoke:\n function: gcp:oracledatabase:getCloudVmCluster\n arguments:\n location: us-east4\n cloudVmClusterId: vmcluster-id\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getCloudVmCluster.\n", "properties": { @@ -312060,7 +312060,7 @@ } }, "gcp:organizations/getFolders:getFolders": { - "description": "Retrieve information about a set of folders based on a parent ID. See the\n[REST API](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list)\nfor more details.\n\n## Example Usage\n\n### Searching For Folders At The Root Of An Org\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my-org-folders = gcp.organizations.getFolders({\n parentId: `organizations/${organizationId}`,\n});\nconst first-folder = my_org_folders.then(my_org_folders =\u003e gcp.organizations.getFolder({\n folder: my_org_folders.folders?.[0]?.name,\n}));\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_org_folders = gcp.organizations.get_folders(parent_id=f\"organizations/{organization_id}\")\nfirst_folder = gcp.organizations.get_folder(folder=my_org_folders.folders[0].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 my_org_folders = Gcp.Organizations.GetFolders.Invoke(new()\n {\n ParentId = $\"organizations/{organizationId}\",\n });\n\n var first_folder = Gcp.Organizations.GetFolder.Invoke(new()\n {\n Folder = my_org_folders.Apply(getFoldersResult =\u003e getFoldersResult.Folders[0]?.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/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmy_org_folders, err := organizations.GetFolders(ctx, \u0026organizations.GetFoldersArgs{\n\t\t\tParentId: fmt.Sprintf(\"organizations/%v\", organizationId),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupFolder(ctx, \u0026organizations.LookupFolderArgs{\n\t\t\tFolder: my_org_folders.Folders[0].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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetFoldersArgs;\nimport com.pulumi.gcp.organizations.inputs.GetFolderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-org-folders = OrganizationsFunctions.getFolders(GetFoldersArgs.builder()\n .parentId(String.format(\"organizations/%s\", organizationId))\n .build());\n\n final var first-folder = OrganizationsFunctions.getFolder(GetFolderArgs.builder()\n .folder(my_org_folders.folders()[0].name())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-org-folders:\n fn::invoke:\n function: gcp:organizations:getFolders\n arguments:\n parentId: organizations/${organizationId}\n first-folder:\n fn::invoke:\n function: gcp:organizations:getFolder\n arguments:\n folder: ${[\"my-org-folders\"].folders[0].name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Retrieve information about a set of folders based on a parent ID. See the\n[REST API](https://cloud.google.com/resource-manager/reference/rest/v3/folders/list)\nfor more details.\n\n## Example Usage\n\n### Searching For Folders At The Root Of An Org\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_org_folders = gcp.organizations.getFolders({\n parentId: `organizations/${organizationId}`,\n});\nconst first_folder = my_org_folders.then(my_org_folders =\u003e gcp.organizations.getFolder({\n folder: my_org_folders.folders?.[0]?.name,\n}));\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_org_folders = gcp.organizations.get_folders(parent_id=f\"organizations/{organization_id}\")\nfirst_folder = gcp.organizations.get_folder(folder=my_org_folders.folders[0].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 my_org_folders = Gcp.Organizations.GetFolders.Invoke(new()\n {\n ParentId = $\"organizations/{organizationId}\",\n });\n\n var first_folder = Gcp.Organizations.GetFolder.Invoke(new()\n {\n Folder = my_org_folders.Apply(getFoldersResult =\u003e getFoldersResult.Folders[0]?.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/organizations\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\tmy_org_folders, err := organizations.GetFolders(ctx, \u0026organizations.GetFoldersArgs{\n\t\t\tParentId: fmt.Sprintf(\"organizations/%v\", organizationId),\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupFolder(ctx, \u0026organizations.LookupFolderArgs{\n\t\t\tFolder: my_org_folders.Folders[0].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.organizations.OrganizationsFunctions;\nimport com.pulumi.gcp.organizations.inputs.GetFoldersArgs;\nimport com.pulumi.gcp.organizations.inputs.GetFolderArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-org-folders = OrganizationsFunctions.getFolders(GetFoldersArgs.builder()\n .parentId(String.format(\"organizations/%s\", organizationId))\n .build());\n\n final var first-folder = OrganizationsFunctions.getFolder(GetFolderArgs.builder()\n .folder(my_org_folders.folders()[0].name())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-org-folders:\n fn::invoke:\n function: gcp:organizations:getFolders\n arguments:\n parentId: organizations/${organizationId}\n first-folder:\n fn::invoke:\n function: gcp:organizations:getFolder\n arguments:\n folder: ${[\"my-org-folders\"].folders[0].name}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getFolders.\n", "properties": { @@ -312522,7 +312522,7 @@ } }, "gcp:parametermanager/getRegionalParameters:getRegionalParameters": { - "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 regional-parameters = gcp.parametermanager.getRegionalParameters({\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregional_parameters = gcp.parametermanager.get_regional_parameters(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 regional_parameters = Gcp.ParameterManager.GetRegionalParameters.Invoke(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/parametermanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := parametermanager.GetRegionalParameters(ctx, \u0026parametermanager.GetRegionalParametersArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.parametermanager.ParametermanagerFunctions;\nimport com.pulumi.gcp.parametermanager.inputs.GetRegionalParametersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var regional-parameters = ParametermanagerFunctions.getRegionalParameters(GetRegionalParametersArgs.builder()\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n regional-parameters:\n fn::invoke:\n function: gcp:parametermanager:getRegionalParameters\n arguments:\n location: us-central1\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 regional_parameters = gcp.parametermanager.getRegionalParameters({\n location: \"us-central1\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nregional_parameters = gcp.parametermanager.get_regional_parameters(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 regional_parameters = Gcp.ParameterManager.GetRegionalParameters.Invoke(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/parametermanager\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := parametermanager.GetRegionalParameters(ctx, \u0026parametermanager.GetRegionalParametersArgs{\n\t\t\tLocation: \"us-central1\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.parametermanager.ParametermanagerFunctions;\nimport com.pulumi.gcp.parametermanager.inputs.GetRegionalParametersArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var regional-parameters = ParametermanagerFunctions.getRegionalParameters(GetRegionalParametersArgs.builder()\n .location(\"us-central1\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n regional-parameters:\n fn::invoke:\n function: gcp:parametermanager:getRegionalParameters\n arguments:\n location: us-central1\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRegionalParameters.\n", "properties": { @@ -312579,7 +312579,7 @@ } }, "gcp:privilegedaccessmanager/getEntitlement:getEntitlement": { - "description": "Use this data source to get information about a Google Cloud Privileged Access Manager Entitlement.\n\nTo get more information about Privileged Access Manager, see:\n\n* [API Documentation](https://cloud.google.com/iam/docs/reference/pam/rest)\n* How-to guides\n * [Official documentation](https://cloud.google.com/iam/docs/pam-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 my-entitlement = gcp.privilegedaccessmanager.getEntitlement({\n parent: \"projects/my-project\",\n location: \"global\",\n entitlementId: \"my-entitlement\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_entitlement = gcp.privilegedaccessmanager.get_entitlement(parent=\"projects/my-project\",\n location=\"global\",\n entitlement_id=\"my-entitlement\")\n```\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_entitlement = Gcp.PrivilegedAccessManager.GetEntitlement.Invoke(new()\n {\n Parent = \"projects/my-project\",\n Location = \"global\",\n EntitlementId = \"my-entitlement\",\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.LookupEntitlement(ctx, \u0026privilegedaccessmanager.LookupEntitlementArgs{\n\t\t\tParent: pulumi.StringRef(\"projects/my-project\"),\n\t\t\tLocation: pulumi.StringRef(\"global\"),\n\t\t\tEntitlementId: pulumi.StringRef(\"my-entitlement\"),\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.privilegedaccessmanager.PrivilegedaccessmanagerFunctions;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.GetEntitlementArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-entitlement = PrivilegedaccessmanagerFunctions.getEntitlement(GetEntitlementArgs.builder()\n .parent(\"projects/my-project\")\n .location(\"global\")\n .entitlementId(\"my-entitlement\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-entitlement:\n fn::invoke:\n function: gcp:privilegedaccessmanager:getEntitlement\n arguments:\n parent: projects/my-project\n location: global\n entitlementId: my-entitlement\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Use this data source to get information about a Google Cloud Privileged Access Manager Entitlement.\n\nTo get more information about Privileged Access Manager, see:\n\n* [API Documentation](https://cloud.google.com/iam/docs/reference/pam/rest)\n* How-to guides\n * [Official documentation](https://cloud.google.com/iam/docs/pam-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 my_entitlement = gcp.privilegedaccessmanager.getEntitlement({\n parent: \"projects/my-project\",\n location: \"global\",\n entitlementId: \"my-entitlement\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_entitlement = gcp.privilegedaccessmanager.get_entitlement(parent=\"projects/my-project\",\n location=\"global\",\n entitlement_id=\"my-entitlement\")\n```\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_entitlement = Gcp.PrivilegedAccessManager.GetEntitlement.Invoke(new()\n {\n Parent = \"projects/my-project\",\n Location = \"global\",\n EntitlementId = \"my-entitlement\",\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.LookupEntitlement(ctx, \u0026privilegedaccessmanager.LookupEntitlementArgs{\n\t\t\tParent: pulumi.StringRef(\"projects/my-project\"),\n\t\t\tLocation: pulumi.StringRef(\"global\"),\n\t\t\tEntitlementId: pulumi.StringRef(\"my-entitlement\"),\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.privilegedaccessmanager.PrivilegedaccessmanagerFunctions;\nimport com.pulumi.gcp.privilegedaccessmanager.inputs.GetEntitlementArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-entitlement = PrivilegedaccessmanagerFunctions.getEntitlement(GetEntitlementArgs.builder()\n .parent(\"projects/my-project\")\n .location(\"global\")\n .entitlementId(\"my-entitlement\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-entitlement:\n fn::invoke:\n function: gcp:privilegedaccessmanager:getEntitlement\n arguments:\n parent: projects/my-project\n location: global\n entitlementId: my-entitlement\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getEntitlement.\n", "properties": { @@ -312800,7 +312800,7 @@ } }, "gcp:projects/getProject:getProject": { - "description": "Retrieve information about a set of projects based on a filter. See the\n[REST API](https://cloud.google.com/resource-manager/reference/rest/v1/projects/list)\nfor more details.\n\n## Example Usage\n\n### Searching For Projects About To Be Deleted In An Org\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my-org-projects = gcp.projects.getProject({\n filter: \"parent.id:012345678910 lifecycleState:DELETE_REQUESTED\",\n});\nconst deletion-candidate = my_org_projects.then(my_org_projects =\u003e gcp.organizations.getProject({\n projectId: my_org_projects.projects?.[0]?.projectId,\n}));\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_org_projects = gcp.projects.get_project(filter=\"parent.id:012345678910 lifecycleState:DELETE_REQUESTED\")\ndeletion_candidate = gcp.organizations.get_project(project_id=my_org_projects.projects[0].project_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_org_projects = Gcp.Projects.GetProject.Invoke(new()\n {\n Filter = \"parent.id:012345678910 lifecycleState:DELETE_REQUESTED\",\n });\n\n var deletion_candidate = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = my_org_projects.Apply(getProjectResult =\u003e getProjectResult.Projects[0]?.ProjectId),\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\tmy_org_projects, err := projects.GetProject(ctx, \u0026projects.GetProjectArgs{\n\t\t\tFilter: \"parent.id:012345678910 lifecycleState:DELETE_REQUESTED\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{\n\t\t\tProjectId: pulumi.StringRef(my_org_projects.Projects[0].ProjectId),\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.projects.ProjectsFunctions;\nimport com.pulumi.gcp.projects.inputs.GetProjectArgs;\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 my-org-projects = ProjectsFunctions.getProject(GetProjectArgs.builder()\n .filter(\"parent.id:012345678910 lifecycleState:DELETE_REQUESTED\")\n .build());\n\n final var deletion-candidate = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(my_org_projects.projects()[0].projectId())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-org-projects:\n fn::invoke:\n function: gcp:projects:getProject\n arguments:\n filter: parent.id:012345678910 lifecycleState:DELETE_REQUESTED\n deletion-candidate:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments:\n projectId: ${[\"my-org-projects\"].projects[0].projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Retrieve information about a set of projects based on a filter. See the\n[REST API](https://cloud.google.com/resource-manager/reference/rest/v1/projects/list)\nfor more details.\n\n## Example Usage\n\n### Searching For Projects About To Be Deleted In An Org\n\n\u003c!--Start PulumiCodeChooser --\u003e\n```typescript\nimport * as pulumi from \"@pulumi/pulumi\";\nimport * as gcp from \"@pulumi/gcp\";\n\nconst my_org_projects = gcp.projects.getProject({\n filter: \"parent.id:012345678910 lifecycleState:DELETE_REQUESTED\",\n});\nconst deletion_candidate = my_org_projects.then(my_org_projects =\u003e gcp.organizations.getProject({\n projectId: my_org_projects.projects?.[0]?.projectId,\n}));\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_org_projects = gcp.projects.get_project(filter=\"parent.id:012345678910 lifecycleState:DELETE_REQUESTED\")\ndeletion_candidate = gcp.organizations.get_project(project_id=my_org_projects.projects[0].project_id)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_org_projects = Gcp.Projects.GetProject.Invoke(new()\n {\n Filter = \"parent.id:012345678910 lifecycleState:DELETE_REQUESTED\",\n });\n\n var deletion_candidate = Gcp.Organizations.GetProject.Invoke(new()\n {\n ProjectId = my_org_projects.Apply(getProjectResult =\u003e getProjectResult.Projects[0]?.ProjectId),\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\tmy_org_projects, err := projects.GetProject(ctx, \u0026projects.GetProjectArgs{\n\t\t\tFilter: \"parent.id:012345678910 lifecycleState:DELETE_REQUESTED\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\t_, err = organizations.LookupProject(ctx, \u0026organizations.LookupProjectArgs{\n\t\t\tProjectId: pulumi.StringRef(my_org_projects.Projects[0].ProjectId),\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.projects.ProjectsFunctions;\nimport com.pulumi.gcp.projects.inputs.GetProjectArgs;\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 my-org-projects = ProjectsFunctions.getProject(GetProjectArgs.builder()\n .filter(\"parent.id:012345678910 lifecycleState:DELETE_REQUESTED\")\n .build());\n\n final var deletion-candidate = OrganizationsFunctions.getProject(GetProjectArgs.builder()\n .projectId(my_org_projects.projects()[0].projectId())\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-org-projects:\n fn::invoke:\n function: gcp:projects:getProject\n arguments:\n filter: parent.id:012345678910 lifecycleState:DELETE_REQUESTED\n deletion-candidate:\n fn::invoke:\n function: gcp:organizations:getProject\n arguments:\n projectId: ${[\"my-org-projects\"].projects[0].projectId}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getProject.\n", "properties": { @@ -312841,7 +312841,7 @@ } }, "gcp:projects/getProjectService:getProjectService": { - "description": "Verify the API service for the Google Cloud Platform project to see if it is enabled or not.\n\nFor a list of services available, visit the [API library page](https://console.cloud.google.com/apis/library)\nor run `gcloud services list --available`.\n\nThis datasource requires the [Service Usage API](https://console.cloud.google.com/apis/library/serviceusage.googleapis.com)\nto use.\n\n\nTo get more information about `gcp.projects.Service`, see:\n\n* [API documentation](https://cloud.google.com/service-usage/docs/reference/rest/v1/services)\n* How-to Guides\n * [Enabling and Disabling Services](https://cloud.google.com/service-usage/docs/enable-disable)\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 my-project-service = gcp.projects.getProjectService({\n service: \"my-project-service\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_project_service = gcp.projects.get_project_service(service=\"my-project-service\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_project_service = Gcp.Projects.GetProjectService.Invoke(new()\n {\n Service = \"my-project-service\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := projects.GetProjectService(ctx, \u0026projects.GetProjectServiceArgs{\n\t\t\tService: \"my-project-service\",\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.projects.ProjectsFunctions;\nimport com.pulumi.gcp.projects.inputs.GetProjectServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-project-service = ProjectsFunctions.getProjectService(GetProjectServiceArgs.builder()\n .service(\"my-project-service\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-project-service:\n fn::invoke:\n function: gcp:projects:getProjectService\n arguments:\n service: my-project-service\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Verify the API service for the Google Cloud Platform project to see if it is enabled or not.\n\nFor a list of services available, visit the [API library page](https://console.cloud.google.com/apis/library)\nor run `gcloud services list --available`.\n\nThis datasource requires the [Service Usage API](https://console.cloud.google.com/apis/library/serviceusage.googleapis.com)\nto use.\n\n\nTo get more information about `gcp.projects.Service`, see:\n\n* [API documentation](https://cloud.google.com/service-usage/docs/reference/rest/v1/services)\n* How-to Guides\n * [Enabling and Disabling Services](https://cloud.google.com/service-usage/docs/enable-disable)\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 my_project_service = gcp.projects.getProjectService({\n service: \"my-project-service\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_project_service = gcp.projects.get_project_service(service=\"my-project-service\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_project_service = Gcp.Projects.GetProjectService.Invoke(new()\n {\n Service = \"my-project-service\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/projects\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := projects.GetProjectService(ctx, \u0026projects.GetProjectServiceArgs{\n\t\t\tService: \"my-project-service\",\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.projects.ProjectsFunctions;\nimport com.pulumi.gcp.projects.inputs.GetProjectServiceArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-project-service = ProjectsFunctions.getProjectService(GetProjectServiceArgs.builder()\n .service(\"my-project-service\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-project-service:\n fn::invoke:\n function: gcp:projects:getProjectService\n arguments:\n service: my-project-service\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getProjectService.\n", "properties": { @@ -312946,7 +312946,7 @@ } }, "gcp:pubsub/getSubscription:getSubscription": { - "description": "Get information about a Google Cloud Pub/Sub Subscription. For more information see\nthe [official documentation](https://cloud.google.com/pubsub/docs/)\nand [API](https://cloud.google.com/pubsub/docs/apis).\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 my-pubsub-subscription = gcp.pubsub.getSubscription({\n name: \"my-pubsub-subscription\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_pubsub_subscription = gcp.pubsub.get_subscription(name=\"my-pubsub-subscription\")\n```\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_pubsub_subscription = Gcp.PubSub.GetSubscription.Invoke(new()\n {\n Name = \"my-pubsub-subscription\",\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\t_, err := pubsub.LookupSubscription(ctx, \u0026pubsub.LookupSubscriptionArgs{\n\t\t\tName: \"my-pubsub-subscription\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.PubsubFunctions;\nimport com.pulumi.gcp.pubsub.inputs.GetSubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-pubsub-subscription = PubsubFunctions.getSubscription(GetSubscriptionArgs.builder()\n .name(\"my-pubsub-subscription\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-pubsub-subscription:\n fn::invoke:\n function: gcp:pubsub:getSubscription\n arguments:\n name: my-pubsub-subscription\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a Google Cloud Pub/Sub Subscription. For more information see\nthe [official documentation](https://cloud.google.com/pubsub/docs/)\nand [API](https://cloud.google.com/pubsub/docs/apis).\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 my_pubsub_subscription = gcp.pubsub.getSubscription({\n name: \"my-pubsub-subscription\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_pubsub_subscription = gcp.pubsub.get_subscription(name=\"my-pubsub-subscription\")\n```\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_pubsub_subscription = Gcp.PubSub.GetSubscription.Invoke(new()\n {\n Name = \"my-pubsub-subscription\",\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\t_, err := pubsub.LookupSubscription(ctx, \u0026pubsub.LookupSubscriptionArgs{\n\t\t\tName: \"my-pubsub-subscription\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.PubsubFunctions;\nimport com.pulumi.gcp.pubsub.inputs.GetSubscriptionArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-pubsub-subscription = PubsubFunctions.getSubscription(GetSubscriptionArgs.builder()\n .name(\"my-pubsub-subscription\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-pubsub-subscription:\n fn::invoke:\n function: gcp:pubsub:getSubscription\n arguments:\n name: my-pubsub-subscription\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getSubscription.\n", "properties": { @@ -313132,7 +313132,7 @@ } }, "gcp:pubsub/getTopic:getTopic": { - "description": "Get information about a Google Cloud Pub/Sub Topic. For more information see\nthe [official documentation](https://cloud.google.com/pubsub/docs/)\nand [API](https://cloud.google.com/pubsub/docs/apis).\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 my-pubsub-topic = gcp.pubsub.getTopic({\n name: \"my-pubsub-topic\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_pubsub_topic = gcp.pubsub.get_topic(name=\"my-pubsub-topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_pubsub_topic = Gcp.PubSub.GetTopic.Invoke(new()\n {\n Name = \"my-pubsub-topic\",\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\t_, err := pubsub.LookupTopic(ctx, \u0026pubsub.LookupTopicArgs{\n\t\t\tName: \"my-pubsub-topic\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.PubsubFunctions;\nimport com.pulumi.gcp.pubsub.inputs.GetTopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-pubsub-topic = PubsubFunctions.getTopic(GetTopicArgs.builder()\n .name(\"my-pubsub-topic\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-pubsub-topic:\n fn::invoke:\n function: gcp:pubsub:getTopic\n arguments:\n name: my-pubsub-topic\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get information about a Google Cloud Pub/Sub Topic. For more information see\nthe [official documentation](https://cloud.google.com/pubsub/docs/)\nand [API](https://cloud.google.com/pubsub/docs/apis).\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 my_pubsub_topic = gcp.pubsub.getTopic({\n name: \"my-pubsub-topic\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_pubsub_topic = gcp.pubsub.get_topic(name=\"my-pubsub-topic\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_pubsub_topic = Gcp.PubSub.GetTopic.Invoke(new()\n {\n Name = \"my-pubsub-topic\",\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\t_, err := pubsub.LookupTopic(ctx, \u0026pubsub.LookupTopicArgs{\n\t\t\tName: \"my-pubsub-topic\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn nil\n\t})\n}\n```\n```java\npackage generated_program;\n\nimport com.pulumi.Context;\nimport com.pulumi.Pulumi;\nimport com.pulumi.core.Output;\nimport com.pulumi.gcp.pubsub.PubsubFunctions;\nimport com.pulumi.gcp.pubsub.inputs.GetTopicArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-pubsub-topic = PubsubFunctions.getTopic(GetTopicArgs.builder()\n .name(\"my-pubsub-topic\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-pubsub-topic:\n fn::invoke:\n function: gcp:pubsub:getTopic\n arguments:\n name: my-pubsub-topic\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getTopic.\n", "properties": { @@ -313485,7 +313485,7 @@ } }, "gcp:runtimeconfig/getConfig:getConfig": { - "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 run-service = gcp.runtimeconfig.getConfig({\n name: \"my-service\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nrun_service = gcp.runtimeconfig.get_config(name=\"my-service\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var run_service = Gcp.RuntimeConfig.GetConfig.Invoke(new()\n {\n Name = \"my-service\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/runtimeconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := runtimeconfig.LookupConfig(ctx, \u0026runtimeconfig.LookupConfigArgs{\n\t\t\tName: \"my-service\",\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.runtimeconfig.RuntimeconfigFunctions;\nimport com.pulumi.gcp.runtimeconfig.inputs.GetConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var run-service = RuntimeconfigFunctions.getConfig(GetConfigArgs.builder()\n .name(\"my-service\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n run-service:\n fn::invoke:\n function: gcp:runtimeconfig:getConfig\n arguments:\n name: my-service\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 run_service = gcp.runtimeconfig.getConfig({\n name: \"my-service\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nrun_service = gcp.runtimeconfig.get_config(name=\"my-service\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var run_service = Gcp.RuntimeConfig.GetConfig.Invoke(new()\n {\n Name = \"my-service\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/runtimeconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := runtimeconfig.LookupConfig(ctx, \u0026runtimeconfig.LookupConfigArgs{\n\t\t\tName: \"my-service\",\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.runtimeconfig.RuntimeconfigFunctions;\nimport com.pulumi.gcp.runtimeconfig.inputs.GetConfigArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var run-service = RuntimeconfigFunctions.getConfig(GetConfigArgs.builder()\n .name(\"my-service\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n run-service:\n fn::invoke:\n function: gcp:runtimeconfig:getConfig\n arguments:\n name: my-service\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getConfig.\n", "properties": { @@ -313581,7 +313581,7 @@ } }, "gcp:runtimeconfig/getVariable:getVariable": { - "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 run-service = gcp.runtimeconfig.getVariable({\n parent: \"my-service\",\n name: \"prod-variables/hostname\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nrun_service = gcp.runtimeconfig.get_variable(parent=\"my-service\",\n name=\"prod-variables/hostname\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var run_service = Gcp.RuntimeConfig.GetVariable.Invoke(new()\n {\n Parent = \"my-service\",\n Name = \"prod-variables/hostname\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/runtimeconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := runtimeconfig.LookupVariable(ctx, \u0026runtimeconfig.LookupVariableArgs{\n\t\t\tParent: \"my-service\",\n\t\t\tName: \"prod-variables/hostname\",\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.runtimeconfig.RuntimeconfigFunctions;\nimport com.pulumi.gcp.runtimeconfig.inputs.GetVariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var run-service = RuntimeconfigFunctions.getVariable(GetVariableArgs.builder()\n .parent(\"my-service\")\n .name(\"prod-variables/hostname\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n run-service:\n fn::invoke:\n function: gcp:runtimeconfig:getVariable\n arguments:\n parent: my-service\n name: prod-variables/hostname\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 run_service = gcp.runtimeconfig.getVariable({\n parent: \"my-service\",\n name: \"prod-variables/hostname\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nrun_service = gcp.runtimeconfig.get_variable(parent=\"my-service\",\n name=\"prod-variables/hostname\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var run_service = Gcp.RuntimeConfig.GetVariable.Invoke(new()\n {\n Parent = \"my-service\",\n Name = \"prod-variables/hostname\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/runtimeconfig\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_, err := runtimeconfig.LookupVariable(ctx, \u0026runtimeconfig.LookupVariableArgs{\n\t\t\tParent: \"my-service\",\n\t\t\tName: \"prod-variables/hostname\",\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.runtimeconfig.RuntimeconfigFunctions;\nimport com.pulumi.gcp.runtimeconfig.inputs.GetVariableArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var run-service = RuntimeconfigFunctions.getVariable(GetVariableArgs.builder()\n .parent(\"my-service\")\n .name(\"prod-variables/hostname\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n run-service:\n fn::invoke:\n function: gcp:runtimeconfig:getVariable\n arguments:\n parent: my-service\n name: prod-variables/hostname\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getVariable.\n", "properties": { @@ -314740,7 +314740,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, 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", + "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": { @@ -315293,7 +315293,7 @@ } }, "gcp:sourcerepo/getRepository:getRepository": { - "description": "Get infomation about an existing Google Cloud Source Repository.\nFor more information see [the official documentation](https://cloud.google.com/source-repositories)\nand\n[API](https://cloud.google.com/source-repositories/docs/reference/rest/v1/projects.repos).\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 my-repo = gcp.sourcerepo.getRepository({\n name: \"my-repository\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.sourcerepo.get_repository(name=\"my-repository\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = Gcp.SourceRepo.GetRepository.Invoke(new()\n {\n Name = \"my-repository\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\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\t_, err := sourcerepo.LookupRepository(ctx, \u0026sourcerepo.LookupRepositoryArgs{\n\t\t\tName: \"my-repository\",\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.sourcerepo.SourcerepoFunctions;\nimport com.pulumi.gcp.sourcerepo.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-repo = SourcerepoFunctions.getRepository(GetRepositoryArgs.builder()\n .name(\"my-repository\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-repo:\n fn::invoke:\n function: gcp:sourcerepo:getRepository\n arguments:\n name: my-repository\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get infomation about an existing Google Cloud Source Repository.\nFor more information see [the official documentation](https://cloud.google.com/source-repositories)\nand\n[API](https://cloud.google.com/source-repositories/docs/reference/rest/v1/projects.repos).\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 my_repo = gcp.sourcerepo.getRepository({\n name: \"my-repository\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_repo = gcp.sourcerepo.get_repository(name=\"my-repository\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_repo = Gcp.SourceRepo.GetRepository.Invoke(new()\n {\n Name = \"my-repository\",\n });\n\n});\n```\n```go\npackage main\n\nimport (\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\t_, err := sourcerepo.LookupRepository(ctx, \u0026sourcerepo.LookupRepositoryArgs{\n\t\t\tName: \"my-repository\",\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.sourcerepo.SourcerepoFunctions;\nimport com.pulumi.gcp.sourcerepo.inputs.GetRepositoryArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-repo = SourcerepoFunctions.getRepository(GetRepositoryArgs.builder()\n .name(\"my-repository\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-repo:\n fn::invoke:\n function: gcp:sourcerepo:getRepository\n arguments:\n name: my-repository\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getRepository.\n", "properties": { @@ -316068,7 +316068,7 @@ } }, "gcp:sql/getDatabaseInstanceLatestRecoveryTime:getDatabaseInstanceLatestRecoveryTime": { - "description": "Get Latest Recovery Time for a given instance. For more information see the\n[official documentation](https://cloud.google.com/sql/)\nand\n[API](https://cloud.google.com/sql/docs/postgres/backup-recovery/pitr#get-the-latest-recovery-time).\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 = gcp.sql.getDatabaseInstanceLatestRecoveryTime({\n instance: \"sample-instance\",\n});\nexport const latestRecoveryTime = _default;\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.sql.get_database_instance_latest_recovery_time(instance=\"sample-instance\")\npulumi.export(\"latestRecoveryTime\", default)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Sql.GetDatabaseInstanceLatestRecoveryTime.Invoke(new()\n {\n Instance = \"sample-instance\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"latestRecoveryTime\"] = @default,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := sql.GetDatabaseInstanceLatestRecoveryTime(ctx, \u0026sql.GetDatabaseInstanceLatestRecoveryTimeArgs{\n\t\t\tInstance: \"sample-instance\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"latestRecoveryTime\", _default)\n\t\treturn nil\n\t})\n}\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.SqlFunctions;\nimport com.pulumi.gcp.sql.inputs.GetDatabaseInstanceLatestRecoveryTimeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 = SqlFunctions.getDatabaseInstanceLatestRecoveryTime(GetDatabaseInstanceLatestRecoveryTimeArgs.builder()\n .instance(\"sample-instance\")\n .build());\n\n ctx.export(\"latestRecoveryTime\", default_);\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n function: gcp:sql:getDatabaseInstanceLatestRecoveryTime\n arguments:\n instance: sample-instance\noutputs:\n latestRecoveryTime: ${default}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Get Latest Recovery Time for a given instance. For more information see the\n[official documentation](https://cloud.google.com/sql/)\nand\n[API](https://cloud.google.com/sql/docs/postgres/backup-recovery/pitr#get-the-latest-recovery-time).\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 = gcp.sql.getDatabaseInstanceLatestRecoveryTime({\n instance: \"sample-instance\",\n});\nexport const latestRecoveryTime = _default;\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\ndefault = gcp.sql.get_database_instance_latest_recovery_time(instance=\"sample-instance\")\npulumi.export(\"latestRecoveryTime\", default)\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var @default = Gcp.Sql.GetDatabaseInstanceLatestRecoveryTime.Invoke(new()\n {\n Instance = \"sample-instance\",\n });\n\n return new Dictionary\u003cstring, object?\u003e\n {\n [\"latestRecoveryTime\"] = @default,\n };\n});\n```\n```go\npackage main\n\nimport (\n\t\"github.com/pulumi/pulumi-gcp/sdk/v8/go/gcp/sql\"\n\t\"github.com/pulumi/pulumi/sdk/v3/go/pulumi\"\n)\n\nfunc main() {\n\tpulumi.Run(func(ctx *pulumi.Context) error {\n\t\t_default, err := sql.GetDatabaseInstanceLatestRecoveryTime(ctx, \u0026sql.GetDatabaseInstanceLatestRecoveryTimeArgs{\n\t\t\tInstance: \"sample-instance\",\n\t\t}, nil)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tctx.Export(\"latestRecoveryTime\", _default)\n\t\treturn nil\n\t})\n}\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.SqlFunctions;\nimport com.pulumi.gcp.sql.inputs.GetDatabaseInstanceLatestRecoveryTimeArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\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 = SqlFunctions.getDatabaseInstanceLatestRecoveryTime(GetDatabaseInstanceLatestRecoveryTimeArgs.builder()\n .instance(\"sample-instance\")\n .build());\n\n ctx.export(\"latestRecoveryTime\", default_);\n }\n}\n```\n```yaml\nvariables:\n default:\n fn::invoke:\n function: gcp:sql:getDatabaseInstanceLatestRecoveryTime\n arguments:\n instance: sample-instance\noutputs:\n latestRecoveryTime: ${default}\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getDatabaseInstanceLatestRecoveryTime.\n", "properties": { @@ -316274,7 +316274,7 @@ } }, "gcp:storage/getBucket:getBucket": { - "description": "Gets an existing bucket in Google Cloud Storage service (GCS).\nSee [the official documentation](https://cloud.google.com/storage/docs/key-terms#buckets)\nand\n[API](https://cloud.google.com/storage/docs/json_api/v1/buckets).\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 my-bucket = gcp.storage.getBucket({\n name: \"my-bucket\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_bucket = gcp.storage.get_bucket(name=\"my-bucket\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_bucket = Gcp.Storage.GetBucket.Invoke(new()\n {\n Name = \"my-bucket\",\n });\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_, err := storage.LookupBucket(ctx, \u0026storage.LookupBucketArgs{\n\t\t\tName: \"my-bucket\",\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.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-bucket = StorageFunctions.getBucket(GetBucketArgs.builder()\n .name(\"my-bucket\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-bucket:\n fn::invoke:\n function: gcp:storage:getBucket\n arguments:\n name: my-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", + "description": "Gets an existing bucket in Google Cloud Storage service (GCS).\nSee [the official documentation](https://cloud.google.com/storage/docs/key-terms#buckets)\nand\n[API](https://cloud.google.com/storage/docs/json_api/v1/buckets).\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 my_bucket = gcp.storage.getBucket({\n name: \"my-bucket\",\n});\n```\n```python\nimport pulumi\nimport pulumi_gcp as gcp\n\nmy_bucket = gcp.storage.get_bucket(name=\"my-bucket\")\n```\n```csharp\nusing System.Collections.Generic;\nusing System.Linq;\nusing Pulumi;\nusing Gcp = Pulumi.Gcp;\n\nreturn await Deployment.RunAsync(() =\u003e \n{\n var my_bucket = Gcp.Storage.GetBucket.Invoke(new()\n {\n Name = \"my-bucket\",\n });\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_, err := storage.LookupBucket(ctx, \u0026storage.LookupBucketArgs{\n\t\t\tName: \"my-bucket\",\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.storage.StorageFunctions;\nimport com.pulumi.gcp.storage.inputs.GetBucketArgs;\nimport java.util.List;\nimport java.util.ArrayList;\nimport java.util.Map;\nimport java.io.File;\nimport java.nio.file.Files;\nimport java.nio.file.Paths;\n\npublic class App {\n public static void main(String[] args) {\n Pulumi.run(App::stack);\n }\n\n public static void stack(Context ctx) {\n final var my-bucket = StorageFunctions.getBucket(GetBucketArgs.builder()\n .name(\"my-bucket\")\n .build());\n\n }\n}\n```\n```yaml\nvariables:\n my-bucket:\n fn::invoke:\n function: gcp:storage:getBucket\n arguments:\n name: my-bucket\n```\n\u003c!--End PulumiCodeChooser --\u003e\n", "inputs": { "description": "A collection of arguments for invoking getBucket.\n", "properties": { @@ -317081,7 +317081,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, \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", + "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": { @@ -317127,7 +317127,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, \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", + "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": { diff --git a/provider/go.mod b/provider/go.mod index 85f67add64..63b0ad3dcc 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -278,3 +278,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.147.1-0.20250203160235-205a936b2f73 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250203160235-205a936b2f73 diff --git a/provider/go.sum b/provider/go.sum index 23f38fa154..d0c7f5f9eb 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -2226,10 +2226,10 @@ github.com/pulumi/pulumi-terraform-bridge/v3 v3.102.0 h1:shzw3WluUr/TcK92njRDFxp github.com/pulumi/pulumi-terraform-bridge/v3 v3.102.0/go.mod h1:LwhiXOl9rpoRImUuDTfQQH2vTjL1JACnIFm/kWp1znU= github.com/pulumi/pulumi-yaml v1.12.0 h1:ThJP+EBqeJyCnS6w6/PwcEFOT5o112qv0lObhefmFCk= github.com/pulumi/pulumi-yaml v1.12.0/go.mod h1:EhZd1XDfuLa15O51qVVE16U6r8ldK9mLIBclqWCX27Y= -github.com/pulumi/pulumi/pkg/v3 v3.147.0 h1:aFzP2kXBL/nPPDao625xIkjAhqT5GKe3XfPXbG07oFA= -github.com/pulumi/pulumi/pkg/v3 v3.147.0/go.mod h1:WqLJy8lfzbGTEqz5Rukd+GrqBYNBf8Y3dJ+Wde+G6g4= -github.com/pulumi/pulumi/sdk/v3 v3.147.0 h1:8ZDZnEsCZa6shw1dwIDUssbYMooYyebhpmx5feuZCqM= -github.com/pulumi/pulumi/sdk/v3 v3.147.0/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= +github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250203160235-205a936b2f73 h1:eVLzW8D35d9xkTqqkuW1ZRpCnCdJ74hAtnSzv6jiUn4= +github.com/pulumi/pulumi/pkg/v3 v3.147.1-0.20250203160235-205a936b2f73/go.mod h1:WqLJy8lfzbGTEqz5Rukd+GrqBYNBf8Y3dJ+Wde+G6g4= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250203160235-205a936b2f73 h1:VYxiE3EHs4ri4JAW4WmPE93w+hVROvCAV5Sfqca1kv4= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250203160235-205a936b2f73/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= 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 d9247ff8c6..523cfafd7f 100644 --- a/sdk/go.mod +++ b/sdk/go.mod @@ -91,3 +91,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.147.1-0.20250203160235-205a936b2f73 + +replace github.com/pulumi/pulumi/sdk/v3 => github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250203160235-205a936b2f73 diff --git a/sdk/go.sum b/sdk/go.sum index 3b109768c7..a9f4fc4d62 100644 --- a/sdk/go.sum +++ b/sdk/go.sum @@ -148,8 +148,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.147.0 h1:8ZDZnEsCZa6shw1dwIDUssbYMooYyebhpmx5feuZCqM= -github.com/pulumi/pulumi/sdk/v3 v3.147.0/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250203160235-205a936b2f73 h1:VYxiE3EHs4ri4JAW4WmPE93w+hVROvCAV5Sfqca1kv4= +github.com/pulumi/pulumi/sdk/v3 v3.147.1-0.20250203160235-205a936b2f73/go.mod h1:+WC9aIDo8fMgd2g0jCHuZU2S/VYNLRAZ3QXt6YVgwaA= 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 7583b0d34474d2bddbbed7ab0ae3a7bd3d88b260 Mon Sep 17 00:00:00 2001 From: pulumi-bot Date: Mon, 3 Feb 2025 16:24:32 +0000 Subject: [PATCH 2/2] make build_sdks --- .../gcp/accesscontextmanager/accessLevel.go | 2 +- .../accessLevelCondition.go | 6 ++-- .../gcp/accesscontextmanager/accessLevels.go | 2 +- .../authorizedOrgsDesc.go | 2 +- .../gcpUserAccessBinding.go | 2 +- .../accesscontextmanager/servicePerimeter.go | 8 ++--- .../servicePerimeterDryRunResource.go | 4 +-- .../servicePerimeterResource.go | 4 +-- .../accesscontextmanager/servicePerimeters.go | 2 +- sdk/go/gcp/alloydb/cluster.go | 4 +-- sdk/go/gcp/alloydb/instance.go | 2 +- sdk/go/gcp/alloydb/user.go | 4 +-- sdk/go/gcp/apigee/syncAuthorization.go | 2 +- sdk/go/gcp/apphub/service.go | 4 +-- sdk/go/gcp/artifactregistry/repository.go | 28 ++++++++--------- .../managementServer.go | 2 +- sdk/go/gcp/bigquery/job.go | 4 +-- sdk/go/gcp/bigquery/table.go | 2 +- sdk/go/gcp/binaryauthorization/attestor.go | 2 +- sdk/go/gcp/certificateauthority/authority.go | 2 +- .../gcp/certificateauthority/certificate.go | 10 +++---- .../certificatemanager/dnsAuthorization.go | 2 +- .../gcp/cloudbuild/bitbucketServerConfig.go | 2 +- sdk/go/gcp/cloudbuild/trigger.go | 8 ++--- sdk/go/gcp/cloudbuildv2/connection.go | 16 +++++----- sdk/go/gcp/cloudbuildv2/repository.go | 20 ++++++------- sdk/go/gcp/cloudfunctionsv2/function.go | 20 ++++++------- sdk/go/gcp/cloudidentity/groupMembership.go | 2 +- sdk/go/gcp/cloudids/endpoint.go | 2 +- sdk/go/gcp/cloudrun/domainMapping.go | 2 +- sdk/go/gcp/cloudrun/service.go | 4 +-- sdk/go/gcp/cloudrunv2/job.go | 4 +-- sdk/go/gcp/cloudrunv2/service.go | 4 +-- sdk/go/gcp/compute/address.go | 2 +- .../gcp/compute/backendServiceSignedUrlKey.go | 2 +- sdk/go/gcp/compute/diskAsyncReplication.go | 4 +-- sdk/go/gcp/compute/firewallPolicyRule.go | 4 +-- sdk/go/gcp/compute/getNetblockIPRanges.go | 2 +- sdk/go/gcp/compute/getNetworkPeering.go | 2 +- sdk/go/gcp/compute/globalForwardingRule.go | 6 ++-- sdk/go/gcp/compute/instance.go | 4 +-- sdk/go/gcp/compute/instanceGroupMembership.go | 6 ++-- sdk/go/gcp/compute/instanceTemplate.go | 4 +-- sdk/go/gcp/compute/managedSslCertificate.go | 2 +- sdk/go/gcp/compute/mangedSslCertificate.go | 2 +- sdk/go/gcp/compute/networkAttachment.go | 2 +- sdk/go/gcp/compute/networkEndpoint.go | 4 +-- sdk/go/gcp/compute/networkEndpointGroup.go | 4 +-- sdk/go/gcp/compute/networkEndpointList.go | 6 ++-- sdk/go/gcp/compute/networkPeering.go | 2 +- sdk/go/gcp/compute/nodeGroup.go | 8 ++--- sdk/go/gcp/compute/packetMirroring.go | 2 +- sdk/go/gcp/compute/perInstanceConfig.go | 4 +-- sdk/go/gcp/compute/regionNetworkEndpoint.go | 6 ++-- .../gcp/compute/regionNetworkEndpointGroup.go | 8 ++--- sdk/go/gcp/compute/regionPerInstanceConfig.go | 4 +-- .../gcp/compute/regionSecurityPolicyRule.go | 8 ++--- sdk/go/gcp/compute/regionUrlMap.go | 20 ++++++------- sdk/go/gcp/compute/route.go | 4 +-- sdk/go/gcp/compute/routerPeer.go | 4 +-- sdk/go/gcp/compute/securityPolicyRule.go | 6 ++-- sdk/go/gcp/compute/subnetwork.go | 18 +++++------ sdk/go/gcp/compute/targetInstance.go | 8 ++--- sdk/go/gcp/compute/urlmap.go | 30 +++++++++---------- sdk/go/gcp/container/cluster.go | 4 +-- sdk/go/gcp/container/nodePool.go | 4 +-- .../connectionProfile.go | 4 +-- .../databasemigrationservice/migrationJob.go | 4 +-- sdk/go/gcp/dataloss/preventionJobTrigger.go | 2 +- sdk/go/gcp/dataplex/task.go | 4 +-- sdk/go/gcp/dataproc/cluster.go | 2 +- sdk/go/gcp/datastream/connectionProfile.go | 2 +- sdk/go/gcp/developerconnect/connection.go | 30 +++++++++---------- sdk/go/gcp/dns/managedZone.go | 18 +++++------ sdk/go/gcp/dns/policy.go | 4 +-- sdk/go/gcp/dns/recordSet.go | 2 +- sdk/go/gcp/dns/responsePolicy.go | 8 ++--- sdk/go/gcp/dns/responsePolicyRule.go | 6 ++-- sdk/go/gcp/eventarc/trigger.go | 2 +- .../gcp/firebase/appCheckAppAttestConfig.go | 4 +-- sdk/go/gcp/firebase/appCheckDebugToken.go | 2 +- .../gcp/firebase/appCheckDeviceCheckConfig.go | 2 +- .../firebase/appCheckPlayIntegrityConfig.go | 4 +-- .../appCheckRecaptchaEnterpriseConfig.go | 2 +- .../gcp/firebase/appCheckRecaptchaV3Config.go | 2 +- sdk/go/gcp/firebase/databaseInstance.go | 2 +- sdk/go/gcp/firebase/hostingChannel.go | 4 +-- sdk/go/gcp/firebase/hostingCustomDomain.go | 4 +-- sdk/go/gcp/firebase/hostingRelease.go | 6 ++-- sdk/go/gcp/firebase/hostingSite.go | 2 +- sdk/go/gcp/firebase/hostingVersion.go | 12 ++++---- sdk/go/gcp/firebase/project.go | 2 +- sdk/go/gcp/firebase/storageBucket.go | 2 +- sdk/go/gcp/gkeonprem/bareMetalNodePool.go | 4 +-- sdk/go/gcp/gkeonprem/vmwareNodePool.go | 4 +-- sdk/go/gcp/healthcare/consentStore.go | 4 +-- sdk/go/gcp/iam/accessBoundaryPolicy.go | 4 +-- sdk/go/gcp/iam/denyPolicy.go | 2 +- sdk/go/gcp/iap/settings.go | 2 +- sdk/go/gcp/identityplatform/config.go | 2 +- .../gcp/integrationconnectors/connection.go | 4 +-- sdk/go/gcp/kms/autokeyConfig.go | 2 +- sdk/go/gcp/logging/billingAccountSink.go | 4 +-- sdk/go/gcp/logging/folderBucketConfig.go | 2 +- sdk/go/gcp/logging/folderExclusion.go | 2 +- sdk/go/gcp/logging/folderSink.go | 6 ++-- sdk/go/gcp/logging/organizationSink.go | 4 +-- sdk/go/gcp/logging/projectBucketConfig.go | 2 +- sdk/go/gcp/memorystore/instance.go | 6 ++-- sdk/go/gcp/netapp/storagePool.go | 2 +- sdk/go/gcp/networkconnectivity/spoke.go | 2 +- .../gcp/networkmanagement/connectivityTest.go | 4 +-- .../networksecurity/gatewaySecurityPolicy.go | 2 +- .../gatewaySecurityPolicyRule.go | 4 +-- sdk/go/gcp/networksecurity/securityProfile.go | 4 +-- .../networksecurity/securityProfileGroup.go | 4 +-- .../networksecurity/tlsInspectionPolicy.go | 4 +-- sdk/go/gcp/networkservices/authzExtension.go | 2 +- sdk/go/gcp/networkservices/edgeCacheKeyset.go | 4 +-- sdk/go/gcp/networkservices/edgeCacheOrigin.go | 4 +-- .../gcp/networkservices/edgeCacheService.go | 4 +-- sdk/go/gcp/networkservices/gateway.go | 4 +-- sdk/go/gcp/networkservices/httpRoute.go | 2 +- sdk/go/gcp/networkservices/serviceBinding.go | 2 +- .../gcp/networkservices/serviceLbPolicies.go | 2 +- sdk/go/gcp/networkservices/tcpRoute.go | 8 ++--- sdk/go/gcp/networkservices/tlsRoute.go | 6 ++-- sdk/go/gcp/parallelstore/instance.go | 4 +-- .../gcp/parametermanager/parameterVersion.go | 4 +-- .../regionalParameterVersion.go | 4 +-- sdk/go/gcp/redis/cluster.go | 8 ++--- .../redis/clusterUserCreatedConnections.go | 6 ++-- sdk/go/gcp/redis/instance.go | 2 +- sdk/go/gcp/runtimeconfig/variable.go | 4 +-- sdk/go/gcp/secretmanager/regionalSecret.go | 2 +- .../secretmanager/regionalSecretVersion.go | 10 +++---- sdk/go/gcp/secretmanager/secret.go | 2 +- sdk/go/gcp/secretmanager/secretVersion.go | 8 ++--- sdk/go/gcp/securesourcemanager/instance.go | 4 +-- .../securitycenter/folderSccBigQueryExport.go | 2 +- .../v2folderSccBigQueryExport.go | 2 +- .../v2organizationSccBigQueryExport.go | 2 +- .../v2organizationSccBigQueryExports.go | 2 +- sdk/go/gcp/servicenetworking/connection.go | 2 +- .../servicenetworking/vpcServiceControls.go | 2 +- sdk/go/gcp/storage/bucketACL.go | 2 +- sdk/go/gcp/storage/defaultObjectACL.go | 2 +- sdk/go/gcp/storage/objectACL.go | 2 +- sdk/go/gcp/storage/transferJob.go | 4 +-- sdk/go/gcp/transcoder/job.go | 10 +++---- .../vertex/aiFeatureOnlineStoreFeatureview.go | 8 ++--- sdk/go/gcp/vmwareengine/cluster.go | 8 ++--- sdk/go/gcp/vmwareengine/externalAccessRule.go | 12 ++++---- sdk/go/gcp/vmwareengine/externalAddress.go | 6 ++-- sdk/go/gcp/vmwareengine/networkPeering.go | 8 ++--- sdk/go/gcp/vmwareengine/networkPolicy.go | 4 +-- sdk/go/gcp/vmwareengine/privateCloud.go | 4 +-- sdk/go/gcp/vmwareengine/subnet.go | 4 +-- sdk/go/gcp/workstations/workstation.go | 2 +- sdk/go/gcp/workstations/workstationConfig.go | 18 +++++------ .../accesscontextmanager/getAccessPolicy.ts | 8 ++--- .../appengine/getDefaultServiceAccount.ts | 4 +-- sdk/nodejs/apphub/getDiscoveredService.ts | 4 +-- sdk/nodejs/apphub/getDiscoveredWorkload.ts | 4 +-- sdk/nodejs/apphub/service.ts | 4 +-- sdk/nodejs/artifactregistry/getRepository.ts | 4 +-- .../getBackupPlanAssociation.ts | 4 +-- .../backupdisasterrecovery/getBackupVault.ts | 4 +-- .../getManagementServer.ts | 4 +-- sdk/nodejs/beyondcorp/getAppConnection.ts | 4 +-- sdk/nodejs/beyondcorp/getAppConnector.ts | 4 +-- sdk/nodejs/beyondcorp/getAppGateway.ts | 4 +-- .../certificateauthority/getAuthority.ts | 4 +-- .../certificatemanager/getCertificateMap.ts | 4 +-- .../certificatemanager/getCertificates.ts | 8 ++--- sdk/nodejs/cloudbuildv2/connection.ts | 4 +-- sdk/nodejs/cloudbuildv2/repository.ts | 4 +-- sdk/nodejs/cloudfunctions/getFunction.ts | 4 +-- sdk/nodejs/cloudfunctionsv2/getFunction.ts | 4 +-- sdk/nodejs/cloudrun/getService.ts | 4 +-- sdk/nodejs/cloudscheduler/job.ts | 4 +-- sdk/nodejs/compute/getBackendBucket.ts | 4 +-- .../compute/getDefaultServiceAccount.ts | 4 +-- sdk/nodejs/compute/getDisk.ts | 4 +-- sdk/nodejs/compute/getForwardingRule.ts | 4 +-- sdk/nodejs/compute/getForwardingRules.ts | 4 +-- sdk/nodejs/compute/getGlobalForwardingRule.ts | 4 +-- sdk/nodejs/compute/getNetblockIPRanges.ts | 4 +-- sdk/nodejs/compute/getNetwork.ts | 4 +-- sdk/nodejs/compute/getNetworks.ts | 4 +-- .../compute/getRegionInstanceTemplate.ts | 4 +-- sdk/nodejs/compute/getRouter.ts | 4 +-- sdk/nodejs/compute/getRouterStatus.ts | 4 +-- sdk/nodejs/compute/getSSLPolicy.ts | 4 +-- sdk/nodejs/compute/getSnapshot.ts | 4 +-- sdk/nodejs/compute/getSubnetwork.ts | 4 +-- sdk/nodejs/compute/getSubnetworks.ts | 4 +-- sdk/nodejs/compute/getVPNGateway.ts | 4 +-- sdk/nodejs/compute/instanceTemplate.ts | 2 +- sdk/nodejs/compute/routerStatus.ts | 4 +-- sdk/nodejs/compute/targetInstance.ts | 2 +- sdk/nodejs/datafusion/instance.ts | 2 +- sdk/nodejs/developerconnect/connection.ts | 6 ++-- .../logging/billingAccountBucketConfig.ts | 2 +- sdk/nodejs/logging/getSink.ts | 4 +-- .../logging/organizationBucketConfig.ts | 2 +- .../monitoring/getClusterIstioService.ts | 4 +-- .../monitoring/getIstioCanonicalService.ts | 4 +-- sdk/nodejs/monitoring/getMeshIstioService.ts | 4 +-- sdk/nodejs/monitoring/slo.ts | 2 +- sdk/nodejs/netapp/backup.ts | 2 +- sdk/nodejs/netapp/volume.ts | 2 +- sdk/nodejs/netapp/volumeReplication.ts | 2 +- sdk/nodejs/netapp/volumeSnapshot.ts | 2 +- .../oracledatabase/autonomousDatabase.ts | 4 +-- sdk/nodejs/oracledatabase/cloudVmCluster.ts | 4 +-- .../oracledatabase/getAutonomousDatabase.ts | 4 +-- .../oracledatabase/getAutonomousDatabases.ts | 4 +-- .../getCloudExadataInfrastructure.ts | 4 +-- .../oracledatabase/getCloudVmCluster.ts | 4 +-- sdk/nodejs/organizations/getFolders.ts | 8 ++--- .../parametermanager/getRegionalParameters.ts | 4 +-- .../privilegedaccessmanager/getEntitlement.ts | 4 +-- sdk/nodejs/projects/getProject.ts | 8 ++--- sdk/nodejs/projects/getProjectService.ts | 4 +-- sdk/nodejs/pubsub/getSubscription.ts | 4 +-- sdk/nodejs/pubsub/getTopic.ts | 4 +-- sdk/nodejs/redis/instance.ts | 6 ++-- sdk/nodejs/runtimeconfig/getConfig.ts | 4 +-- sdk/nodejs/runtimeconfig/getVariable.ts | 4 +-- .../securitycenter/instanceIamBinding.ts | 2 +- .../securitycenter/instanceIamMember.ts | 2 +- .../securitycenter/instanceIamPolicy.ts | 2 +- .../serviceaccount/getAccountAccessToken.ts | 4 +-- sdk/nodejs/serviceaccount/iambinding.ts | 4 +-- sdk/nodejs/serviceaccount/iammember.ts | 4 +-- sdk/nodejs/serviceaccount/iampolicy.ts | 4 +-- sdk/nodejs/sourcerepo/getRepository.ts | 4 +-- .../getDatabaseInstanceLatestRecoveryTime.ts | 4 +-- sdk/nodejs/storage/getBucket.ts | 4 +-- .../getTransferProjectServiceAccount.ts | 4 +-- .../getTransferProjectServieAccount.ts | 4 +-- sdk/nodejs/storage/transferAgentPool.ts | 2 +- sdk/nodejs/storage/transferJob.ts | 2 +- sdk/python/pulumi_gcp/_utilities.py | 12 +++++--- 245 files changed, 571 insertions(+), 567 deletions(-) diff --git a/sdk/go/gcp/accesscontextmanager/accessLevel.go b/sdk/go/gcp/accesscontextmanager/accessLevel.go index b380972964..25d510ba00 100644 --- a/sdk/go/gcp/accesscontextmanager/accessLevel.go +++ b/sdk/go/gcp/accesscontextmanager/accessLevel.go @@ -45,7 +45,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ +// access_policy, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ // Parent: pulumi.String("organizations/123456789"), // Title: pulumi.String("my policy"), // }) diff --git a/sdk/go/gcp/accesscontextmanager/accessLevelCondition.go b/sdk/go/gcp/accesscontextmanager/accessLevelCondition.go index 1abd374aee..6ab4f66059 100644 --- a/sdk/go/gcp/accesscontextmanager/accessLevelCondition.go +++ b/sdk/go/gcp/accesscontextmanager/accessLevelCondition.go @@ -52,14 +52,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ +// access_policy, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ // Parent: pulumi.String("organizations/123456789"), // Title: pulumi.String("my policy"), // }) // if err != nil { // return err // } -// _, err = accesscontextmanager.NewAccessLevel(ctx, "access-level-service-account", &accesscontextmanager.AccessLevelArgs{ +// access_level_service_account, err := accesscontextmanager.NewAccessLevel(ctx, "access-level-service-account", &accesscontextmanager.AccessLevelArgs{ // Parent: access_policy.Name.ApplyT(func(name string) (string, error) { // return fmt.Sprintf("accessPolicies/%v", name), nil // }).(pulumi.StringOutput), @@ -90,7 +90,7 @@ import ( // if err != nil { // return err // } -// _, err = serviceaccount.NewAccount(ctx, "created-later", &serviceaccount.AccountArgs{ +// created_later, err := serviceaccount.NewAccount(ctx, "created-later", &serviceaccount.AccountArgs{ // AccountId: pulumi.String("my-account-id"), // }) // if err != nil { diff --git a/sdk/go/gcp/accesscontextmanager/accessLevels.go b/sdk/go/gcp/accesscontextmanager/accessLevels.go index 05654e9e3e..2facc58c99 100644 --- a/sdk/go/gcp/accesscontextmanager/accessLevels.go +++ b/sdk/go/gcp/accesscontextmanager/accessLevels.go @@ -30,7 +30,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ +// access_policy, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ // Parent: pulumi.String("organizations/123456789"), // Title: pulumi.String("my policy"), // }) diff --git a/sdk/go/gcp/accesscontextmanager/authorizedOrgsDesc.go b/sdk/go/gcp/accesscontextmanager/authorizedOrgsDesc.go index d30b4baaa3..7f4f9db69c 100644 --- a/sdk/go/gcp/accesscontextmanager/authorizedOrgsDesc.go +++ b/sdk/go/gcp/accesscontextmanager/authorizedOrgsDesc.go @@ -48,7 +48,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := accesscontextmanager.NewAccessPolicy(ctx, "test-access", &accesscontextmanager.AccessPolicyArgs{ +// test_access, err := accesscontextmanager.NewAccessPolicy(ctx, "test-access", &accesscontextmanager.AccessPolicyArgs{ // Parent: pulumi.String("organizations/"), // Title: pulumi.String("my policy"), // }) diff --git a/sdk/go/gcp/accesscontextmanager/gcpUserAccessBinding.go b/sdk/go/gcp/accesscontextmanager/gcpUserAccessBinding.go index edf5e42e70..80c558a535 100644 --- a/sdk/go/gcp/accesscontextmanager/gcpUserAccessBinding.go +++ b/sdk/go/gcp/accesscontextmanager/gcpUserAccessBinding.go @@ -51,7 +51,7 @@ import ( // if err != nil { // return err // } -// _, err = accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ +// access_policy, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ // Parent: pulumi.String("organizations/123456789"), // Title: pulumi.String("my policy"), // }) diff --git a/sdk/go/gcp/accesscontextmanager/servicePerimeter.go b/sdk/go/gcp/accesscontextmanager/servicePerimeter.go index 66e425b0b3..ea217ec032 100644 --- a/sdk/go/gcp/accesscontextmanager/servicePerimeter.go +++ b/sdk/go/gcp/accesscontextmanager/servicePerimeter.go @@ -53,7 +53,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ +// access_policy, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ // Parent: pulumi.String("organizations/123456789"), // Title: pulumi.String("my policy"), // }) @@ -129,7 +129,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ +// access_policy, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ // Parent: pulumi.String("organizations/123456789"), // Title: pulumi.String("my policy"), // }) @@ -174,7 +174,7 @@ import ( // if err != nil { // return err // } -// _, err = accesscontextmanager.NewAccessLevel(ctx, "access-level", &accesscontextmanager.AccessLevelArgs{ +// access_level, err := accesscontextmanager.NewAccessLevel(ctx, "access-level", &accesscontextmanager.AccessLevelArgs{ // Parent: access_policy.Name.ApplyT(func(name string) (string, error) { // return fmt.Sprintf("accessPolicies/%v", name), nil // }).(pulumi.StringOutput), @@ -299,7 +299,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ +// access_policy, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ // Parent: pulumi.String("organizations/123456789"), // Title: pulumi.String("my policy"), // }) diff --git a/sdk/go/gcp/accesscontextmanager/servicePerimeterDryRunResource.go b/sdk/go/gcp/accesscontextmanager/servicePerimeterDryRunResource.go index 1c056820cf..a7f4575b5c 100644 --- a/sdk/go/gcp/accesscontextmanager/servicePerimeterDryRunResource.go +++ b/sdk/go/gcp/accesscontextmanager/servicePerimeterDryRunResource.go @@ -52,14 +52,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ +// access_policy, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ // Parent: pulumi.String("organizations/123456789"), // Title: pulumi.String("my policy"), // }) // if err != nil { // return err // } -// _, err = accesscontextmanager.NewServicePerimeter(ctx, "service-perimeter-dry-run-resource", &accesscontextmanager.ServicePerimeterArgs{ +// service_perimeter_dry_run_resourceServicePerimeter, err := accesscontextmanager.NewServicePerimeter(ctx, "service-perimeter-dry-run-resource", &accesscontextmanager.ServicePerimeterArgs{ // Parent: access_policy.Name.ApplyT(func(name string) (string, error) { // return fmt.Sprintf("accessPolicies/%v", name), nil // }).(pulumi.StringOutput), diff --git a/sdk/go/gcp/accesscontextmanager/servicePerimeterResource.go b/sdk/go/gcp/accesscontextmanager/servicePerimeterResource.go index 068d36ebdf..781482cc48 100644 --- a/sdk/go/gcp/accesscontextmanager/servicePerimeterResource.go +++ b/sdk/go/gcp/accesscontextmanager/servicePerimeterResource.go @@ -52,14 +52,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ +// access_policy, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ // Parent: pulumi.String("organizations/123456789"), // Title: pulumi.String("my policy"), // }) // if err != nil { // return err // } -// _, err = accesscontextmanager.NewServicePerimeter(ctx, "service-perimeter-resource", &accesscontextmanager.ServicePerimeterArgs{ +// service_perimeter_resourceServicePerimeter, err := accesscontextmanager.NewServicePerimeter(ctx, "service-perimeter-resource", &accesscontextmanager.ServicePerimeterArgs{ // Parent: access_policy.Name.ApplyT(func(name string) (string, error) { // return fmt.Sprintf("accessPolicies/%v", name), nil // }).(pulumi.StringOutput), diff --git a/sdk/go/gcp/accesscontextmanager/servicePerimeters.go b/sdk/go/gcp/accesscontextmanager/servicePerimeters.go index 0ba390ad75..a7e463bab1 100644 --- a/sdk/go/gcp/accesscontextmanager/servicePerimeters.go +++ b/sdk/go/gcp/accesscontextmanager/servicePerimeters.go @@ -41,7 +41,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ +// access_policy, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ // Parent: pulumi.String("organizations/123456789"), // Title: pulumi.String("my policy"), // }) diff --git a/sdk/go/gcp/alloydb/cluster.go b/sdk/go/gcp/alloydb/cluster.go index c658d62d30..a0b14776a9 100644 --- a/sdk/go/gcp/alloydb/cluster.go +++ b/sdk/go/gcp/alloydb/cluster.go @@ -71,7 +71,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("alloydb-cluster-full"), // }) // if err != nil { @@ -149,7 +149,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("alloydb-secondary-cluster"), // }) // if err != nil { diff --git a/sdk/go/gcp/alloydb/instance.go b/sdk/go/gcp/alloydb/instance.go index b665f25f59..2a45f19b9a 100644 --- a/sdk/go/gcp/alloydb/instance.go +++ b/sdk/go/gcp/alloydb/instance.go @@ -109,7 +109,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("alloydb-secondary-network"), // }) // if err != nil { diff --git a/sdk/go/gcp/alloydb/user.go b/sdk/go/gcp/alloydb/user.go index 24bf35c35f..f07c021df5 100644 --- a/sdk/go/gcp/alloydb/user.go +++ b/sdk/go/gcp/alloydb/user.go @@ -78,7 +78,7 @@ import ( // if err != nil { // return err // } -// _, err = alloydb.NewInstance(ctx, "default", &alloydb.InstanceArgs{ +// _default, err := alloydb.NewInstance(ctx, "default", &alloydb.InstanceArgs{ // Cluster: defaultCluster.Name, // InstanceId: pulumi.String("alloydb-instance"), // InstanceType: pulumi.String("PRIMARY"), @@ -167,7 +167,7 @@ import ( // if err != nil { // return err // } -// _, err = alloydb.NewInstance(ctx, "default", &alloydb.InstanceArgs{ +// _default, err := alloydb.NewInstance(ctx, "default", &alloydb.InstanceArgs{ // Cluster: defaultCluster.Name, // InstanceId: pulumi.String("alloydb-instance"), // InstanceType: pulumi.String("PRIMARY"), diff --git a/sdk/go/gcp/apigee/syncAuthorization.go b/sdk/go/gcp/apigee/syncAuthorization.go index 35cc661e32..dcc4bb2471 100644 --- a/sdk/go/gcp/apigee/syncAuthorization.go +++ b/sdk/go/gcp/apigee/syncAuthorization.go @@ -75,7 +75,7 @@ import ( // if err != nil { // return err // } -// _, err = projects.NewIAMMember(ctx, "synchronizer-iam", &projects.IAMMemberArgs{ +// synchronizer_iam, err := projects.NewIAMMember(ctx, "synchronizer-iam", &projects.IAMMemberArgs{ // Project: project.ProjectId, // Role: pulumi.String("roles/apigee.synchronizerManager"), // Member: serviceAccount.Email.ApplyT(func(email string) (string, error) { diff --git a/sdk/go/gcp/apphub/service.go b/sdk/go/gcp/apphub/service.go index 56a81a1ede..c85b697e1b 100644 --- a/sdk/go/gcp/apphub/service.go +++ b/sdk/go/gcp/apphub/service.go @@ -103,7 +103,7 @@ import ( // return err // } // // health check -// _, err = compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{ +// _default, err := compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{ // Name: pulumi.String("l7-ilb-hc"), // Project: serviceProject.ProjectId, // CheckIntervalSec: pulumi.Int(1), @@ -260,7 +260,7 @@ import ( // return err // } // // health check -// _, err = compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{ +// _default, err := compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{ // Name: pulumi.String("l7-ilb-hc"), // Project: serviceProject.ProjectId, // CheckIntervalSec: pulumi.Int(1), diff --git a/sdk/go/gcp/artifactregistry/repository.go b/sdk/go/gcp/artifactregistry/repository.go index 5a57accca0..2379c84942 100644 --- a/sdk/go/gcp/artifactregistry/repository.go +++ b/sdk/go/gcp/artifactregistry/repository.go @@ -170,7 +170,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := artifactregistry.NewRepository(ctx, "my-repo-upstream-1", &artifactregistry.RepositoryArgs{ +// my_repo_upstream_1, err := artifactregistry.NewRepository(ctx, "my-repo-upstream-1", &artifactregistry.RepositoryArgs{ // Location: pulumi.String("us-central1"), // RepositoryId: pulumi.String("my-repository-upstream-1"), // Description: pulumi.String("example docker repository (upstream source) 1"), @@ -179,7 +179,7 @@ import ( // if err != nil { // return err // } -// _, err = artifactregistry.NewRepository(ctx, "my-repo-upstream-2", &artifactregistry.RepositoryArgs{ +// my_repo_upstream_2, err := artifactregistry.NewRepository(ctx, "my-repo-upstream-2", &artifactregistry.RepositoryArgs{ // Location: pulumi.String("us-central1"), // RepositoryId: pulumi.String("my-repository-upstream-2"), // Description: pulumi.String("example docker repository (upstream source) 2"), @@ -434,7 +434,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ +// example_remote_secret, err := secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("example-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -443,7 +443,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ +// example_remote_secretVersion, err := secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ // Secret: example_remote_secret.ID(), // SecretData: pulumi.String("remote-password"), // }) @@ -508,7 +508,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ +// example_remote_secret, err := secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("example-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -517,7 +517,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ +// example_remote_secretVersion, err := secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ // Secret: example_remote_secret.ID(), // SecretData: pulumi.String("remote-password"), // }) @@ -584,7 +584,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ +// example_remote_secret, err := secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("example-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -593,7 +593,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ +// example_remote_secretVersion, err := secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ // Secret: example_remote_secret.ID(), // SecretData: pulumi.String("remote-password"), // }) @@ -660,7 +660,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ +// example_remote_secret, err := secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("example-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -669,7 +669,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ +// example_remote_secretVersion, err := secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ // Secret: example_remote_secret.ID(), // SecretData: pulumi.String("remote-password"), // }) @@ -736,7 +736,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ +// example_remote_secret, err := secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("example-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -745,7 +745,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ +// example_remote_secretVersion, err := secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ // Secret: example_remote_secret.ID(), // SecretData: pulumi.String("remote-password"), // }) @@ -909,7 +909,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ +// example_remote_secret, err := secretmanager.NewSecret(ctx, "example-remote-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("example-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -918,7 +918,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ +// example_remote_secretVersion, err := secretmanager.NewSecretVersion(ctx, "example-remote-secret_version", &secretmanager.SecretVersionArgs{ // Secret: example_remote_secret.ID(), // SecretData: pulumi.String("remote-password"), // }) diff --git a/sdk/go/gcp/backupdisasterrecovery/managementServer.go b/sdk/go/gcp/backupdisasterrecovery/managementServer.go index 4ae072f3a2..6f0aa2e355 100644 --- a/sdk/go/gcp/backupdisasterrecovery/managementServer.go +++ b/sdk/go/gcp/backupdisasterrecovery/managementServer.go @@ -30,7 +30,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("vpc-network"), // }) // if err != nil { diff --git a/sdk/go/gcp/bigquery/job.go b/sdk/go/gcp/bigquery/job.go index b0c9aeb085..c5d90048e1 100644 --- a/sdk/go/gcp/bigquery/job.go +++ b/sdk/go/gcp/bigquery/job.go @@ -552,7 +552,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := bigquery.NewDataset(ctx, "source-one", &bigquery.DatasetArgs{ +// source_oneDataset, err := bigquery.NewDataset(ctx, "source-one", &bigquery.DatasetArgs{ // DatasetId: pulumi.String("job_extract_dataset"), // FriendlyName: pulumi.String("test"), // Description: pulumi.String("This is a test description"), @@ -561,7 +561,7 @@ import ( // if err != nil { // return err // } -// _, err = bigquery.NewTable(ctx, "source-one", &bigquery.TableArgs{ +// source_one, err := bigquery.NewTable(ctx, "source-one", &bigquery.TableArgs{ // DeletionProtection: pulumi.Bool(false), // DatasetId: source_oneDataset.DatasetId, // TableId: pulumi.String("job_extract_table"), diff --git a/sdk/go/gcp/bigquery/table.go b/sdk/go/gcp/bigquery/table.go index 9dfe8332d0..199b9e06e0 100644 --- a/sdk/go/gcp/bigquery/table.go +++ b/sdk/go/gcp/bigquery/table.go @@ -34,7 +34,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := bigquery.NewDataset(ctx, "default", &bigquery.DatasetArgs{ +// _default, err := bigquery.NewDataset(ctx, "default", &bigquery.DatasetArgs{ // DatasetId: pulumi.String("foo"), // FriendlyName: pulumi.String("test"), // Description: pulumi.String("This is a test description"), diff --git a/sdk/go/gcp/binaryauthorization/attestor.go b/sdk/go/gcp/binaryauthorization/attestor.go index d1ce4bd7b1..433085fc46 100644 --- a/sdk/go/gcp/binaryauthorization/attestor.go +++ b/sdk/go/gcp/binaryauthorization/attestor.go @@ -107,7 +107,7 @@ import ( // if err != nil { // return err // } -// _, err = kms.NewCryptoKey(ctx, "crypto-key", &kms.CryptoKeyArgs{ +// crypto_key, err := kms.NewCryptoKey(ctx, "crypto-key", &kms.CryptoKeyArgs{ // Name: pulumi.String("test-attestor-key"), // KeyRing: keyring.ID(), // Purpose: pulumi.String("ASYMMETRIC_SIGN"), diff --git a/sdk/go/gcp/certificateauthority/authority.go b/sdk/go/gcp/certificateauthority/authority.go index 62704c6dec..a1915f2121 100644 --- a/sdk/go/gcp/certificateauthority/authority.go +++ b/sdk/go/gcp/certificateauthority/authority.go @@ -97,7 +97,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := certificateauthority.NewAuthority(ctx, "root-ca", &certificateauthority.AuthorityArgs{ +// root_ca, err := certificateauthority.NewAuthority(ctx, "root-ca", &certificateauthority.AuthorityArgs{ // Pool: pulumi.String("ca-pool"), // CertificateAuthorityId: pulumi.String("my-certificate-authority-root"), // Location: pulumi.String("us-central1"), diff --git a/sdk/go/gcp/certificateauthority/certificate.go b/sdk/go/gcp/certificateauthority/certificate.go index c1a1ae8956..fa574b8142 100644 --- a/sdk/go/gcp/certificateauthority/certificate.go +++ b/sdk/go/gcp/certificateauthority/certificate.go @@ -35,7 +35,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ +// _default, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ // Location: pulumi.String("us-central1"), // Name: pulumi.String("default"), // Tier: pulumi.String("ENTERPRISE"), @@ -193,7 +193,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ +// _default, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ // Location: pulumi.String("us-central1"), // Name: pulumi.String("my-pool"), // Tier: pulumi.String("ENTERPRISE"), @@ -369,7 +369,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ +// _default, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ // Location: pulumi.String("us-central1"), // Name: pulumi.String("my-pool"), // Tier: pulumi.String("ENTERPRISE"), @@ -455,7 +455,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ +// _default, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ // Location: pulumi.String("us-central1"), // Name: pulumi.String("my-pool"), // Tier: pulumi.String("ENTERPRISE"), @@ -574,7 +574,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ +// _default, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ // Location: pulumi.String("us-central1"), // Name: pulumi.String("my-pool"), // Tier: pulumi.String("ENTERPRISE"), diff --git a/sdk/go/gcp/certificatemanager/dnsAuthorization.go b/sdk/go/gcp/certificatemanager/dnsAuthorization.go index c0ed6194b2..36add3a6e1 100644 --- a/sdk/go/gcp/certificatemanager/dnsAuthorization.go +++ b/sdk/go/gcp/certificatemanager/dnsAuthorization.go @@ -30,7 +30,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := certificatemanager.NewDnsAuthorization(ctx, "default", &certificatemanager.DnsAuthorizationArgs{ +// _default, err := certificatemanager.NewDnsAuthorization(ctx, "default", &certificatemanager.DnsAuthorizationArgs{ // Name: pulumi.String("dns-auth"), // Location: pulumi.String("global"), // Description: pulumi.String("The default dns"), diff --git a/sdk/go/gcp/cloudbuild/bitbucketServerConfig.go b/sdk/go/gcp/cloudbuild/bitbucketServerConfig.go index 54176f4cc4..fd9984eeb2 100644 --- a/sdk/go/gcp/cloudbuild/bitbucketServerConfig.go +++ b/sdk/go/gcp/cloudbuild/bitbucketServerConfig.go @@ -148,7 +148,7 @@ import ( // if err != nil { // return err // } -// _, err = servicenetworking.NewConnection(ctx, "default", &servicenetworking.ConnectionArgs{ +// _default, err := servicenetworking.NewConnection(ctx, "default", &servicenetworking.ConnectionArgs{ // Network: vpcNetwork.ID(), // Service: pulumi.String("servicenetworking.googleapis.com"), // ReservedPeeringRanges: pulumi.StringArray{ diff --git a/sdk/go/gcp/cloudbuild/trigger.go b/sdk/go/gcp/cloudbuild/trigger.go index 66232d8f2b..bb388993a9 100644 --- a/sdk/go/gcp/cloudbuild/trigger.go +++ b/sdk/go/gcp/cloudbuild/trigger.go @@ -574,7 +574,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := cloudbuildv2.NewConnection(ctx, "my-connection", &cloudbuildv2.ConnectionArgs{ +// my_connection, err := cloudbuildv2.NewConnection(ctx, "my-connection", &cloudbuildv2.ConnectionArgs{ // Location: pulumi.String("us-central1"), // Name: pulumi.String("my-connection"), // GithubConfig: &cloudbuildv2.ConnectionGithubConfigArgs{ @@ -587,7 +587,7 @@ import ( // if err != nil { // return err // } -// _, err = cloudbuildv2.NewRepository(ctx, "my-repository", &cloudbuildv2.RepositoryArgs{ +// my_repository, err := cloudbuildv2.NewRepository(ctx, "my-repository", &cloudbuildv2.RepositoryArgs{ // Name: pulumi.String("my-repo"), // ParentConnection: my_connection.ID(), // RemoteUri: pulumi.String("https://github.com/myuser/my-repo.git"), @@ -960,7 +960,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := cloudbuildv2.NewConnection(ctx, "my-connection", &cloudbuildv2.ConnectionArgs{ +// my_connection, err := cloudbuildv2.NewConnection(ctx, "my-connection", &cloudbuildv2.ConnectionArgs{ // Location: pulumi.String("us-central1"), // Name: pulumi.String("my-connection"), // GithubConfig: &cloudbuildv2.ConnectionGithubConfigArgs{ @@ -973,7 +973,7 @@ import ( // if err != nil { // return err // } -// _, err = cloudbuildv2.NewRepository(ctx, "my-repository", &cloudbuildv2.RepositoryArgs{ +// my_repository, err := cloudbuildv2.NewRepository(ctx, "my-repository", &cloudbuildv2.RepositoryArgs{ // Name: pulumi.String("my-repo"), // ParentConnection: my_connection.ID(), // RemoteUri: pulumi.String("https://github.com/myuser/my-repo.git"), diff --git a/sdk/go/gcp/cloudbuildv2/connection.go b/sdk/go/gcp/cloudbuildv2/connection.go index 9dd228bf30..0f6ba167cc 100644 --- a/sdk/go/gcp/cloudbuildv2/connection.go +++ b/sdk/go/gcp/cloudbuildv2/connection.go @@ -71,7 +71,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "private-key-secret", &secretmanager.SecretArgs{ +// private_key_secret, err := secretmanager.NewSecret(ctx, "private-key-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("ghe-pk-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -86,14 +86,14 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "private-key-secret-version", &secretmanager.SecretVersionArgs{ +// private_key_secret_version, err := secretmanager.NewSecretVersion(ctx, "private-key-secret-version", &secretmanager.SecretVersionArgs{ // Secret: private_key_secret.ID(), // SecretData: pulumi.String(invokeFile.Result), // }) // if err != nil { // return err // } -// _, err = secretmanager.NewSecret(ctx, "webhook-secret-secret", &secretmanager.SecretArgs{ +// webhook_secret_secret, err := secretmanager.NewSecret(ctx, "webhook-secret-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("github-token-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -102,7 +102,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "webhook-secret-secret-version", &secretmanager.SecretVersionArgs{ +// webhook_secret_secret_version, err := secretmanager.NewSecretVersion(ctx, "webhook-secret-secret-version", &secretmanager.SecretVersionArgs{ // Secret: webhook_secret_secret.ID(), // SecretData: pulumi.String(""), // }) @@ -122,14 +122,14 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretIamPolicy(ctx, "policy-pk", &secretmanager.SecretIamPolicyArgs{ +// policy_pk, err := secretmanager.NewSecretIamPolicy(ctx, "policy-pk", &secretmanager.SecretIamPolicyArgs{ // SecretId: private_key_secret.SecretId, // PolicyData: pulumi.String(p4sa_secretAccessor.PolicyData), // }) // if err != nil { // return err // } -// _, err = secretmanager.NewSecretIamPolicy(ctx, "policy-whs", &secretmanager.SecretIamPolicyArgs{ +// policy_whs, err := secretmanager.NewSecretIamPolicy(ctx, "policy-whs", &secretmanager.SecretIamPolicyArgs{ // SecretId: webhook_secret_secret.SecretId, // PolicyData: pulumi.String(p4sa_secretAccessor.PolicyData), // }) @@ -176,7 +176,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "github-token-secret", &secretmanager.SecretArgs{ +// github_token_secret, err := secretmanager.NewSecret(ctx, "github-token-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("github-token-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -191,7 +191,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "github-token-secret-version", &secretmanager.SecretVersionArgs{ +// github_token_secret_version, err := secretmanager.NewSecretVersion(ctx, "github-token-secret-version", &secretmanager.SecretVersionArgs{ // Secret: github_token_secret.ID(), // SecretData: pulumi.String(invokeFile.Result), // }) diff --git a/sdk/go/gcp/cloudbuildv2/repository.go b/sdk/go/gcp/cloudbuildv2/repository.go index 14af3d1162..fda9add416 100644 --- a/sdk/go/gcp/cloudbuildv2/repository.go +++ b/sdk/go/gcp/cloudbuildv2/repository.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "private-key-secret", &secretmanager.SecretArgs{ +// private_key_secret, err := secretmanager.NewSecret(ctx, "private-key-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("ghe-pk-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -54,14 +54,14 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "private-key-secret-version", &secretmanager.SecretVersionArgs{ +// private_key_secret_version, err := secretmanager.NewSecretVersion(ctx, "private-key-secret-version", &secretmanager.SecretVersionArgs{ // Secret: private_key_secret.ID(), // SecretData: pulumi.String(invokeFile.Result), // }) // if err != nil { // return err // } -// _, err = secretmanager.NewSecret(ctx, "webhook-secret-secret", &secretmanager.SecretArgs{ +// webhook_secret_secret, err := secretmanager.NewSecret(ctx, "webhook-secret-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("github-token-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -70,7 +70,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "webhook-secret-secret-version", &secretmanager.SecretVersionArgs{ +// webhook_secret_secret_version, err := secretmanager.NewSecretVersion(ctx, "webhook-secret-secret-version", &secretmanager.SecretVersionArgs{ // Secret: webhook_secret_secret.ID(), // SecretData: pulumi.String(""), // }) @@ -90,21 +90,21 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretIamPolicy(ctx, "policy-pk", &secretmanager.SecretIamPolicyArgs{ +// policy_pk, err := secretmanager.NewSecretIamPolicy(ctx, "policy-pk", &secretmanager.SecretIamPolicyArgs{ // SecretId: private_key_secret.SecretId, // PolicyData: pulumi.String(p4sa_secretAccessor.PolicyData), // }) // if err != nil { // return err // } -// _, err = secretmanager.NewSecretIamPolicy(ctx, "policy-whs", &secretmanager.SecretIamPolicyArgs{ +// policy_whs, err := secretmanager.NewSecretIamPolicy(ctx, "policy-whs", &secretmanager.SecretIamPolicyArgs{ // SecretId: webhook_secret_secret.SecretId, // PolicyData: pulumi.String(p4sa_secretAccessor.PolicyData), // }) // if err != nil { // return err // } -// _, err = cloudbuildv2.NewConnection(ctx, "my-connection", &cloudbuildv2.ConnectionArgs{ +// my_connection, err := cloudbuildv2.NewConnection(ctx, "my-connection", &cloudbuildv2.ConnectionArgs{ // Location: pulumi.String("us-central1"), // Name: pulumi.String("my-terraform-ghe-connection"), // GithubEnterpriseConfig: &cloudbuildv2.ConnectionGithubEnterpriseConfigArgs{ @@ -153,7 +153,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "github-token-secret", &secretmanager.SecretArgs{ +// github_token_secret, err := secretmanager.NewSecret(ctx, "github-token-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("github-token-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -168,7 +168,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "github-token-secret-version", &secretmanager.SecretVersionArgs{ +// github_token_secret_version, err := secretmanager.NewSecretVersion(ctx, "github-token-secret-version", &secretmanager.SecretVersionArgs{ // Secret: github_token_secret.ID(), // SecretData: pulumi.String(invokeFile.Result), // }) @@ -195,7 +195,7 @@ import ( // if err != nil { // return err // } -// _, err = cloudbuildv2.NewConnection(ctx, "my-connection", &cloudbuildv2.ConnectionArgs{ +// my_connection, err := cloudbuildv2.NewConnection(ctx, "my-connection", &cloudbuildv2.ConnectionArgs{ // Location: pulumi.String("us-central1"), // Name: pulumi.String("my-connection"), // GithubConfig: &cloudbuildv2.ConnectionGithubConfigArgs{ diff --git a/sdk/go/gcp/cloudfunctionsv2/function.go b/sdk/go/gcp/cloudfunctionsv2/function.go index 66ff2639f8..f88836322f 100644 --- a/sdk/go/gcp/cloudfunctionsv2/function.go +++ b/sdk/go/gcp/cloudfunctionsv2/function.go @@ -316,7 +316,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "source-bucket", &storage.BucketArgs{ +// source_bucket, err := storage.NewBucket(ctx, "source-bucket", &storage.BucketArgs{ // Name: pulumi.String("gcf-source-bucket"), // Location: pulumi.String("US"), // UniformBucketLevelAccess: pulumi.Bool(true), @@ -332,7 +332,7 @@ import ( // if err != nil { // return err // } -// _, err = storage.NewBucket(ctx, "trigger-bucket", &storage.BucketArgs{ +// trigger_bucket, err := storage.NewBucket(ctx, "trigger-bucket", &storage.BucketArgs{ // Name: pulumi.String("gcf-trigger-bucket"), // Location: pulumi.String("us-central1"), // UniformBucketLevelAccess: pulumi.Bool(true), @@ -346,7 +346,7 @@ import ( // } // // To use GCS CloudEvent triggers, the GCS service account requires the Pub/Sub Publisher(roles/pubsub.publisher) IAM role in the specified project. // // (See https://cloud.google.com/eventarc/docs/run/quickstart-storage#before-you-begin) -// _, err = projects.NewIAMMember(ctx, "gcs-pubsub-publishing", &projects.IAMMemberArgs{ +// gcs_pubsub_publishing, err := projects.NewIAMMember(ctx, "gcs-pubsub-publishing", &projects.IAMMemberArgs{ // Project: pulumi.String("my-project-name"), // Role: pulumi.String("roles/pubsub.publisher"), // Member: pulumi.Sprintf("serviceAccount:%v", gcsAccount.EmailAddress), @@ -374,7 +374,7 @@ import ( // if err != nil { // return err // } -// _, err = projects.NewIAMMember(ctx, "event-receiving", &projects.IAMMemberArgs{ +// event_receiving, err := projects.NewIAMMember(ctx, "event-receiving", &projects.IAMMemberArgs{ // Project: pulumi.String("my-project-name"), // Role: pulumi.String("roles/eventarc.eventReceiver"), // Member: account.Email.ApplyT(func(email string) (string, error) { @@ -386,7 +386,7 @@ import ( // if err != nil { // return err // } -// _, err = projects.NewIAMMember(ctx, "artifactregistry-reader", &projects.IAMMemberArgs{ +// artifactregistry_reader, err := projects.NewIAMMember(ctx, "artifactregistry-reader", &projects.IAMMemberArgs{ // Project: pulumi.String("my-project-name"), // Role: pulumi.String("roles/artifactregistry.reader"), // Member: account.Email.ApplyT(func(email string) (string, error) { @@ -473,7 +473,7 @@ import ( // // https://medium.com/google-cloud/applying-a-path-pattern-when-filtering-in-eventarc-f06b937b4c34 // // and the docs: // // https://cloud.google.com/eventarc/docs/path-patterns -// _, err := storage.NewBucket(ctx, "source-bucket", &storage.BucketArgs{ +// source_bucket, err := storage.NewBucket(ctx, "source-bucket", &storage.BucketArgs{ // Name: pulumi.String("gcf-source-bucket"), // Location: pulumi.String("US"), // UniformBucketLevelAccess: pulumi.Bool(true), @@ -499,7 +499,7 @@ import ( // // Note: The right way of listening for Cloud Storage events is to use a Cloud Storage trigger. // // Here we use Audit Logs to monitor the bucket so path patterns can be used in the example of // // google_cloudfunctions2_function below (Audit Log events have path pattern support) -// _, err = storage.NewBucket(ctx, "audit-log-bucket", &storage.BucketArgs{ +// audit_log_bucket, err := storage.NewBucket(ctx, "audit-log-bucket", &storage.BucketArgs{ // Name: pulumi.String("gcf-auditlog-bucket"), // Location: pulumi.String("us-central1"), // UniformBucketLevelAccess: pulumi.Bool(true), @@ -518,7 +518,7 @@ import ( // if err != nil { // return err // } -// _, err = projects.NewIAMMember(ctx, "event-receiving", &projects.IAMMemberArgs{ +// event_receiving, err := projects.NewIAMMember(ctx, "event-receiving", &projects.IAMMemberArgs{ // Project: pulumi.String("my-project-name"), // Role: pulumi.String("roles/eventarc.eventReceiver"), // Member: account.Email.ApplyT(func(email string) (string, error) { @@ -530,7 +530,7 @@ import ( // if err != nil { // return err // } -// _, err = projects.NewIAMMember(ctx, "artifactregistry-reader", &projects.IAMMemberArgs{ +// artifactregistry_reader, err := projects.NewIAMMember(ctx, "artifactregistry-reader", &projects.IAMMemberArgs{ // Project: pulumi.String("my-project-name"), // Role: pulumi.String("roles/artifactregistry.reader"), // Member: account.Email.ApplyT(func(email string) (string, error) { @@ -1062,7 +1062,7 @@ import ( // if err != nil { // return err // } -// _, err = artifactregistry.NewRepository(ctx, "encoded-ar-repo", &artifactregistry.RepositoryArgs{ +// encoded_ar_repo, err := artifactregistry.NewRepository(ctx, "encoded-ar-repo", &artifactregistry.RepositoryArgs{ // Location: pulumi.String("us-central1"), // RepositoryId: pulumi.String("cmek-repo"), // Format: pulumi.String("DOCKER"), diff --git a/sdk/go/gcp/cloudidentity/groupMembership.go b/sdk/go/gcp/cloudidentity/groupMembership.go index 08b667ff33..9c06ef72c5 100644 --- a/sdk/go/gcp/cloudidentity/groupMembership.go +++ b/sdk/go/gcp/cloudidentity/groupMembership.go @@ -55,7 +55,7 @@ import ( // if err != nil { // return err // } -// _, err = cloudidentity.NewGroup(ctx, "child-group", &cloudidentity.GroupArgs{ +// child_group, err := cloudidentity.NewGroup(ctx, "child-group", &cloudidentity.GroupArgs{ // DisplayName: pulumi.String("my-identity-group-child"), // Parent: pulumi.String("customers/A01b123xz"), // GroupKey: &cloudidentity.GroupGroupKeyArgs{ diff --git a/sdk/go/gcp/cloudids/endpoint.go b/sdk/go/gcp/cloudids/endpoint.go index 0de85d852a..c56ed0a706 100644 --- a/sdk/go/gcp/cloudids/endpoint.go +++ b/sdk/go/gcp/cloudids/endpoint.go @@ -36,7 +36,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("tf-test-my-network"), // }) // if err != nil { diff --git a/sdk/go/gcp/cloudrun/domainMapping.go b/sdk/go/gcp/cloudrun/domainMapping.go index 65c279f549..ba069cf926 100644 --- a/sdk/go/gcp/cloudrun/domainMapping.go +++ b/sdk/go/gcp/cloudrun/domainMapping.go @@ -36,7 +36,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := cloudrun.NewService(ctx, "default", &cloudrun.ServiceArgs{ +// _default, err := cloudrun.NewService(ctx, "default", &cloudrun.ServiceArgs{ // Name: pulumi.String("cloudrun-srv"), // Location: pulumi.String("us-central1"), // Metadata: &cloudrun.ServiceMetadataArgs{ diff --git a/sdk/go/gcp/cloudrun/service.go b/sdk/go/gcp/cloudrun/service.go index 545ae29cc5..08fb996e8d 100644 --- a/sdk/go/gcp/cloudrun/service.go +++ b/sdk/go/gcp/cloudrun/service.go @@ -44,7 +44,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := cloudrun.NewService(ctx, "default", &cloudrun.ServiceArgs{ +// _default, err := cloudrun.NewService(ctx, "default", &cloudrun.ServiceArgs{ // Name: pulumi.String("cloud_run_service_name"), // Location: pulumi.String("us-central1"), // Template: &cloudrun.ServiceTemplateArgs{ @@ -295,7 +295,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := cloudrun.NewService(ctx, "default", &cloudrun.ServiceArgs{ +// _default, err := cloudrun.NewService(ctx, "default", &cloudrun.ServiceArgs{ // Name: pulumi.String("cloudrun-srv"), // Location: pulumi.String("us-central1"), // Template: &cloudrun.ServiceTemplateArgs{ diff --git a/sdk/go/gcp/cloudrunv2/job.go b/sdk/go/gcp/cloudrunv2/job.go index 3a8db6b981..bf276ed544 100644 --- a/sdk/go/gcp/cloudrunv2/job.go +++ b/sdk/go/gcp/cloudrunv2/job.go @@ -362,7 +362,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "secret-version-data", &secretmanager.SecretVersionArgs{ +// secret_version_data, err := secretmanager.NewSecretVersion(ctx, "secret-version-data", &secretmanager.SecretVersionArgs{ // Secret: secret.Name, // SecretData: pulumi.String("secret-data"), // }) @@ -373,7 +373,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretIamMember(ctx, "secret-access", &secretmanager.SecretIamMemberArgs{ +// secret_access, err := secretmanager.NewSecretIamMember(ctx, "secret-access", &secretmanager.SecretIamMemberArgs{ // SecretId: secret.ID(), // Role: pulumi.String("roles/secretmanager.secretAccessor"), // Member: pulumi.Sprintf("serviceAccount:%v-compute@developer.gserviceaccount.com", project.Number), diff --git a/sdk/go/gcp/cloudrunv2/service.go b/sdk/go/gcp/cloudrunv2/service.go index c949bfc4c3..43a10efda3 100644 --- a/sdk/go/gcp/cloudrunv2/service.go +++ b/sdk/go/gcp/cloudrunv2/service.go @@ -126,7 +126,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "secret-version-data", &secretmanager.SecretVersionArgs{ +// secret_version_data, err := secretmanager.NewSecretVersion(ctx, "secret-version-data", &secretmanager.SecretVersionArgs{ // Secret: secret.Name, // SecretData: pulumi.String("secret-data"), // }) @@ -464,7 +464,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "secret-version-data", &secretmanager.SecretVersionArgs{ +// secret_version_data, err := secretmanager.NewSecretVersion(ctx, "secret-version-data", &secretmanager.SecretVersionArgs{ // Secret: secret.Name, // SecretData: pulumi.String("secret-data"), // }) diff --git a/sdk/go/gcp/compute/address.go b/sdk/go/gcp/compute/address.go index 7aa8bdbc4a..971f1ac50a 100644 --- a/sdk/go/gcp/compute/address.go +++ b/sdk/go/gcp/compute/address.go @@ -73,7 +73,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("my-network"), // }) // if err != nil { diff --git a/sdk/go/gcp/compute/backendServiceSignedUrlKey.go b/sdk/go/gcp/compute/backendServiceSignedUrlKey.go index 864843f5bd..659c85e595 100644 --- a/sdk/go/gcp/compute/backendServiceSignedUrlKey.go +++ b/sdk/go/gcp/compute/backendServiceSignedUrlKey.go @@ -77,7 +77,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewHttpHealthCheck(ctx, "default", &compute.HttpHealthCheckArgs{ +// _default, err := compute.NewHttpHealthCheck(ctx, "default", &compute.HttpHealthCheckArgs{ // Name: pulumi.String("test"), // RequestPath: pulumi.String("/"), // CheckIntervalSec: pulumi.Int(1), diff --git a/sdk/go/gcp/compute/diskAsyncReplication.go b/sdk/go/gcp/compute/diskAsyncReplication.go index 19faabed67..af6d6277fa 100644 --- a/sdk/go/gcp/compute/diskAsyncReplication.go +++ b/sdk/go/gcp/compute/diskAsyncReplication.go @@ -30,7 +30,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewDisk(ctx, "primary-disk", &compute.DiskArgs{ +// primary_disk, err := compute.NewDisk(ctx, "primary-disk", &compute.DiskArgs{ // Name: pulumi.String("primary-disk"), // Type: pulumi.String("pd-ssd"), // Zone: pulumi.String("europe-west4-a"), @@ -39,7 +39,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewDisk(ctx, "secondary-disk", &compute.DiskArgs{ +// secondary_disk, err := compute.NewDisk(ctx, "secondary-disk", &compute.DiskArgs{ // Name: pulumi.String("secondary-disk"), // Type: pulumi.String("pd-ssd"), // Zone: pulumi.String("europe-west3-a"), diff --git a/sdk/go/gcp/compute/firewallPolicyRule.go b/sdk/go/gcp/compute/firewallPolicyRule.go index 829a9f5bcb..c748125e04 100644 --- a/sdk/go/gcp/compute/firewallPolicyRule.go +++ b/sdk/go/gcp/compute/firewallPolicyRule.go @@ -58,7 +58,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewFirewallPolicy(ctx, "default", &compute.FirewallPolicyArgs{ +// _default, err := compute.NewFirewallPolicy(ctx, "default", &compute.FirewallPolicyArgs{ // Parent: folder.ID(), // ShortName: pulumi.String("fw-policy"), // Description: pulumi.String("Resource created for Terraform acceptance testing"), @@ -140,7 +140,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewFirewallPolicy(ctx, "default", &compute.FirewallPolicyArgs{ +// _default, err := compute.NewFirewallPolicy(ctx, "default", &compute.FirewallPolicyArgs{ // Parent: folder.ID(), // ShortName: pulumi.String("fw-policy"), // Description: pulumi.String("Firewall policy"), diff --git a/sdk/go/gcp/compute/getNetblockIPRanges.go b/sdk/go/gcp/compute/getNetblockIPRanges.go index 42678f1585..8bb7171c4e 100644 --- a/sdk/go/gcp/compute/getNetblockIPRanges.go +++ b/sdk/go/gcp/compute/getNetblockIPRanges.go @@ -62,7 +62,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("test-network"), // }) // if err != nil { diff --git a/sdk/go/gcp/compute/getNetworkPeering.go b/sdk/go/gcp/compute/getNetworkPeering.go index 1c9eba8956..a55f2baa54 100644 --- a/sdk/go/gcp/compute/getNetworkPeering.go +++ b/sdk/go/gcp/compute/getNetworkPeering.go @@ -30,7 +30,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("foobar"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) diff --git a/sdk/go/gcp/compute/globalForwardingRule.go b/sdk/go/gcp/compute/globalForwardingRule.go index 7dcb073ab9..9a85cbddf2 100644 --- a/sdk/go/gcp/compute/globalForwardingRule.go +++ b/sdk/go/gcp/compute/globalForwardingRule.go @@ -351,7 +351,7 @@ import ( // if param := cfg.Get("subnetworkCidr"); param != "" { // subnetworkCidr = param // } -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("my-network"), // }) // if err != nil { @@ -552,7 +552,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewGlobalAddress(ctx, "default", &compute.GlobalAddressArgs{ +// _default, err := compute.NewGlobalAddress(ctx, "default", &compute.GlobalAddressArgs{ // Project: network.Project, // Name: pulumi.String("global-psconnect-ip"), // AddressType: pulumi.String("INTERNAL"), @@ -616,7 +616,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewGlobalAddress(ctx, "default", &compute.GlobalAddressArgs{ +// _default, err := compute.NewGlobalAddress(ctx, "default", &compute.GlobalAddressArgs{ // Project: network.Project, // Name: pulumi.String("global-psconnect-ip"), // AddressType: pulumi.String("INTERNAL"), diff --git a/sdk/go/gcp/compute/instance.go b/sdk/go/gcp/compute/instance.go index 7e85e64b2e..e18e63181a 100644 --- a/sdk/go/gcp/compute/instance.go +++ b/sdk/go/gcp/compute/instance.go @@ -32,7 +32,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ +// _default, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ // AccountId: pulumi.String("my-custom-sa"), // DisplayName: pulumi.String("Custom SA for VM Instance"), // }) @@ -105,7 +105,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ +// _default, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ // AccountId: pulumi.String("my-custom-sa"), // DisplayName: pulumi.String("Custom SA for VM Instance"), // }) diff --git a/sdk/go/gcp/compute/instanceGroupMembership.go b/sdk/go/gcp/compute/instanceGroupMembership.go index 093e0028ba..fa58f248d6 100644 --- a/sdk/go/gcp/compute/instanceGroupMembership.go +++ b/sdk/go/gcp/compute/instanceGroupMembership.go @@ -47,13 +47,13 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default-network", &compute.NetworkArgs{ +// default_network, err := compute.NewNetwork(ctx, "default-network", &compute.NetworkArgs{ // Name: pulumi.String("network"), // }) // if err != nil { // return err // } -// _, err = compute.NewInstance(ctx, "default-instance", &compute.InstanceArgs{ +// default_instance, err := compute.NewInstance(ctx, "default-instance", &compute.InstanceArgs{ // Name: pulumi.String("instance"), // MachineType: pulumi.String("e2-medium"), // BootDisk: &compute.InstanceBootDiskArgs{ @@ -70,7 +70,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewInstanceGroup(ctx, "default-instance-group", &compute.InstanceGroupArgs{ +// default_instance_group, err := compute.NewInstanceGroup(ctx, "default-instance-group", &compute.InstanceGroupArgs{ // Name: pulumi.String("instance-group"), // }) // if err != nil { diff --git a/sdk/go/gcp/compute/instanceTemplate.go b/sdk/go/gcp/compute/instanceTemplate.go index 6b573d6fec..9181815827 100644 --- a/sdk/go/gcp/compute/instanceTemplate.go +++ b/sdk/go/gcp/compute/instanceTemplate.go @@ -34,7 +34,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ +// _default, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ // AccountId: pulumi.String("service-account-id"), // DisplayName: pulumi.String("Service Account"), // }) @@ -249,7 +249,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ +// _default, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ // AccountId: pulumi.String("my-custom-sa"), // DisplayName: pulumi.String("Custom SA for VM Instance"), // }) diff --git a/sdk/go/gcp/compute/managedSslCertificate.go b/sdk/go/gcp/compute/managedSslCertificate.go index bcd08fe70d..a7ade440a5 100644 --- a/sdk/go/gcp/compute/managedSslCertificate.go +++ b/sdk/go/gcp/compute/managedSslCertificate.go @@ -53,7 +53,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewManagedSslCertificate(ctx, "default", &compute.ManagedSslCertificateArgs{ +// _default, err := compute.NewManagedSslCertificate(ctx, "default", &compute.ManagedSslCertificateArgs{ // Name: pulumi.String("test-cert"), // Managed: &compute.ManagedSslCertificateManagedArgs{ // Domains: pulumi.StringArray{ diff --git a/sdk/go/gcp/compute/mangedSslCertificate.go b/sdk/go/gcp/compute/mangedSslCertificate.go index 3d6bd3d98c..575682c707 100644 --- a/sdk/go/gcp/compute/mangedSslCertificate.go +++ b/sdk/go/gcp/compute/mangedSslCertificate.go @@ -53,7 +53,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewManagedSslCertificate(ctx, "default", &compute.ManagedSslCertificateArgs{ +// _default, err := compute.NewManagedSslCertificate(ctx, "default", &compute.ManagedSslCertificateArgs{ // Name: pulumi.String("test-cert"), // Managed: &compute.ManagedSslCertificateManagedArgs{ // Domains: pulumi.StringArray{ diff --git a/sdk/go/gcp/compute/networkAttachment.go b/sdk/go/gcp/compute/networkAttachment.go index 0d2175b833..fdfc382517 100644 --- a/sdk/go/gcp/compute/networkAttachment.go +++ b/sdk/go/gcp/compute/networkAttachment.go @@ -110,7 +110,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("basic-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) diff --git a/sdk/go/gcp/compute/networkEndpoint.go b/sdk/go/gcp/compute/networkEndpoint.go index 3f9adeb12b..cc73d665dc 100644 --- a/sdk/go/gcp/compute/networkEndpoint.go +++ b/sdk/go/gcp/compute/networkEndpoint.go @@ -51,7 +51,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("neg-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -67,7 +67,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewInstance(ctx, "endpoint-instance", &compute.InstanceArgs{ +// endpoint_instance, err := compute.NewInstance(ctx, "endpoint-instance", &compute.InstanceArgs{ // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ diff --git a/sdk/go/gcp/compute/networkEndpointGroup.go b/sdk/go/gcp/compute/networkEndpointGroup.go index 6058d2502a..fd4f09a278 100644 --- a/sdk/go/gcp/compute/networkEndpointGroup.go +++ b/sdk/go/gcp/compute/networkEndpointGroup.go @@ -49,7 +49,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("neg-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -94,7 +94,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("neg-network"), // }) // if err != nil { diff --git a/sdk/go/gcp/compute/networkEndpointList.go b/sdk/go/gcp/compute/networkEndpointList.go index 76d5033f2b..e25c8279e8 100644 --- a/sdk/go/gcp/compute/networkEndpointList.go +++ b/sdk/go/gcp/compute/networkEndpointList.go @@ -54,7 +54,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("neg-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -70,7 +70,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewInstance(ctx, "endpoint-instance1", &compute.InstanceArgs{ +// endpoint_instance1, err := compute.NewInstance(ctx, "endpoint-instance1", &compute.InstanceArgs{ // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ @@ -90,7 +90,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewInstance(ctx, "endpoint-instance2", &compute.InstanceArgs{ +// endpoint_instance2, err := compute.NewInstance(ctx, "endpoint-instance2", &compute.InstanceArgs{ // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ diff --git a/sdk/go/gcp/compute/networkPeering.go b/sdk/go/gcp/compute/networkPeering.go index d56e677cbf..b0cecaca22 100644 --- a/sdk/go/gcp/compute/networkPeering.go +++ b/sdk/go/gcp/compute/networkPeering.go @@ -36,7 +36,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("foobar"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) diff --git a/sdk/go/gcp/compute/nodeGroup.go b/sdk/go/gcp/compute/nodeGroup.go index 7a799841c8..6e559b9beb 100644 --- a/sdk/go/gcp/compute/nodeGroup.go +++ b/sdk/go/gcp/compute/nodeGroup.go @@ -41,7 +41,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNodeTemplate(ctx, "soletenant-tmpl", &compute.NodeTemplateArgs{ +// soletenant_tmpl, err := compute.NewNodeTemplate(ctx, "soletenant-tmpl", &compute.NodeTemplateArgs{ // Name: pulumi.String("soletenant-tmpl"), // Region: pulumi.String("us-central1"), // NodeType: pulumi.String("n1-node-96-624"), @@ -78,7 +78,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNodeTemplate(ctx, "soletenant-tmpl", &compute.NodeTemplateArgs{ +// soletenant_tmpl, err := compute.NewNodeTemplate(ctx, "soletenant-tmpl", &compute.NodeTemplateArgs{ // Name: pulumi.String("soletenant-tmpl"), // Region: pulumi.String("us-central1"), // NodeType: pulumi.String("c2-node-60-240"), @@ -116,7 +116,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNodeTemplate(ctx, "soletenant-tmpl", &compute.NodeTemplateArgs{ +// soletenant_tmpl, err := compute.NewNodeTemplate(ctx, "soletenant-tmpl", &compute.NodeTemplateArgs{ // Name: pulumi.String("soletenant-tmpl"), // Region: pulumi.String("us-central1"), // NodeType: pulumi.String("n1-node-96-624"), @@ -172,7 +172,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewNodeTemplate(ctx, "soletenant-tmpl", &compute.NodeTemplateArgs{ +// soletenant_tmpl, err := compute.NewNodeTemplate(ctx, "soletenant-tmpl", &compute.NodeTemplateArgs{ // Name: pulumi.String("soletenant-tmpl"), // Region: pulumi.String("us-central1"), // NodeType: pulumi.String("n1-node-96-624"), diff --git a/sdk/go/gcp/compute/packetMirroring.go b/sdk/go/gcp/compute/packetMirroring.go index 40c9a4b5b3..5480b50c3b 100644 --- a/sdk/go/gcp/compute/packetMirroring.go +++ b/sdk/go/gcp/compute/packetMirroring.go @@ -38,7 +38,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("my-network"), // }) // if err != nil { diff --git a/sdk/go/gcp/compute/perInstanceConfig.go b/sdk/go/gcp/compute/perInstanceConfig.go index f104ba25ae..fbda2bd8d2 100644 --- a/sdk/go/gcp/compute/perInstanceConfig.go +++ b/sdk/go/gcp/compute/perInstanceConfig.go @@ -44,7 +44,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewInstanceTemplate(ctx, "igm-basic", &compute.InstanceTemplateArgs{ +// igm_basic, err := compute.NewInstanceTemplate(ctx, "igm-basic", &compute.InstanceTemplateArgs{ // Name: pulumi.String("my-template"), // MachineType: pulumi.String("e2-medium"), // CanIpForward: pulumi.Bool(false), @@ -91,7 +91,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewDisk(ctx, "default", &compute.DiskArgs{ +// _default, err := compute.NewDisk(ctx, "default", &compute.DiskArgs{ // Name: pulumi.String("my-disk-name"), // Type: pulumi.String("pd-ssd"), // Zone: pulumi.Any(igm.Zone), diff --git a/sdk/go/gcp/compute/regionNetworkEndpoint.go b/sdk/go/gcp/compute/regionNetworkEndpoint.go index fe42f24384..c166136e61 100644 --- a/sdk/go/gcp/compute/regionNetworkEndpoint.go +++ b/sdk/go/gcp/compute/regionNetworkEndpoint.go @@ -40,7 +40,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -84,7 +84,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -128,7 +128,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) diff --git a/sdk/go/gcp/compute/regionNetworkEndpointGroup.go b/sdk/go/gcp/compute/regionNetworkEndpointGroup.go index 64ccabeb55..7fa053574a 100644 --- a/sdk/go/gcp/compute/regionNetworkEndpointGroup.go +++ b/sdk/go/gcp/compute/regionNetworkEndpointGroup.go @@ -315,7 +315,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("psc-network"), // }) // if err != nil { @@ -422,7 +422,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("network"), // }) // if err != nil { @@ -456,7 +456,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("network"), // }) // if err != nil { @@ -490,7 +490,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("network"), // }) // if err != nil { diff --git a/sdk/go/gcp/compute/regionPerInstanceConfig.go b/sdk/go/gcp/compute/regionPerInstanceConfig.go index ea194005bc..180a56bb6a 100644 --- a/sdk/go/gcp/compute/regionPerInstanceConfig.go +++ b/sdk/go/gcp/compute/regionPerInstanceConfig.go @@ -45,7 +45,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewInstanceTemplate(ctx, "igm-basic", &compute.InstanceTemplateArgs{ +// igm_basic, err := compute.NewInstanceTemplate(ctx, "igm-basic", &compute.InstanceTemplateArgs{ // Name: pulumi.String("my-template"), // MachineType: pulumi.String("e2-medium"), // CanIpForward: pulumi.Bool(false), @@ -97,7 +97,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewDisk(ctx, "default", &compute.DiskArgs{ +// _default, err := compute.NewDisk(ctx, "default", &compute.DiskArgs{ // Name: pulumi.String("my-disk-name"), // Type: pulumi.String("pd-ssd"), // Zone: pulumi.String("us-central1-a"), diff --git a/sdk/go/gcp/compute/regionSecurityPolicyRule.go b/sdk/go/gcp/compute/regionSecurityPolicyRule.go index eca855d479..e4963005e6 100644 --- a/sdk/go/gcp/compute/regionSecurityPolicyRule.go +++ b/sdk/go/gcp/compute/regionSecurityPolicyRule.go @@ -28,7 +28,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewRegionSecurityPolicy(ctx, "default", &compute.RegionSecurityPolicyArgs{ +// _default, err := compute.NewRegionSecurityPolicy(ctx, "default", &compute.RegionSecurityPolicyArgs{ // Region: pulumi.String("us-west2"), // Name: pulumi.String("policyruletest"), // Description: pulumi.String("basic region security policy"), @@ -75,7 +75,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewRegionSecurityPolicy(ctx, "default", &compute.RegionSecurityPolicyArgs{ +// _default, err := compute.NewRegionSecurityPolicy(ctx, "default", &compute.RegionSecurityPolicyArgs{ // Region: pulumi.String("us-west2"), // Name: pulumi.String("policywithmultiplerules"), // Description: pulumi.String("basic region security policy"), @@ -142,7 +142,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewRegionSecurityPolicy(ctx, "default", &compute.RegionSecurityPolicyArgs{ +// _default, err := compute.NewRegionSecurityPolicy(ctx, "default", &compute.RegionSecurityPolicyArgs{ // Region: pulumi.String("us-west2"), // Name: pulumi.String("policywithdefaultrule"), // Description: pulumi.String("basic region security policy"), @@ -207,7 +207,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewRegionSecurityPolicy(ctx, "default", &compute.RegionSecurityPolicyArgs{ +// _default, err := compute.NewRegionSecurityPolicy(ctx, "default", &compute.RegionSecurityPolicyArgs{ // Region: pulumi.String("asia-southeast1"), // Name: pulumi.String("policyruletest"), // Description: pulumi.String("basic region security policy"), diff --git a/sdk/go/gcp/compute/regionUrlMap.go b/sdk/go/gcp/compute/regionUrlMap.go index a19b94763c..60c0c8da13 100644 --- a/sdk/go/gcp/compute/regionUrlMap.go +++ b/sdk/go/gcp/compute/regionUrlMap.go @@ -30,7 +30,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ +// _default, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ // Region: pulumi.String("us-central1"), // Name: pulumi.String("health-check"), // CheckIntervalSec: pulumi.Int(1), @@ -128,7 +128,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ +// _default, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ // Region: pulumi.String("us-central1"), // Name: pulumi.String("health-check"), // CheckIntervalSec: pulumi.Int(1), @@ -344,7 +344,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ +// _default, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ // Name: pulumi.String("health-check"), // HttpHealthCheck: &compute.RegionHealthCheckHttpHealthCheckArgs{ // Port: pulumi.Int(80), @@ -499,7 +499,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ +// _default, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ // Name: pulumi.String("health-check"), // HttpHealthCheck: &compute.RegionHealthCheckHttpHealthCheckArgs{ // Port: pulumi.Int(80), @@ -608,7 +608,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ +// _default, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ // Name: pulumi.String("health-check"), // HttpHealthCheck: &compute.RegionHealthCheckHttpHealthCheckArgs{ // Port: pulumi.Int(80), @@ -739,7 +739,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ +// _default, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ // Name: pulumi.String("health-check"), // HttpHealthCheck: &compute.RegionHealthCheckHttpHealthCheckArgs{ // Port: pulumi.Int(80), @@ -835,7 +835,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ +// _default, err := compute.NewRegionHealthCheck(ctx, "default", &compute.RegionHealthCheckArgs{ // Region: pulumi.String("us-central1"), // Name: pulumi.String("health-check"), // CheckIntervalSec: pulumi.Int(1), @@ -848,7 +848,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewRegionBackendService(ctx, "home-backend", &compute.RegionBackendServiceArgs{ +// home_backend, err := compute.NewRegionBackendService(ctx, "home-backend", &compute.RegionBackendServiceArgs{ // Region: pulumi.String("us-central1"), // Name: pulumi.String("home-service"), // PortName: pulumi.String("http"), @@ -860,7 +860,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewRegionBackendService(ctx, "cart-backend", &compute.RegionBackendServiceArgs{ +// cart_backend, err := compute.NewRegionBackendService(ctx, "cart-backend", &compute.RegionBackendServiceArgs{ // Region: pulumi.String("us-central1"), // Name: pulumi.String("cart-service"), // PortName: pulumi.String("http"), @@ -872,7 +872,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewRegionBackendService(ctx, "user-backend", &compute.RegionBackendServiceArgs{ +// user_backend, err := compute.NewRegionBackendService(ctx, "user-backend", &compute.RegionBackendServiceArgs{ // Region: pulumi.String("us-central1"), // Name: pulumi.String("user-service"), // PortName: pulumi.String("http"), diff --git a/sdk/go/gcp/compute/route.go b/sdk/go/gcp/compute/route.go index 460dab603b..7fbe517409 100644 --- a/sdk/go/gcp/compute/route.go +++ b/sdk/go/gcp/compute/route.go @@ -92,7 +92,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("compute-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -235,7 +235,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewForwardingRule(ctx, "default", &compute.ForwardingRuleArgs{ +// _default, err := compute.NewForwardingRule(ctx, "default", &compute.ForwardingRuleArgs{ // Name: pulumi.String("compute-forwarding-rule"), // Region: pulumi.String("us-central1"), // LoadBalancingScheme: pulumi.String("INTERNAL"), diff --git a/sdk/go/gcp/compute/routerPeer.go b/sdk/go/gcp/compute/routerPeer.go index 22336e5f26..347fce44b0 100644 --- a/sdk/go/gcp/compute/routerPeer.go +++ b/sdk/go/gcp/compute/routerPeer.go @@ -432,7 +432,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewRouterRoutePolicy(ctx, "rp-export", &compute.RouterRoutePolicyArgs{ +// rp_export, err := compute.NewRouterRoutePolicy(ctx, "rp-export", &compute.RouterRoutePolicyArgs{ // Name: pulumi.String("my-router-rp-export"), // Router: router.Name, // Region: router.Region, @@ -458,7 +458,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewRouterRoutePolicy(ctx, "rp-import", &compute.RouterRoutePolicyArgs{ +// rp_import, err := compute.NewRouterRoutePolicy(ctx, "rp-import", &compute.RouterRoutePolicyArgs{ // Name: pulumi.String("my-router-rp-import"), // Router: router.Name, // Region: router.Region, diff --git a/sdk/go/gcp/compute/securityPolicyRule.go b/sdk/go/gcp/compute/securityPolicyRule.go index 5506c2838b..39fcb38efb 100644 --- a/sdk/go/gcp/compute/securityPolicyRule.go +++ b/sdk/go/gcp/compute/securityPolicyRule.go @@ -36,7 +36,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewSecurityPolicy(ctx, "default", &compute.SecurityPolicyArgs{ +// _default, err := compute.NewSecurityPolicy(ctx, "default", &compute.SecurityPolicyArgs{ // Name: pulumi.String("policyruletest"), // Description: pulumi.String("basic global security policy"), // Type: pulumi.String("CLOUD_ARMOR"), @@ -81,7 +81,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewSecurityPolicy(ctx, "default", &compute.SecurityPolicyArgs{ +// _default, err := compute.NewSecurityPolicy(ctx, "default", &compute.SecurityPolicyArgs{ // Name: pulumi.String("policyruletest"), // Description: pulumi.String("basic global security policy"), // Type: pulumi.String("CLOUD_ARMOR"), @@ -143,7 +143,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewSecurityPolicy(ctx, "default", &compute.SecurityPolicyArgs{ +// _default, err := compute.NewSecurityPolicy(ctx, "default", &compute.SecurityPolicyArgs{ // Name: pulumi.String("policywithmultiplerules"), // Description: pulumi.String("basic global security policy"), // Type: pulumi.String("CLOUD_ARMOR"), diff --git a/sdk/go/gcp/compute/subnetwork.go b/sdk/go/gcp/compute/subnetwork.go index cd2feb412d..b4a4870adb 100644 --- a/sdk/go/gcp/compute/subnetwork.go +++ b/sdk/go/gcp/compute/subnetwork.go @@ -58,7 +58,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ +// custom_test, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ // Name: pulumi.String("test-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -99,7 +99,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ +// custom_test, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ // Name: pulumi.String("log-test-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -139,7 +139,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ +// custom_test, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ // Name: pulumi.String("l7lb-test-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -176,7 +176,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ +// custom_test, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ // Name: pulumi.String("ipv6-test-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -213,7 +213,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ +// custom_test, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ // Name: pulumi.String("internal-ipv6-test-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // EnableUlaInternalIpv6: pulumi.Bool(true), @@ -251,7 +251,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ +// custom_test, err := compute.NewNetwork(ctx, "custom-test", &compute.NetworkArgs{ // Name: pulumi.String("subnet-purpose-test-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -287,7 +287,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "net-cidr-overlap", &compute.NetworkArgs{ +// net_cidr_overlap, err := compute.NewNetwork(ctx, "net-cidr-overlap", &compute.NetworkArgs{ // Name: pulumi.String("net-cidr-overlap"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -326,7 +326,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("network-reserved-internal-range"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -379,7 +379,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("network-reserved-secondary-range"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) diff --git a/sdk/go/gcp/compute/targetInstance.go b/sdk/go/gcp/compute/targetInstance.go index 1a7dfccbdf..51f67e3aa9 100644 --- a/sdk/go/gcp/compute/targetInstance.go +++ b/sdk/go/gcp/compute/targetInstance.go @@ -48,7 +48,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewInstance(ctx, "target-vm", &compute.InstanceArgs{ +// target_vm, err := compute.NewInstance(ctx, "target-vm", &compute.InstanceArgs{ // Name: pulumi.String("target-vm"), // MachineType: pulumi.String("e2-medium"), // Zone: pulumi.String("us-central1-a"), @@ -105,7 +105,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewInstance(ctx, "target-vm", &compute.InstanceArgs{ +// target_vmInstance, err := compute.NewInstance(ctx, "target-vm", &compute.InstanceArgs{ // Name: pulumi.String("custom-network-target-vm"), // MachineType: pulumi.String("e2-medium"), // Zone: pulumi.String("us-central1-a"), @@ -150,7 +150,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("custom-default-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // RoutingMode: pulumi.String("REGIONAL"), @@ -177,7 +177,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewInstance(ctx, "target-vm", &compute.InstanceArgs{ +// target_vm, err := compute.NewInstance(ctx, "target-vm", &compute.InstanceArgs{ // NetworkInterfaces: compute.InstanceNetworkInterfaceArray{ // &compute.InstanceNetworkInterfaceArgs{ // AccessConfigs: compute.InstanceNetworkInterfaceAccessConfigArray{ diff --git a/sdk/go/gcp/compute/urlmap.go b/sdk/go/gcp/compute/urlmap.go index 3c515a7771..52fef567e9 100644 --- a/sdk/go/gcp/compute/urlmap.go +++ b/sdk/go/gcp/compute/urlmap.go @@ -37,7 +37,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewHttpHealthCheck(ctx, "default", &compute.HttpHealthCheckArgs{ +// _default, err := compute.NewHttpHealthCheck(ctx, "default", &compute.HttpHealthCheckArgs{ // Name: pulumi.String("health-check"), // RequestPath: pulumi.String("/"), // CheckIntervalSec: pulumi.Int(1), @@ -149,7 +149,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{ +// _default, err := compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{ // Name: pulumi.String("health-check"), // HttpHealthCheck: &compute.HealthCheckHttpHealthCheckArgs{ // Port: pulumi.Int(80), @@ -281,7 +281,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{ +// _default, err := compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{ // Name: pulumi.String("health-check"), // HttpHealthCheck: &compute.HealthCheckHttpHealthCheckArgs{ // Port: pulumi.Int(80), @@ -370,7 +370,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{ +// _default, err := compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{ // Name: pulumi.String("health-check"), // HttpHealthCheck: &compute.HealthCheckHttpHealthCheckArgs{ // Port: pulumi.Int(80), @@ -529,7 +529,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{ +// _default, err := compute.NewHealthCheck(ctx, "default", &compute.HealthCheckArgs{ // Name: pulumi.String("health-check"), // HttpHealthCheck: &compute.HealthCheckHttpHealthCheckArgs{ // Port: pulumi.Int(80), @@ -663,7 +663,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ +// _default, err := compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ // Name: pulumi.String("default"), // PortName: pulumi.String("http"), // Protocol: pulumi.String("HTTP"), @@ -673,7 +673,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "service-a", &compute.BackendServiceArgs{ +// service_a, err := compute.NewBackendService(ctx, "service-a", &compute.BackendServiceArgs{ // Name: pulumi.String("service-a"), // PortName: pulumi.String("http"), // Protocol: pulumi.String("HTTP"), @@ -683,7 +683,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "service-b", &compute.BackendServiceArgs{ +// service_b, err := compute.NewBackendService(ctx, "service-b", &compute.BackendServiceArgs{ // Name: pulumi.String("service-b"), // PortName: pulumi.String("http"), // Protocol: pulumi.String("HTTP"), @@ -777,7 +777,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ +// _default, err := compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ // Name: pulumi.String("default"), // PortName: pulumi.String("http"), // Protocol: pulumi.String("HTTP"), @@ -787,7 +787,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "service-a", &compute.BackendServiceArgs{ +// service_a, err := compute.NewBackendService(ctx, "service-a", &compute.BackendServiceArgs{ // Name: pulumi.String("service-a"), // PortName: pulumi.String("http"), // Protocol: pulumi.String("HTTP"), @@ -797,7 +797,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "service-b", &compute.BackendServiceArgs{ +// service_b, err := compute.NewBackendService(ctx, "service-b", &compute.BackendServiceArgs{ // Name: pulumi.String("service-b"), // PortName: pulumi.String("http"), // Protocol: pulumi.String("HTTP"), @@ -883,7 +883,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewHttpHealthCheck(ctx, "default", &compute.HttpHealthCheckArgs{ +// _default, err := compute.NewHttpHealthCheck(ctx, "default", &compute.HttpHealthCheckArgs{ // Name: pulumi.String("health-check"), // RequestPath: pulumi.String("/"), // CheckIntervalSec: pulumi.Int(1), @@ -892,7 +892,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "cart-backend", &compute.BackendServiceArgs{ +// cart_backend, err := compute.NewBackendService(ctx, "cart-backend", &compute.BackendServiceArgs{ // Name: pulumi.String("cart-service"), // PortName: pulumi.String("http"), // Protocol: pulumi.String("HTTP"), @@ -903,7 +903,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "user-backend", &compute.BackendServiceArgs{ +// user_backend, err := compute.NewBackendService(ctx, "user-backend", &compute.BackendServiceArgs{ // Name: pulumi.String("user-service"), // PortName: pulumi.String("http"), // Protocol: pulumi.String("HTTP"), @@ -996,7 +996,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewHttpHealthCheck(ctx, "default", &compute.HttpHealthCheckArgs{ +// _default, err := compute.NewHttpHealthCheck(ctx, "default", &compute.HttpHealthCheckArgs{ // Name: pulumi.String("health-check"), // RequestPath: pulumi.String("/"), // CheckIntervalSec: pulumi.Int(1), diff --git a/sdk/go/gcp/container/cluster.go b/sdk/go/gcp/container/cluster.go index 68fed05728..cf6fb6be8b 100644 --- a/sdk/go/gcp/container/cluster.go +++ b/sdk/go/gcp/container/cluster.go @@ -42,7 +42,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ +// _default, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ // AccountId: pulumi.String("service-account-id"), // DisplayName: pulumi.String("Service Account"), // }) @@ -100,7 +100,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ +// _default, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ // AccountId: pulumi.String("service-account-id"), // DisplayName: pulumi.String("Service Account"), // }) diff --git a/sdk/go/gcp/container/nodePool.go b/sdk/go/gcp/container/nodePool.go index 4181adc00a..87cf6f5d72 100644 --- a/sdk/go/gcp/container/nodePool.go +++ b/sdk/go/gcp/container/nodePool.go @@ -33,7 +33,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ +// _default, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ // AccountId: pulumi.String("service-account-id"), // DisplayName: pulumi.String("Service Account"), // }) @@ -86,7 +86,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ +// _default, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ // AccountId: pulumi.String("service-account-id"), // DisplayName: pulumi.String("Service Account"), // }) diff --git a/sdk/go/gcp/databasemigrationservice/connectionProfile.go b/sdk/go/gcp/databasemigrationservice/connectionProfile.go index fdbd8053ec..fba33f801b 100644 --- a/sdk/go/gcp/databasemigrationservice/connectionProfile.go +++ b/sdk/go/gcp/databasemigrationservice/connectionProfile.go @@ -278,7 +278,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("vpc-network"), // }) // if err != nil { @@ -473,7 +473,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("destination-alloydb"), // }) // if err != nil { diff --git a/sdk/go/gcp/databasemigrationservice/migrationJob.go b/sdk/go/gcp/databasemigrationservice/migrationJob.go index 57aa9d820c..73be4c5a45 100644 --- a/sdk/go/gcp/databasemigrationservice/migrationJob.go +++ b/sdk/go/gcp/databasemigrationservice/migrationJob.go @@ -129,7 +129,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("destination-csql"), // }) // if err != nil { @@ -376,7 +376,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("destination-alloydb"), // }) // if err != nil { diff --git a/sdk/go/gcp/dataloss/preventionJobTrigger.go b/sdk/go/gcp/dataloss/preventionJobTrigger.go index 6f017d2d08..54f8ba1cd5 100644 --- a/sdk/go/gcp/dataloss/preventionJobTrigger.go +++ b/sdk/go/gcp/dataloss/preventionJobTrigger.go @@ -262,7 +262,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := bigquery.NewDataset(ctx, "default", &bigquery.DatasetArgs{ +// _default, err := bigquery.NewDataset(ctx, "default", &bigquery.DatasetArgs{ // DatasetId: pulumi.String("tf_test"), // FriendlyName: pulumi.String("terraform-test"), // Description: pulumi.String("Description for the dataset created by terraform"), diff --git a/sdk/go/gcp/dataplex/task.go b/sdk/go/gcp/dataplex/task.go index e57443df06..c5a5131fe7 100644 --- a/sdk/go/gcp/dataplex/task.go +++ b/sdk/go/gcp/dataplex/task.go @@ -105,7 +105,7 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // // VPC network -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("tf-test-workstation-cluster_56730"), // AutoCreateSubnetworks: pulumi.Bool(true), // }) @@ -202,7 +202,7 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // // VPC network -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("tf-test-workstation-cluster_34962"), // AutoCreateSubnetworks: pulumi.Bool(true), // }) diff --git a/sdk/go/gcp/dataproc/cluster.go b/sdk/go/gcp/dataproc/cluster.go index 41a38fcdde..5aef1f0d1b 100644 --- a/sdk/go/gcp/dataproc/cluster.go +++ b/sdk/go/gcp/dataproc/cluster.go @@ -65,7 +65,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ +// _default, err := serviceaccount.NewAccount(ctx, "default", &serviceaccount.AccountArgs{ // AccountId: pulumi.String("service-account-id"), // DisplayName: pulumi.String("Service Account"), // }) diff --git a/sdk/go/gcp/datastream/connectionProfile.go b/sdk/go/gcp/datastream/connectionProfile.go index e658add465..6be2c88348 100644 --- a/sdk/go/gcp/datastream/connectionProfile.go +++ b/sdk/go/gcp/datastream/connectionProfile.go @@ -70,7 +70,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("my-network"), // }) // if err != nil { diff --git a/sdk/go/gcp/developerconnect/connection.go b/sdk/go/gcp/developerconnect/connection.go index 40d46e66df..5dcc45d1d6 100644 --- a/sdk/go/gcp/developerconnect/connection.go +++ b/sdk/go/gcp/developerconnect/connection.go @@ -32,13 +32,13 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // // Setup permissions. Only needed once per project -// _, err := projects.NewServiceIdentity(ctx, "devconnect-p4sa", &projects.ServiceIdentityArgs{ +// devconnect_p4sa, err := projects.NewServiceIdentity(ctx, "devconnect-p4sa", &projects.ServiceIdentityArgs{ // Service: pulumi.String("developerconnect.googleapis.com"), // }) // if err != nil { // return err // } -// _, err = projects.NewIAMMember(ctx, "devconnect-secret", &projects.IAMMemberArgs{ +// devconnect_secret, err := projects.NewIAMMember(ctx, "devconnect-secret", &projects.IAMMemberArgs{ // Project: pulumi.String("my-project-name"), // Role: pulumi.String("roles/secretmanager.admin"), // Member: devconnect_p4sa.Member, @@ -46,7 +46,7 @@ import ( // if err != nil { // return err // } -// _, err = developerconnect.NewConnection(ctx, "my-connection", &developerconnect.ConnectionArgs{ +// my_connection, err := developerconnect.NewConnection(ctx, "my-connection", &developerconnect.ConnectionArgs{ // Location: pulumi.String("us-central1"), // ConnectionId: pulumi.String("tf-test-connection-new"), // GithubConfig: &developerconnect.ConnectionGithubConfigArgs{ @@ -78,7 +78,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := developerconnect.NewConnection(ctx, "my-connection", &developerconnect.ConnectionArgs{ +// my_connection, err := developerconnect.NewConnection(ctx, "my-connection", &developerconnect.ConnectionArgs{ // Location: pulumi.String("us-central1"), // ConnectionId: pulumi.String("tf-test-connection-cred"), // GithubConfig: &developerconnect.ConnectionGithubConfigArgs{ @@ -115,7 +115,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "github-token-secret", &secretmanager.SecretArgs{ +// github_token_secret, err := secretmanager.NewSecret(ctx, "github-token-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("github-token-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -130,14 +130,14 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "github-token-secret-version", &secretmanager.SecretVersionArgs{ +// github_token_secret_version, err := secretmanager.NewSecretVersion(ctx, "github-token-secret-version", &secretmanager.SecretVersionArgs{ // Secret: github_token_secret.ID(), // SecretData: pulumi.String(invokeFile.Result), // }) // if err != nil { // return err // } -// _, err = projects.NewServiceIdentity(ctx, "devconnect-p4sa", &projects.ServiceIdentityArgs{ +// devconnect_p4sa, err := projects.NewServiceIdentity(ctx, "devconnect-p4sa", &projects.ServiceIdentityArgs{ // Service: pulumi.String("developerconnect.googleapis.com"), // }) // if err != nil { @@ -230,7 +230,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "github-token-secret", &secretmanager.SecretArgs{ +// github_token_secret, err := secretmanager.NewSecret(ctx, "github-token-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("github-token-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -245,7 +245,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "github-token-secret-version", &secretmanager.SecretVersionArgs{ +// github_token_secret_version, err := secretmanager.NewSecretVersion(ctx, "github-token-secret-version", &secretmanager.SecretVersionArgs{ // Secret: github_token_secret.ID(), // SecretData: pulumi.String(invokeFile.Result), // }) @@ -341,7 +341,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "private-key-secret", &secretmanager.SecretArgs{ +// private_key_secret, err := secretmanager.NewSecret(ctx, "private-key-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("ghe-pk-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -356,14 +356,14 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "private-key-secret-version", &secretmanager.SecretVersionArgs{ +// private_key_secret_version, err := secretmanager.NewSecretVersion(ctx, "private-key-secret-version", &secretmanager.SecretVersionArgs{ // Secret: private_key_secret.ID(), // SecretData: pulumi.String(invokeFile.Result), // }) // if err != nil { // return err // } -// _, err = secretmanager.NewSecret(ctx, "webhook-secret-secret", &secretmanager.SecretArgs{ +// webhook_secret_secret, err := secretmanager.NewSecret(ctx, "webhook-secret-secret", &secretmanager.SecretArgs{ // SecretId: pulumi.String("ghe-token-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -372,7 +372,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "webhook-secret-secret-version", &secretmanager.SecretVersionArgs{ +// webhook_secret_secret_version, err := secretmanager.NewSecretVersion(ctx, "webhook-secret-secret-version", &secretmanager.SecretVersionArgs{ // Secret: webhook_secret_secret.ID(), // SecretData: pulumi.String(""), // }) @@ -392,14 +392,14 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretIamPolicy(ctx, "policy-pk", &secretmanager.SecretIamPolicyArgs{ +// policy_pk, err := secretmanager.NewSecretIamPolicy(ctx, "policy-pk", &secretmanager.SecretIamPolicyArgs{ // SecretId: private_key_secret.SecretId, // PolicyData: pulumi.String(p4sa_secretAccessor.PolicyData), // }) // if err != nil { // return err // } -// _, err = secretmanager.NewSecretIamPolicy(ctx, "policy-whs", &secretmanager.SecretIamPolicyArgs{ +// policy_whs, err := secretmanager.NewSecretIamPolicy(ctx, "policy-whs", &secretmanager.SecretIamPolicyArgs{ // SecretId: webhook_secret_secret.SecretId, // PolicyData: pulumi.String(p4sa_secretAccessor.PolicyData), // }) diff --git a/sdk/go/gcp/dns/managedZone.go b/sdk/go/gcp/dns/managedZone.go index 5fcffcbd2f..02d3a1783a 100644 --- a/sdk/go/gcp/dns/managedZone.go +++ b/sdk/go/gcp/dns/managedZone.go @@ -69,14 +69,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "network-1", &compute.NetworkArgs{ +// network_1, err := compute.NewNetwork(ctx, "network-1", &compute.NetworkArgs{ // Name: pulumi.String("network-1"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "network-2", &compute.NetworkArgs{ +// network_2, err := compute.NewNetwork(ctx, "network-2", &compute.NetworkArgs{ // Name: pulumi.String("network-2"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -125,14 +125,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "network-1", &compute.NetworkArgs{ +// network_1, err := compute.NewNetwork(ctx, "network-1", &compute.NetworkArgs{ // Name: pulumi.String("network-1"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "network-2", &compute.NetworkArgs{ +// network_2, err := compute.NewNetwork(ctx, "network-2", &compute.NetworkArgs{ // Name: pulumi.String("network-2"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -192,14 +192,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "network-1", &compute.NetworkArgs{ +// network_1, err := compute.NewNetwork(ctx, "network-1", &compute.NetworkArgs{ // Name: pulumi.String("network-1"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) // if err != nil { // return err // } -// _, err = compute.NewSubnetwork(ctx, "subnetwork-1", &compute.SubnetworkArgs{ +// subnetwork_1, err := compute.NewSubnetwork(ctx, "subnetwork-1", &compute.SubnetworkArgs{ // Name: network_1.Name, // Network: network_1.Name, // IpCidrRange: pulumi.String("10.0.36.0/24"), @@ -219,7 +219,7 @@ import ( // if err != nil { // return err // } -// _, err = container.NewCluster(ctx, "cluster-1", &container.ClusterArgs{ +// cluster_1, err := container.NewCluster(ctx, "cluster-1", &container.ClusterArgs{ // Name: pulumi.String("cluster-1"), // Location: pulumi.String("us-central1-c"), // InitialNodeCount: pulumi.Int(1), @@ -290,14 +290,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "network-source", &compute.NetworkArgs{ +// network_source, err := compute.NewNetwork(ctx, "network-source", &compute.NetworkArgs{ // Name: pulumi.String("network-source"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "network-target", &compute.NetworkArgs{ +// network_target, err := compute.NewNetwork(ctx, "network-target", &compute.NetworkArgs{ // Name: pulumi.String("network-target"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) diff --git a/sdk/go/gcp/dns/policy.go b/sdk/go/gcp/dns/policy.go index 3f4584ebb5..7630c18d13 100644 --- a/sdk/go/gcp/dns/policy.go +++ b/sdk/go/gcp/dns/policy.go @@ -37,14 +37,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "network-1", &compute.NetworkArgs{ +// network_1, err := compute.NewNetwork(ctx, "network-1", &compute.NetworkArgs{ // Name: pulumi.String("network-1"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "network-2", &compute.NetworkArgs{ +// network_2, err := compute.NewNetwork(ctx, "network-2", &compute.NetworkArgs{ // Name: pulumi.String("network-2"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) diff --git a/sdk/go/gcp/dns/recordSet.go b/sdk/go/gcp/dns/recordSet.go index 44c67c3151..6550efc83f 100644 --- a/sdk/go/gcp/dns/recordSet.go +++ b/sdk/go/gcp/dns/recordSet.go @@ -420,7 +420,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewHealthCheck(ctx, "http-health-check", &compute.HealthCheckArgs{ +// http_health_check, err := compute.NewHealthCheck(ctx, "http-health-check", &compute.HealthCheckArgs{ // Name: pulumi.String("http-health-check"), // Description: pulumi.String("Health check via http"), // TimeoutSec: pulumi.Int(5), diff --git a/sdk/go/gcp/dns/responsePolicy.go b/sdk/go/gcp/dns/responsePolicy.go index 036c82346e..d04a356908 100644 --- a/sdk/go/gcp/dns/responsePolicy.go +++ b/sdk/go/gcp/dns/responsePolicy.go @@ -33,21 +33,21 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "network-1", &compute.NetworkArgs{ +// network_1, err := compute.NewNetwork(ctx, "network-1", &compute.NetworkArgs{ // Name: pulumi.String("network-1"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "network-2", &compute.NetworkArgs{ +// network_2, err := compute.NewNetwork(ctx, "network-2", &compute.NetworkArgs{ // Name: pulumi.String("network-2"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) // if err != nil { // return err // } -// _, err = compute.NewSubnetwork(ctx, "subnetwork-1", &compute.SubnetworkArgs{ +// subnetwork_1, err := compute.NewSubnetwork(ctx, "subnetwork-1", &compute.SubnetworkArgs{ // Name: network_1.Name, // Network: network_1.Name, // IpCidrRange: pulumi.String("10.0.36.0/24"), @@ -67,7 +67,7 @@ import ( // if err != nil { // return err // } -// _, err = container.NewCluster(ctx, "cluster-1", &container.ClusterArgs{ +// cluster_1, err := container.NewCluster(ctx, "cluster-1", &container.ClusterArgs{ // Name: pulumi.String("cluster-1"), // Location: pulumi.String("us-central1-c"), // InitialNodeCount: pulumi.Int(1), diff --git a/sdk/go/gcp/dns/responsePolicyRule.go b/sdk/go/gcp/dns/responsePolicyRule.go index 1d12fcfdab..fe3ee25741 100644 --- a/sdk/go/gcp/dns/responsePolicyRule.go +++ b/sdk/go/gcp/dns/responsePolicyRule.go @@ -34,21 +34,21 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "network-1", &compute.NetworkArgs{ +// network_1, err := compute.NewNetwork(ctx, "network-1", &compute.NetworkArgs{ // Name: pulumi.String("network-1"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "network-2", &compute.NetworkArgs{ +// network_2, err := compute.NewNetwork(ctx, "network-2", &compute.NetworkArgs{ // Name: pulumi.String("network-2"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) // if err != nil { // return err // } -// _, err = dns.NewResponsePolicy(ctx, "response-policy", &dns.ResponsePolicyArgs{ +// response_policy, err := dns.NewResponsePolicy(ctx, "response-policy", &dns.ResponsePolicyArgs{ // ResponsePolicyName: pulumi.String("example-response-policy"), // Networks: dns.ResponsePolicyNetworkArray{ // &dns.ResponsePolicyNetworkArgs{ diff --git a/sdk/go/gcp/eventarc/trigger.go b/sdk/go/gcp/eventarc/trigger.go index 04d0a7708c..a28e1cdb55 100644 --- a/sdk/go/gcp/eventarc/trigger.go +++ b/sdk/go/gcp/eventarc/trigger.go @@ -31,7 +31,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := cloudrun.NewService(ctx, "default", &cloudrun.ServiceArgs{ +// _default, err := cloudrun.NewService(ctx, "default", &cloudrun.ServiceArgs{ // Name: pulumi.String("eventarc-service"), // Location: pulumi.String("europe-west1"), // Metadata: &cloudrun.ServiceMetadataArgs{ diff --git a/sdk/go/gcp/firebase/appCheckAppAttestConfig.go b/sdk/go/gcp/firebase/appCheckAppAttestConfig.go index 3e68af5004..82ae7ee334 100644 --- a/sdk/go/gcp/firebase/appCheckAppAttestConfig.go +++ b/sdk/go/gcp/firebase/appCheckAppAttestConfig.go @@ -38,7 +38,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewAppleApp(ctx, "default", &firebase.AppleAppArgs{ +// _default, err := firebase.NewAppleApp(ctx, "default", &firebase.AppleAppArgs{ // Project: pulumi.String("my-project-name"), // DisplayName: pulumi.String("Apple app"), // BundleId: pulumi.String("bundle.id.appattest"), @@ -86,7 +86,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewAppleApp(ctx, "default", &firebase.AppleAppArgs{ +// _default, err := firebase.NewAppleApp(ctx, "default", &firebase.AppleAppArgs{ // Project: pulumi.String("my-project-name"), // DisplayName: pulumi.String("Apple app"), // BundleId: pulumi.String("bundle.id.appattest"), diff --git a/sdk/go/gcp/firebase/appCheckDebugToken.go b/sdk/go/gcp/firebase/appCheckDebugToken.go index 34322ce885..d5ade78fa9 100644 --- a/sdk/go/gcp/firebase/appCheckDebugToken.go +++ b/sdk/go/gcp/firebase/appCheckDebugToken.go @@ -40,7 +40,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewWebApp(ctx, "default", &firebase.WebAppArgs{ +// _default, err := firebase.NewWebApp(ctx, "default", &firebase.WebAppArgs{ // Project: pulumi.String("my-project-name"), // DisplayName: pulumi.String("Web App for debug token"), // }) diff --git a/sdk/go/gcp/firebase/appCheckDeviceCheckConfig.go b/sdk/go/gcp/firebase/appCheckDeviceCheckConfig.go index 18dc1a405b..0b06390d05 100644 --- a/sdk/go/gcp/firebase/appCheckDeviceCheckConfig.go +++ b/sdk/go/gcp/firebase/appCheckDeviceCheckConfig.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewAppleApp(ctx, "default", &firebase.AppleAppArgs{ +// _default, err := firebase.NewAppleApp(ctx, "default", &firebase.AppleAppArgs{ // Project: pulumi.String("my-project-name"), // DisplayName: pulumi.String("Apple app"), // BundleId: pulumi.String("bundle.id.devicecheck"), diff --git a/sdk/go/gcp/firebase/appCheckPlayIntegrityConfig.go b/sdk/go/gcp/firebase/appCheckPlayIntegrityConfig.go index 80ff6a49ae..a5d021ca51 100644 --- a/sdk/go/gcp/firebase/appCheckPlayIntegrityConfig.go +++ b/sdk/go/gcp/firebase/appCheckPlayIntegrityConfig.go @@ -48,7 +48,7 @@ import ( // if err != nil { // return err // } -// _, err = firebase.NewAndroidApp(ctx, "default", &firebase.AndroidAppArgs{ +// _default, err := firebase.NewAndroidApp(ctx, "default", &firebase.AndroidAppArgs{ // Project: pulumi.String("my-project-name"), // DisplayName: pulumi.String("Play Integrity app"), // PackageName: pulumi.String("package.name.playintegrity"), @@ -111,7 +111,7 @@ import ( // if err != nil { // return err // } -// _, err = firebase.NewAndroidApp(ctx, "default", &firebase.AndroidAppArgs{ +// _default, err := firebase.NewAndroidApp(ctx, "default", &firebase.AndroidAppArgs{ // Project: pulumi.String("my-project-name"), // DisplayName: pulumi.String("Play Integrity app"), // PackageName: pulumi.String("package.name.playintegrity"), diff --git a/sdk/go/gcp/firebase/appCheckRecaptchaEnterpriseConfig.go b/sdk/go/gcp/firebase/appCheckRecaptchaEnterpriseConfig.go index 601d1e4e79..572c121130 100644 --- a/sdk/go/gcp/firebase/appCheckRecaptchaEnterpriseConfig.go +++ b/sdk/go/gcp/firebase/appCheckRecaptchaEnterpriseConfig.go @@ -47,7 +47,7 @@ import ( // if err != nil { // return err // } -// _, err = firebase.NewWebApp(ctx, "default", &firebase.WebAppArgs{ +// _default, err := firebase.NewWebApp(ctx, "default", &firebase.WebAppArgs{ // Project: pulumi.String("my-project-name"), // DisplayName: pulumi.String("Web App for reCAPTCHA Enterprise"), // }) diff --git a/sdk/go/gcp/firebase/appCheckRecaptchaV3Config.go b/sdk/go/gcp/firebase/appCheckRecaptchaV3Config.go index 4b5f7d2e5b..b92b38cf53 100644 --- a/sdk/go/gcp/firebase/appCheckRecaptchaV3Config.go +++ b/sdk/go/gcp/firebase/appCheckRecaptchaV3Config.go @@ -37,7 +37,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewWebApp(ctx, "default", &firebase.WebAppArgs{ +// _default, err := firebase.NewWebApp(ctx, "default", &firebase.WebAppArgs{ // Project: pulumi.String("my-project-name"), // DisplayName: pulumi.String("Web App for reCAPTCHA V3"), // }) diff --git a/sdk/go/gcp/firebase/databaseInstance.go b/sdk/go/gcp/firebase/databaseInstance.go index 3e4a591fa1..98b1b155a3 100644 --- a/sdk/go/gcp/firebase/databaseInstance.go +++ b/sdk/go/gcp/firebase/databaseInstance.go @@ -87,7 +87,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.NewProject(ctx, "default", &organizations.ProjectArgs{ +// _default, err := organizations.NewProject(ctx, "default", &organizations.ProjectArgs{ // ProjectId: pulumi.String("rtdb-project"), // Name: pulumi.String("rtdb-project"), // OrgId: pulumi.String("123456789"), diff --git a/sdk/go/gcp/firebase/hostingChannel.go b/sdk/go/gcp/firebase/hostingChannel.go index 7e311a0f48..47ade338ab 100644 --- a/sdk/go/gcp/firebase/hostingChannel.go +++ b/sdk/go/gcp/firebase/hostingChannel.go @@ -28,7 +28,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-with-channel"), // }) @@ -61,7 +61,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-with-channel"), // }) diff --git a/sdk/go/gcp/firebase/hostingCustomDomain.go b/sdk/go/gcp/firebase/hostingCustomDomain.go index aef56f6443..c3f46e9c23 100644 --- a/sdk/go/gcp/firebase/hostingCustomDomain.go +++ b/sdk/go/gcp/firebase/hostingCustomDomain.go @@ -55,7 +55,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-id-full"), // }) @@ -93,7 +93,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-id"), // }) diff --git a/sdk/go/gcp/firebase/hostingRelease.go b/sdk/go/gcp/firebase/hostingRelease.go index b209b80844..9ec11fd0f1 100644 --- a/sdk/go/gcp/firebase/hostingRelease.go +++ b/sdk/go/gcp/firebase/hostingRelease.go @@ -28,7 +28,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-id"), // }) @@ -77,7 +77,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-with-channel"), // }) @@ -134,7 +134,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-id"), // }) diff --git a/sdk/go/gcp/firebase/hostingSite.go b/sdk/go/gcp/firebase/hostingSite.go index 5484ae87a8..13bcc8874d 100644 --- a/sdk/go/gcp/firebase/hostingSite.go +++ b/sdk/go/gcp/firebase/hostingSite.go @@ -53,7 +53,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewWebApp(ctx, "default", &firebase.WebAppArgs{ +// _default, err := firebase.NewWebApp(ctx, "default", &firebase.WebAppArgs{ // Project: pulumi.String("my-project-name"), // DisplayName: pulumi.String("Test web app for Firebase Hosting"), // }) diff --git a/sdk/go/gcp/firebase/hostingVersion.go b/sdk/go/gcp/firebase/hostingVersion.go index 77d82784b7..1082a99f57 100644 --- a/sdk/go/gcp/firebase/hostingVersion.go +++ b/sdk/go/gcp/firebase/hostingVersion.go @@ -28,7 +28,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-id"), // }) @@ -77,7 +77,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-id"), // }) @@ -127,7 +127,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-id"), // }) @@ -177,7 +177,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-id"), // }) @@ -226,7 +226,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-id"), // }) @@ -296,7 +296,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ +// _default, err := firebase.NewHostingSite(ctx, "default", &firebase.HostingSiteArgs{ // Project: pulumi.String("my-project-name"), // SiteId: pulumi.String("site-id"), // }) diff --git a/sdk/go/gcp/firebase/project.go b/sdk/go/gcp/firebase/project.go index f5be674c5c..a16e6a1a38 100644 --- a/sdk/go/gcp/firebase/project.go +++ b/sdk/go/gcp/firebase/project.go @@ -43,7 +43,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.NewProject(ctx, "default", &organizations.ProjectArgs{ +// _default, err := organizations.NewProject(ctx, "default", &organizations.ProjectArgs{ // ProjectId: pulumi.String("my-project"), // Name: pulumi.String("my-project"), // OrgId: pulumi.String("123456789"), diff --git a/sdk/go/gcp/firebase/storageBucket.go b/sdk/go/gcp/firebase/storageBucket.go index 2e24217576..e2662aaf48 100644 --- a/sdk/go/gcp/firebase/storageBucket.go +++ b/sdk/go/gcp/firebase/storageBucket.go @@ -28,7 +28,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "default", &storage.BucketArgs{ +// _default, err := storage.NewBucket(ctx, "default", &storage.BucketArgs{ // Name: pulumi.String("test_bucket"), // Location: pulumi.String("US"), // UniformBucketLevelAccess: pulumi.Bool(true), diff --git a/sdk/go/gcp/gkeonprem/bareMetalNodePool.go b/sdk/go/gcp/gkeonprem/bareMetalNodePool.go index 52415ef905..b3c559e2e6 100644 --- a/sdk/go/gcp/gkeonprem/bareMetalNodePool.go +++ b/sdk/go/gcp/gkeonprem/bareMetalNodePool.go @@ -30,7 +30,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := gkeonprem.NewBareMetalCluster(ctx, "default-basic", &gkeonprem.BareMetalClusterArgs{ +// default_basic, err := gkeonprem.NewBareMetalCluster(ctx, "default-basic", &gkeonprem.BareMetalClusterArgs{ // Name: pulumi.String("my-cluster"), // Location: pulumi.String("us-west1"), // AdminClusterMembership: pulumi.String("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test"), @@ -147,7 +147,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := gkeonprem.NewBareMetalCluster(ctx, "default-full", &gkeonprem.BareMetalClusterArgs{ +// default_full, err := gkeonprem.NewBareMetalCluster(ctx, "default-full", &gkeonprem.BareMetalClusterArgs{ // Name: pulumi.String("my-cluster"), // Location: pulumi.String("us-west1"), // AdminClusterMembership: pulumi.String("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test"), diff --git a/sdk/go/gcp/gkeonprem/vmwareNodePool.go b/sdk/go/gcp/gkeonprem/vmwareNodePool.go index 2c4e99b8d1..f8f7827c91 100644 --- a/sdk/go/gcp/gkeonprem/vmwareNodePool.go +++ b/sdk/go/gcp/gkeonprem/vmwareNodePool.go @@ -30,7 +30,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := gkeonprem.NewVMwareCluster(ctx, "default-basic", &gkeonprem.VMwareClusterArgs{ +// default_basic, err := gkeonprem.NewVMwareCluster(ctx, "default-basic", &gkeonprem.VMwareClusterArgs{ // Name: pulumi.String("my-cluster"), // Location: pulumi.String("us-west1"), // AdminClusterMembership: pulumi.String("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test"), @@ -112,7 +112,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := gkeonprem.NewVMwareCluster(ctx, "default-full", &gkeonprem.VMwareClusterArgs{ +// default_full, err := gkeonprem.NewVMwareCluster(ctx, "default-full", &gkeonprem.VMwareClusterArgs{ // Name: pulumi.String("my-cluster"), // Location: pulumi.String("us-west1"), // AdminClusterMembership: pulumi.String("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test"), diff --git a/sdk/go/gcp/healthcare/consentStore.go b/sdk/go/gcp/healthcare/consentStore.go index da8abbcec2..55817c5f3c 100644 --- a/sdk/go/gcp/healthcare/consentStore.go +++ b/sdk/go/gcp/healthcare/consentStore.go @@ -117,14 +117,14 @@ import ( // if err != nil { // return err // } -// _, err = healthcare.NewConsentStore(ctx, "my-consent", &healthcare.ConsentStoreArgs{ +// my_consent, err := healthcare.NewConsentStore(ctx, "my-consent", &healthcare.ConsentStoreArgs{ // Dataset: dataset.ID(), // Name: pulumi.String("my-consent-store"), // }) // if err != nil { // return err // } -// _, err = serviceaccount.NewAccount(ctx, "test-account", &serviceaccount.AccountArgs{ +// test_account, err := serviceaccount.NewAccount(ctx, "test-account", &serviceaccount.AccountArgs{ // AccountId: pulumi.String("my-account"), // DisplayName: pulumi.String("Test Service Account"), // }) diff --git a/sdk/go/gcp/iam/accessBoundaryPolicy.go b/sdk/go/gcp/iam/accessBoundaryPolicy.go index 69ae3d775b..0ca77ed90e 100644 --- a/sdk/go/gcp/iam/accessBoundaryPolicy.go +++ b/sdk/go/gcp/iam/accessBoundaryPolicy.go @@ -47,7 +47,7 @@ import ( // if err != nil { // return err // } -// _, err = accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ +// access_policy, err := accesscontextmanager.NewAccessPolicy(ctx, "access-policy", &accesscontextmanager.AccessPolicyArgs{ // Parent: project.OrgId.ApplyT(func(orgId *string) (string, error) { // return fmt.Sprintf("organizations/%v", orgId), nil // }).(pulumi.StringOutput), @@ -56,7 +56,7 @@ import ( // if err != nil { // return err // } -// _, err = accesscontextmanager.NewAccessLevel(ctx, "test-access", &accesscontextmanager.AccessLevelArgs{ +// test_access, err := accesscontextmanager.NewAccessLevel(ctx, "test-access", &accesscontextmanager.AccessLevelArgs{ // Parent: access_policy.Name.ApplyT(func(name string) (string, error) { // return fmt.Sprintf("accessPolicies/%v", name), nil // }).(pulumi.StringOutput), diff --git a/sdk/go/gcp/iam/denyPolicy.go b/sdk/go/gcp/iam/denyPolicy.go index ee92042c8c..35a6c77284 100644 --- a/sdk/go/gcp/iam/denyPolicy.go +++ b/sdk/go/gcp/iam/denyPolicy.go @@ -51,7 +51,7 @@ import ( // if err != nil { // return err // } -// _, err = serviceaccount.NewAccount(ctx, "test-account", &serviceaccount.AccountArgs{ +// test_account, err := serviceaccount.NewAccount(ctx, "test-account", &serviceaccount.AccountArgs{ // AccountId: pulumi.String("svc-acc"), // DisplayName: pulumi.String("Test Service Account"), // Project: project.ProjectId, diff --git a/sdk/go/gcp/iap/settings.go b/sdk/go/gcp/iap/settings.go index 89c15b0b08..b3487f38ea 100644 --- a/sdk/go/gcp/iap/settings.go +++ b/sdk/go/gcp/iap/settings.go @@ -54,7 +54,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewRegionBackendService(ctx, "default", &compute.RegionBackendServiceArgs{ +// _default, err := compute.NewRegionBackendService(ctx, "default", &compute.RegionBackendServiceArgs{ // Name: pulumi.String("iap-settings-tf"), // Region: pulumi.String("us-central1"), // HealthChecks: defaultHealthCheck.ID(), diff --git a/sdk/go/gcp/identityplatform/config.go b/sdk/go/gcp/identityplatform/config.go index 2fe5726ad1..6e76bd9050 100644 --- a/sdk/go/gcp/identityplatform/config.go +++ b/sdk/go/gcp/identityplatform/config.go @@ -43,7 +43,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.NewProject(ctx, "default", &organizations.ProjectArgs{ +// _default, err := organizations.NewProject(ctx, "default", &organizations.ProjectArgs{ // ProjectId: pulumi.String("my-project"), // Name: pulumi.String("my-project"), // OrgId: pulumi.String("123456789"), diff --git a/sdk/go/gcp/integrationconnectors/connection.go b/sdk/go/gcp/integrationconnectors/connection.go index aab8897273..183461436e 100644 --- a/sdk/go/gcp/integrationconnectors/connection.go +++ b/sdk/go/gcp/integrationconnectors/connection.go @@ -89,7 +89,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ +// secret_basic, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ // SecretId: pulumi.String("test-secret"), // Replication: &secretmanager.SecretReplicationArgs{ // UserManaged: &secretmanager.SecretReplicationUserManagedArgs{ @@ -104,7 +104,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "secret-version-basic", &secretmanager.SecretVersionArgs{ +// secret_version_basic, err := secretmanager.NewSecretVersion(ctx, "secret-version-basic", &secretmanager.SecretVersionArgs{ // Secret: secret_basic.ID(), // SecretData: pulumi.String("dummypassword"), // }) diff --git a/sdk/go/gcp/kms/autokeyConfig.go b/sdk/go/gcp/kms/autokeyConfig.go index 32c95d23fd..d5da7b1a7e 100644 --- a/sdk/go/gcp/kms/autokeyConfig.go +++ b/sdk/go/gcp/kms/autokeyConfig.go @@ -117,7 +117,7 @@ import ( // if err != nil { // return err // } -// _, err = kms.NewAutokeyConfig(ctx, "example-autokeyconfig", &kms.AutokeyConfigArgs{ +// example_autokeyconfig, err := kms.NewAutokeyConfig(ctx, "example-autokeyconfig", &kms.AutokeyConfigArgs{ // Folder: autokmsFolder.ID(), // KeyProject: keyProject.ProjectId.ApplyT(func(projectId string) (string, error) { // return fmt.Sprintf("projects/%v", projectId), nil diff --git a/sdk/go/gcp/logging/billingAccountSink.go b/sdk/go/gcp/logging/billingAccountSink.go index 0a4a97410d..dbed67d1e7 100644 --- a/sdk/go/gcp/logging/billingAccountSink.go +++ b/sdk/go/gcp/logging/billingAccountSink.go @@ -39,14 +39,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "log-bucket", &storage.BucketArgs{ +// log_bucket, err := storage.NewBucket(ctx, "log-bucket", &storage.BucketArgs{ // Name: pulumi.String("billing-logging-bucket"), // Location: pulumi.String("US"), // }) // if err != nil { // return err // } -// _, err = logging.NewBillingAccountSink(ctx, "my-sink", &logging.BillingAccountSinkArgs{ +// my_sink, err := logging.NewBillingAccountSink(ctx, "my-sink", &logging.BillingAccountSinkArgs{ // Name: pulumi.String("my-sink"), // Description: pulumi.String("some explanation on what this is"), // BillingAccount: pulumi.String("ABCDEF-012345-GHIJKL"), diff --git a/sdk/go/gcp/logging/folderBucketConfig.go b/sdk/go/gcp/logging/folderBucketConfig.go index 9b56812ef7..165aebe98f 100644 --- a/sdk/go/gcp/logging/folderBucketConfig.go +++ b/sdk/go/gcp/logging/folderBucketConfig.go @@ -33,7 +33,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.NewFolder(ctx, "default", &organizations.FolderArgs{ +// _default, err := organizations.NewFolder(ctx, "default", &organizations.FolderArgs{ // DisplayName: pulumi.String("some-folder-name"), // Parent: pulumi.String("organizations/123456789"), // }) diff --git a/sdk/go/gcp/logging/folderExclusion.go b/sdk/go/gcp/logging/folderExclusion.go index 3edcd39a7b..3e41e0b2d5 100644 --- a/sdk/go/gcp/logging/folderExclusion.go +++ b/sdk/go/gcp/logging/folderExclusion.go @@ -35,7 +35,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.NewFolder(ctx, "my-folder", &organizations.FolderArgs{ +// my_folder, err := organizations.NewFolder(ctx, "my-folder", &organizations.FolderArgs{ // DisplayName: pulumi.String("My folder"), // Parent: pulumi.String("organizations/123456"), // }) diff --git a/sdk/go/gcp/logging/folderSink.go b/sdk/go/gcp/logging/folderSink.go index 313cd2a6eb..f74c9446aa 100644 --- a/sdk/go/gcp/logging/folderSink.go +++ b/sdk/go/gcp/logging/folderSink.go @@ -36,21 +36,21 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "log-bucket", &storage.BucketArgs{ +// log_bucket, err := storage.NewBucket(ctx, "log-bucket", &storage.BucketArgs{ // Name: pulumi.String("folder-logging-bucket"), // Location: pulumi.String("US"), // }) // if err != nil { // return err // } -// _, err = organizations.NewFolder(ctx, "my-folder", &organizations.FolderArgs{ +// my_folder, err := organizations.NewFolder(ctx, "my-folder", &organizations.FolderArgs{ // DisplayName: pulumi.String("My folder"), // Parent: pulumi.String("organizations/123456"), // }) // if err != nil { // return err // } -// _, err = logging.NewFolderSink(ctx, "my-sink", &logging.FolderSinkArgs{ +// my_sink, err := logging.NewFolderSink(ctx, "my-sink", &logging.FolderSinkArgs{ // Name: pulumi.String("my-sink"), // Description: pulumi.String("some explanation on what this is"), // Folder: my_folder.Name, diff --git a/sdk/go/gcp/logging/organizationSink.go b/sdk/go/gcp/logging/organizationSink.go index b4a9506739..d7679cad9f 100644 --- a/sdk/go/gcp/logging/organizationSink.go +++ b/sdk/go/gcp/logging/organizationSink.go @@ -35,14 +35,14 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "log-bucket", &storage.BucketArgs{ +// log_bucket, err := storage.NewBucket(ctx, "log-bucket", &storage.BucketArgs{ // Name: pulumi.String("organization-logging-bucket"), // Location: pulumi.String("US"), // }) // if err != nil { // return err // } -// _, err = logging.NewOrganizationSink(ctx, "my-sink", &logging.OrganizationSinkArgs{ +// my_sink, err := logging.NewOrganizationSink(ctx, "my-sink", &logging.OrganizationSinkArgs{ // Name: pulumi.String("my-sink"), // Description: pulumi.String("some explanation on what this is"), // OrgId: pulumi.String("123456789"), diff --git a/sdk/go/gcp/logging/projectBucketConfig.go b/sdk/go/gcp/logging/projectBucketConfig.go index daa4876547..3d771539c8 100644 --- a/sdk/go/gcp/logging/projectBucketConfig.go +++ b/sdk/go/gcp/logging/projectBucketConfig.go @@ -33,7 +33,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := organizations.NewProject(ctx, "default", &organizations.ProjectArgs{ +// _default, err := organizations.NewProject(ctx, "default", &organizations.ProjectArgs{ // ProjectId: pulumi.String("your-project-id"), // Name: pulumi.String("your-project-id"), // OrgId: pulumi.String("123456789"), diff --git a/sdk/go/gcp/memorystore/instance.go b/sdk/go/gcp/memorystore/instance.go index f435c55622..dae74d79ea 100644 --- a/sdk/go/gcp/memorystore/instance.go +++ b/sdk/go/gcp/memorystore/instance.go @@ -49,7 +49,7 @@ import ( // if err != nil { // return err // } -// _, err = networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ +// _default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ // Name: pulumi.String("my-policy"), // Location: pulumi.String("us-central1"), // ServiceClass: pulumi.String("gcp-memorystore"), @@ -123,7 +123,7 @@ import ( // if err != nil { // return err // } -// _, err = networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ +// _default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ // Name: pulumi.String("my-policy"), // Location: pulumi.String("us-central1"), // ServiceClass: pulumi.String("gcp-memorystore"), @@ -220,7 +220,7 @@ import ( // if err != nil { // return err // } -// _, err = networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ +// _default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ // Name: pulumi.String("my-policy"), // Location: pulumi.String("us-central1"), // ServiceClass: pulumi.String("gcp-memorystore"), diff --git a/sdk/go/gcp/netapp/storagePool.go b/sdk/go/gcp/netapp/storagePool.go index bb91d80a20..100b80a636 100644 --- a/sdk/go/gcp/netapp/storagePool.go +++ b/sdk/go/gcp/netapp/storagePool.go @@ -51,7 +51,7 @@ import ( // } // // Create a Private Service Access connection // // When using shared-VPCs, this resource needs to be created in host project -// _, err = servicenetworking.NewConnection(ctx, "default", &servicenetworking.ConnectionArgs{ +// _default, err := servicenetworking.NewConnection(ctx, "default", &servicenetworking.ConnectionArgs{ // Network: peeringNetwork.ID(), // Service: pulumi.String("netapp.servicenetworking.goog"), // ReservedPeeringRanges: pulumi.StringArray{ diff --git a/sdk/go/gcp/networkconnectivity/spoke.go b/sdk/go/gcp/networkconnectivity/spoke.go index 77d758bf90..c39f44ec99 100644 --- a/sdk/go/gcp/networkconnectivity/spoke.go +++ b/sdk/go/gcp/networkconnectivity/spoke.go @@ -483,7 +483,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewInterconnectAttachment(ctx, "interconnect-attachment", &compute.InterconnectAttachmentArgs{ +// interconnect_attachment, err := compute.NewInterconnectAttachment(ctx, "interconnect-attachment", &compute.InterconnectAttachmentArgs{ // Name: pulumi.String("partner-interconnect1"), // EdgeAvailabilityDomain: pulumi.String("AVAILABILITY_DOMAIN_1"), // Type: pulumi.String("PARTNER"), diff --git a/sdk/go/gcp/networkmanagement/connectivityTest.go b/sdk/go/gcp/networkmanagement/connectivityTest.go index 3a63d525ac..1f42ef99d2 100644 --- a/sdk/go/gcp/networkmanagement/connectivityTest.go +++ b/sdk/go/gcp/networkmanagement/connectivityTest.go @@ -143,7 +143,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewAddress(ctx, "source-addr", &compute.AddressArgs{ +// source_addr, err := compute.NewAddress(ctx, "source-addr", &compute.AddressArgs{ // Name: pulumi.String("src-addr"), // Subnetwork: subnet.ID(), // AddressType: pulumi.String("INTERNAL"), @@ -153,7 +153,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewAddress(ctx, "dest-addr", &compute.AddressArgs{ +// dest_addr, err := compute.NewAddress(ctx, "dest-addr", &compute.AddressArgs{ // Name: pulumi.String("dest-addr"), // Subnetwork: subnet.ID(), // AddressType: pulumi.String("INTERNAL"), diff --git a/sdk/go/gcp/networksecurity/gatewaySecurityPolicy.go b/sdk/go/gcp/networksecurity/gatewaySecurityPolicy.go index 8157e50512..ed9acb05ec 100644 --- a/sdk/go/gcp/networksecurity/gatewaySecurityPolicy.go +++ b/sdk/go/gcp/networksecurity/gatewaySecurityPolicy.go @@ -64,7 +64,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ +// _default, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ // Name: pulumi.String("my-basic-ca-pool"), // Location: pulumi.String("us-central1"), // Tier: pulumi.String("DEVOPS"), diff --git a/sdk/go/gcp/networksecurity/gatewaySecurityPolicyRule.go b/sdk/go/gcp/networksecurity/gatewaySecurityPolicyRule.go index 15f45bf15a..d3bfbd2587 100644 --- a/sdk/go/gcp/networksecurity/gatewaySecurityPolicyRule.go +++ b/sdk/go/gcp/networksecurity/gatewaySecurityPolicyRule.go @@ -35,7 +35,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := networksecurity.NewGatewaySecurityPolicy(ctx, "default", &networksecurity.GatewaySecurityPolicyArgs{ +// _default, err := networksecurity.NewGatewaySecurityPolicy(ctx, "default", &networksecurity.GatewaySecurityPolicyArgs{ // Name: pulumi.String("my-gateway-security-policy"), // Location: pulumi.String("us-central1"), // Description: pulumi.String("gateway security policy created to be used as reference by the rule."), @@ -75,7 +75,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := networksecurity.NewGatewaySecurityPolicy(ctx, "default", &networksecurity.GatewaySecurityPolicyArgs{ +// _default, err := networksecurity.NewGatewaySecurityPolicy(ctx, "default", &networksecurity.GatewaySecurityPolicyArgs{ // Name: pulumi.String("my-gateway-security-policy"), // Location: pulumi.String("us-central1"), // Description: pulumi.String("gateway security policy created to be used as reference by the rule."), diff --git a/sdk/go/gcp/networksecurity/securityProfile.go b/sdk/go/gcp/networksecurity/securityProfile.go index c6ccce304e..a8e4d11c67 100644 --- a/sdk/go/gcp/networksecurity/securityProfile.go +++ b/sdk/go/gcp/networksecurity/securityProfile.go @@ -114,7 +114,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("my-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -169,7 +169,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("my-network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) diff --git a/sdk/go/gcp/networksecurity/securityProfileGroup.go b/sdk/go/gcp/networksecurity/securityProfileGroup.go index 84d7995634..3cf9aee663 100644 --- a/sdk/go/gcp/networksecurity/securityProfileGroup.go +++ b/sdk/go/gcp/networksecurity/securityProfileGroup.go @@ -77,7 +77,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -141,7 +141,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("network"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) diff --git a/sdk/go/gcp/networksecurity/tlsInspectionPolicy.go b/sdk/go/gcp/networksecurity/tlsInspectionPolicy.go index 0cdc3d9348..6b5f632544 100644 --- a/sdk/go/gcp/networksecurity/tlsInspectionPolicy.go +++ b/sdk/go/gcp/networksecurity/tlsInspectionPolicy.go @@ -40,7 +40,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ +// _default, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ // Name: pulumi.String("my-basic-ca-pool"), // Location: pulumi.String("us-central1"), // Tier: pulumi.String("DEVOPS"), @@ -152,7 +152,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ +// _default, err := certificateauthority.NewCaPool(ctx, "default", &certificateauthority.CaPoolArgs{ // Name: pulumi.String("my-basic-ca-pool"), // Location: pulumi.String("us-central1"), // Tier: pulumi.String("DEVOPS"), diff --git a/sdk/go/gcp/networkservices/authzExtension.go b/sdk/go/gcp/networkservices/authzExtension.go index 641f23bc3c..6c8494c94d 100644 --- a/sdk/go/gcp/networkservices/authzExtension.go +++ b/sdk/go/gcp/networkservices/authzExtension.go @@ -35,7 +35,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewRegionBackendService(ctx, "default", &compute.RegionBackendServiceArgs{ +// _default, err := compute.NewRegionBackendService(ctx, "default", &compute.RegionBackendServiceArgs{ // Name: pulumi.String("authz-service"), // Project: pulumi.String("my-project-name"), // Region: pulumi.String("us-west1"), diff --git a/sdk/go/gcp/networkservices/edgeCacheKeyset.go b/sdk/go/gcp/networkservices/edgeCacheKeyset.go index 9fdf2f6b71..f201d6c27d 100644 --- a/sdk/go/gcp/networkservices/edgeCacheKeyset.go +++ b/sdk/go/gcp/networkservices/edgeCacheKeyset.go @@ -72,7 +72,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ +// secret_basic, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret-name"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -81,7 +81,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "secret-version-basic", &secretmanager.SecretVersionArgs{ +// secret_version_basic, err := secretmanager.NewSecretVersion(ctx, "secret-version-basic", &secretmanager.SecretVersionArgs{ // Secret: secret_basic.ID(), // SecretData: pulumi.String("secret-data"), // }) diff --git a/sdk/go/gcp/networkservices/edgeCacheOrigin.go b/sdk/go/gcp/networkservices/edgeCacheOrigin.go index 5875b25423..cd3e986df4 100644 --- a/sdk/go/gcp/networkservices/edgeCacheOrigin.go +++ b/sdk/go/gcp/networkservices/edgeCacheOrigin.go @@ -143,7 +143,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ +// secret_basic, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret-name"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -152,7 +152,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "secret-version-basic", &secretmanager.SecretVersionArgs{ +// secret_version_basic, err := secretmanager.NewSecretVersion(ctx, "secret-version-basic", &secretmanager.SecretVersionArgs{ // Secret: secret_basic.ID(), // SecretData: pulumi.String("secret-data"), // }) diff --git a/sdk/go/gcp/networkservices/edgeCacheService.go b/sdk/go/gcp/networkservices/edgeCacheService.go index bf4f034cac..2019a1ae13 100644 --- a/sdk/go/gcp/networkservices/edgeCacheService.go +++ b/sdk/go/gcp/networkservices/edgeCacheService.go @@ -382,7 +382,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ +// secret_basic, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret-name"), // Replication: &secretmanager.SecretReplicationArgs{ // Auto: &secretmanager.SecretReplicationAutoArgs{}, @@ -391,7 +391,7 @@ import ( // if err != nil { // return err // } -// _, err = secretmanager.NewSecretVersion(ctx, "secret-version-basic", &secretmanager.SecretVersionArgs{ +// secret_version_basic, err := secretmanager.NewSecretVersion(ctx, "secret-version-basic", &secretmanager.SecretVersionArgs{ // Secret: secret_basic.ID(), // SecretData: pulumi.String("secret-data"), // }) diff --git a/sdk/go/gcp/networkservices/gateway.go b/sdk/go/gcp/networkservices/gateway.go index bd570da71a..84fc614537 100644 --- a/sdk/go/gcp/networkservices/gateway.go +++ b/sdk/go/gcp/networkservices/gateway.go @@ -117,7 +117,7 @@ import ( // if err != nil { // return err // } -// _, err = certificatemanager.NewCertificate(ctx, "default", &certificatemanager.CertificateArgs{ +// _default, err := certificatemanager.NewCertificate(ctx, "default", &certificatemanager.CertificateArgs{ // Name: pulumi.String("my-certificate"), // Location: pulumi.String("us-central1"), // SelfManaged: &certificatemanager.CertificateSelfManagedArgs{ @@ -236,7 +236,7 @@ import ( // if err != nil { // return err // } -// _, err = certificatemanager.NewCertificate(ctx, "default", &certificatemanager.CertificateArgs{ +// _default, err := certificatemanager.NewCertificate(ctx, "default", &certificatemanager.CertificateArgs{ // Name: pulumi.String("my-certificate"), // Location: pulumi.String("us-south1"), // SelfManaged: &certificatemanager.CertificateSelfManagedArgs{ diff --git a/sdk/go/gcp/networkservices/httpRoute.go b/sdk/go/gcp/networkservices/httpRoute.go index ae6c06e7f7..98f097e5cd 100644 --- a/sdk/go/gcp/networkservices/httpRoute.go +++ b/sdk/go/gcp/networkservices/httpRoute.go @@ -320,7 +320,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := networkservices.NewMesh(ctx, "default", &networkservices.MeshArgs{ +// _default, err := networkservices.NewMesh(ctx, "default", &networkservices.MeshArgs{ // Name: pulumi.String("my-http-route"), // Labels: pulumi.StringMap{ // "foo": pulumi.String("bar"), diff --git a/sdk/go/gcp/networkservices/serviceBinding.go b/sdk/go/gcp/networkservices/serviceBinding.go index 36191a13b6..fc1cb4c94c 100644 --- a/sdk/go/gcp/networkservices/serviceBinding.go +++ b/sdk/go/gcp/networkservices/serviceBinding.go @@ -29,7 +29,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := servicedirectory.NewNamespace(ctx, "default", &servicedirectory.NamespaceArgs{ +// _default, err := servicedirectory.NewNamespace(ctx, "default", &servicedirectory.NamespaceArgs{ // NamespaceId: pulumi.String("my-namespace"), // Location: pulumi.String("us-central1"), // }) diff --git a/sdk/go/gcp/networkservices/serviceLbPolicies.go b/sdk/go/gcp/networkservices/serviceLbPolicies.go index 4cf4c34504..39f21793e6 100644 --- a/sdk/go/gcp/networkservices/serviceLbPolicies.go +++ b/sdk/go/gcp/networkservices/serviceLbPolicies.go @@ -57,7 +57,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := networkservices.NewServiceLbPolicies(ctx, "default", &networkservices.ServiceLbPoliciesArgs{ +// _default, err := networkservices.NewServiceLbPolicies(ctx, "default", &networkservices.ServiceLbPoliciesArgs{ // Name: pulumi.String("my-lb-policy"), // Location: pulumi.String("global"), // Description: pulumi.String("my description"), diff --git a/sdk/go/gcp/networkservices/tcpRoute.go b/sdk/go/gcp/networkservices/tcpRoute.go index 559cc26fec..99216bfe89 100644 --- a/sdk/go/gcp/networkservices/tcpRoute.go +++ b/sdk/go/gcp/networkservices/tcpRoute.go @@ -38,7 +38,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ +// _default, err := compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ // Name: pulumi.String("my-backend-service"), // HealthChecks: defaultHttpHealthCheck.ID(), // }) @@ -103,7 +103,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ +// _default, err := compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ // Name: pulumi.String("my-backend-service"), // HealthChecks: defaultHttpHealthCheck.ID(), // }) @@ -163,7 +163,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ +// _default, err := compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ // Name: pulumi.String("my-backend-service"), // HealthChecks: defaultHttpHealthCheck.ID(), // }) @@ -241,7 +241,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ +// _default, err := compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ // Name: pulumi.String("my-backend-service"), // HealthChecks: defaultHttpHealthCheck.ID(), // }) diff --git a/sdk/go/gcp/networkservices/tlsRoute.go b/sdk/go/gcp/networkservices/tlsRoute.go index b8cd595f78..47723ffba2 100644 --- a/sdk/go/gcp/networkservices/tlsRoute.go +++ b/sdk/go/gcp/networkservices/tlsRoute.go @@ -38,7 +38,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ +// _default, err := compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ // Name: pulumi.String("my-backend-service"), // HealthChecks: defaultHttpHealthCheck.ID(), // }) @@ -103,7 +103,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ +// _default, err := compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ // Name: pulumi.String("my-backend-service"), // HealthChecks: defaultHttpHealthCheck.ID(), // }) @@ -181,7 +181,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ +// _default, err := compute.NewBackendService(ctx, "default", &compute.BackendServiceArgs{ // Name: pulumi.String("my-backend-service"), // HealthChecks: defaultHttpHealthCheck.ID(), // }) diff --git a/sdk/go/gcp/parallelstore/instance.go b/sdk/go/gcp/parallelstore/instance.go index 8da99cef8b..5eb230479e 100644 --- a/sdk/go/gcp/parallelstore/instance.go +++ b/sdk/go/gcp/parallelstore/instance.go @@ -52,7 +52,7 @@ import ( // return err // } // // Create a private connection -// _, err = servicenetworking.NewConnection(ctx, "default", &servicenetworking.ConnectionArgs{ +// _default, err := servicenetworking.NewConnection(ctx, "default", &servicenetworking.ConnectionArgs{ // Network: network.ID(), // Service: pulumi.String("servicenetworking.googleapis.com"), // ReservedPeeringRanges: pulumi.StringArray{ @@ -121,7 +121,7 @@ import ( // return err // } // // Create a private connection -// _, err = servicenetworking.NewConnection(ctx, "default", &servicenetworking.ConnectionArgs{ +// _default, err := servicenetworking.NewConnection(ctx, "default", &servicenetworking.ConnectionArgs{ // Network: network.ID(), // Service: pulumi.String("servicenetworking.googleapis.com"), // ReservedPeeringRanges: pulumi.StringArray{ diff --git a/sdk/go/gcp/parametermanager/parameterVersion.go b/sdk/go/gcp/parametermanager/parameterVersion.go index f288bf9df8..fd1ca308e2 100644 --- a/sdk/go/gcp/parametermanager/parameterVersion.go +++ b/sdk/go/gcp/parametermanager/parameterVersion.go @@ -28,7 +28,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := parametermanager.NewParameter(ctx, "parameter-basic", ¶metermanager.ParameterArgs{ +// parameter_basic, err := parametermanager.NewParameter(ctx, "parameter-basic", ¶metermanager.ParameterArgs{ // ParameterId: pulumi.String("parameter"), // }) // if err != nil { @@ -63,7 +63,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := parametermanager.NewParameter(ctx, "parameter-basic", ¶metermanager.ParameterArgs{ +// parameter_basic, err := parametermanager.NewParameter(ctx, "parameter-basic", ¶metermanager.ParameterArgs{ // ParameterId: pulumi.String("parameter"), // Format: pulumi.String("JSON"), // }) diff --git a/sdk/go/gcp/parametermanager/regionalParameterVersion.go b/sdk/go/gcp/parametermanager/regionalParameterVersion.go index c0a15e963a..1ec8431a4b 100644 --- a/sdk/go/gcp/parametermanager/regionalParameterVersion.go +++ b/sdk/go/gcp/parametermanager/regionalParameterVersion.go @@ -28,7 +28,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := parametermanager.NewRegionalParameter(ctx, "regional-parameter-basic", ¶metermanager.RegionalParameterArgs{ +// regional_parameter_basic, err := parametermanager.NewRegionalParameter(ctx, "regional-parameter-basic", ¶metermanager.RegionalParameterArgs{ // ParameterId: pulumi.String("regional_parameter"), // Location: pulumi.String("us-central1"), // }) @@ -64,7 +64,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := parametermanager.NewRegionalParameter(ctx, "regional-parameter-basic", ¶metermanager.RegionalParameterArgs{ +// regional_parameter_basic, err := parametermanager.NewRegionalParameter(ctx, "regional-parameter-basic", ¶metermanager.RegionalParameterArgs{ // ParameterId: pulumi.String("regional_parameter"), // Format: pulumi.String("JSON"), // Location: pulumi.String("us-central1"), diff --git a/sdk/go/gcp/redis/cluster.go b/sdk/go/gcp/redis/cluster.go index c081857d86..18969bda7a 100644 --- a/sdk/go/gcp/redis/cluster.go +++ b/sdk/go/gcp/redis/cluster.go @@ -46,7 +46,7 @@ import ( // if err != nil { // return err // } -// _, err = networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ +// _default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ // Name: pulumi.String("mypolicy"), // Location: pulumi.String("us-central1"), // ServiceClass: pulumi.String("gcp-memorystore-redis"), @@ -137,7 +137,7 @@ import ( // if err != nil { // return err // } -// _, err = networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ +// _default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ // Name: pulumi.String("mypolicy"), // Location: pulumi.String("us-central1"), // ServiceClass: pulumi.String("gcp-memorystore-redis"), @@ -398,7 +398,7 @@ import ( // if err != nil { // return err // } -// _, err = networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ +// _default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ // Name: pulumi.String("mypolicy"), // Location: pulumi.String("us-central1"), // ServiceClass: pulumi.String("gcp-memorystore-redis"), @@ -496,7 +496,7 @@ import ( // if err != nil { // return err // } -// _, err = networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ +// _default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ // Name: pulumi.String("mypolicy"), // Location: pulumi.String("us-central1"), // ServiceClass: pulumi.String("gcp-memorystore-redis"), diff --git a/sdk/go/gcp/redis/clusterUserCreatedConnections.go b/sdk/go/gcp/redis/clusterUserCreatedConnections.go index 5013d6845c..a66b8a5475 100644 --- a/sdk/go/gcp/redis/clusterUserCreatedConnections.go +++ b/sdk/go/gcp/redis/clusterUserCreatedConnections.go @@ -57,7 +57,7 @@ import ( // return err // } // // redis cluster without endpoint -// _, err = redis.NewCluster(ctx, "cluster-user-conn", &redis.ClusterArgs{ +// cluster_user_connCluster, err := redis.NewCluster(ctx, "cluster-user-conn", &redis.ClusterArgs{ // Name: pulumi.String("cluster-user-conn"), // ShardCount: pulumi.Int(3), // Region: pulumi.String("us-central1"), @@ -294,7 +294,7 @@ import ( // if err != nil { // return err // } -// _, err = networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ +// _default, err := networkconnectivity.NewServiceConnectionPolicy(ctx, "default", &networkconnectivity.ServiceConnectionPolicyArgs{ // Name: pulumi.String("scpolicy"), // Location: pulumi.String("us-central1"), // ServiceClass: pulumi.String("gcp-memorystore-redis"), @@ -310,7 +310,7 @@ import ( // return err // } // // redis cluster without endpoint -// _, err = redis.NewCluster(ctx, "cluster-user-auto-conn", &redis.ClusterArgs{ +// cluster_user_auto_connCluster, err := redis.NewCluster(ctx, "cluster-user-auto-conn", &redis.ClusterArgs{ // Name: pulumi.String("cluster-user-auto-conn"), // ShardCount: pulumi.Int(3), // Region: pulumi.String("us-central1"), diff --git a/sdk/go/gcp/redis/instance.go b/sdk/go/gcp/redis/instance.go index 57e33ca695..8179220d75 100644 --- a/sdk/go/gcp/redis/instance.go +++ b/sdk/go/gcp/redis/instance.go @@ -170,7 +170,7 @@ import ( // // If this network hasn't been created and you are using this example in your // // config, add an additional network resource or change // // this from "data"to "resource" -// _, err := compute.NewNetwork(ctx, "redis-network", &compute.NetworkArgs{ +// redis_network, err := compute.NewNetwork(ctx, "redis-network", &compute.NetworkArgs{ // Name: pulumi.String("redis-test-network"), // }) // if err != nil { diff --git a/sdk/go/gcp/runtimeconfig/variable.go b/sdk/go/gcp/runtimeconfig/variable.go index c9d911d1ac..09ee801962 100644 --- a/sdk/go/gcp/runtimeconfig/variable.go +++ b/sdk/go/gcp/runtimeconfig/variable.go @@ -28,7 +28,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := runtimeconfig.NewConfig(ctx, "my-runtime-config", &runtimeconfig.ConfigArgs{ +// my_runtime_config, err := runtimeconfig.NewConfig(ctx, "my-runtime-config", &runtimeconfig.ConfigArgs{ // Name: pulumi.String("my-service-runtime-config"), // Description: pulumi.String("Runtime configuration values for my service"), // }) @@ -67,7 +67,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := runtimeconfig.NewConfig(ctx, "my-runtime-config", &runtimeconfig.ConfigArgs{ +// my_runtime_config, err := runtimeconfig.NewConfig(ctx, "my-runtime-config", &runtimeconfig.ConfigArgs{ // Name: pulumi.String("my-service-runtime-config"), // Description: pulumi.String("Runtime configuration values for my service"), // }) diff --git a/sdk/go/gcp/secretmanager/regionalSecret.go b/sdk/go/gcp/secretmanager/regionalSecret.go index 9712a4b754..ed3dbf6e0c 100644 --- a/sdk/go/gcp/secretmanager/regionalSecret.go +++ b/sdk/go/gcp/secretmanager/regionalSecret.go @@ -76,7 +76,7 @@ import ( // if err != nil { // return err // } -// _, err = kms.NewCryptoKeyIAMMember(ctx, "kms-secret-binding", &kms.CryptoKeyIAMMemberArgs{ +// kms_secret_binding, err := kms.NewCryptoKeyIAMMember(ctx, "kms-secret-binding", &kms.CryptoKeyIAMMemberArgs{ // CryptoKeyId: pulumi.String("kms-key"), // Role: pulumi.String("roles/cloudkms.cryptoKeyEncrypterDecrypter"), // Member: pulumi.Sprintf("serviceAccount:service-%v@gcp-sa-secretmanager.iam.gserviceaccount.com", project.Number), diff --git a/sdk/go/gcp/secretmanager/regionalSecretVersion.go b/sdk/go/gcp/secretmanager/regionalSecretVersion.go index 16ade66fac..451d62a3b4 100644 --- a/sdk/go/gcp/secretmanager/regionalSecretVersion.go +++ b/sdk/go/gcp/secretmanager/regionalSecretVersion.go @@ -30,7 +30,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewRegionalSecret(ctx, "secret-basic", &secretmanager.RegionalSecretArgs{ +// secret_basic, err := secretmanager.NewRegionalSecret(ctx, "secret-basic", &secretmanager.RegionalSecretArgs{ // SecretId: pulumi.String("secret-version"), // Location: pulumi.String("us-central1"), // }) @@ -64,7 +64,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewRegionalSecret(ctx, "secret-basic", &secretmanager.RegionalSecretArgs{ +// secret_basic, err := secretmanager.NewRegionalSecret(ctx, "secret-basic", &secretmanager.RegionalSecretArgs{ // SecretId: pulumi.String("secret-version"), // Location: pulumi.String("us-central1"), // }) @@ -104,7 +104,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewRegionalSecret(ctx, "secret-basic", &secretmanager.RegionalSecretArgs{ +// secret_basic, err := secretmanager.NewRegionalSecret(ctx, "secret-basic", &secretmanager.RegionalSecretArgs{ // SecretId: pulumi.String("secret-version"), // Location: pulumi.String("us-central1"), // }) @@ -138,7 +138,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewRegionalSecret(ctx, "secret-basic", &secretmanager.RegionalSecretArgs{ +// secret_basic, err := secretmanager.NewRegionalSecret(ctx, "secret-basic", &secretmanager.RegionalSecretArgs{ // SecretId: pulumi.String("secret-version"), // Location: pulumi.String("us-central1"), // }) @@ -172,7 +172,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewRegionalSecret(ctx, "secret-basic", &secretmanager.RegionalSecretArgs{ +// secret_basic, err := secretmanager.NewRegionalSecret(ctx, "secret-basic", &secretmanager.RegionalSecretArgs{ // SecretId: pulumi.String("secret-version"), // Location: pulumi.String("us-central1"), // }) diff --git a/sdk/go/gcp/secretmanager/secret.go b/sdk/go/gcp/secretmanager/secret.go index b56b05beca..6573cc345b 100644 --- a/sdk/go/gcp/secretmanager/secret.go +++ b/sdk/go/gcp/secretmanager/secret.go @@ -149,7 +149,7 @@ import ( // if err != nil { // return err // } -// _, err = kms.NewCryptoKeyIAMMember(ctx, "kms-secret-binding", &kms.CryptoKeyIAMMemberArgs{ +// kms_secret_binding, err := kms.NewCryptoKeyIAMMember(ctx, "kms-secret-binding", &kms.CryptoKeyIAMMemberArgs{ // CryptoKeyId: pulumi.String("kms-key"), // Role: pulumi.String("roles/cloudkms.cryptoKeyEncrypterDecrypter"), // Member: pulumi.Sprintf("serviceAccount:service-%v@gcp-sa-secretmanager.iam.gserviceaccount.com", project.Number), diff --git a/sdk/go/gcp/secretmanager/secretVersion.go b/sdk/go/gcp/secretmanager/secretVersion.go index 5d3fb8a6d0..bcdbcc3b6d 100644 --- a/sdk/go/gcp/secretmanager/secretVersion.go +++ b/sdk/go/gcp/secretmanager/secretVersion.go @@ -30,7 +30,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ +// secret_basic, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret-version"), // Labels: pulumi.StringMap{ // "label": pulumi.String("my-label"), @@ -68,7 +68,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ +// secret_basic, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret-version"), // Replication: &secretmanager.SecretReplicationArgs{ // UserManaged: &secretmanager.SecretReplicationUserManagedArgs{ @@ -110,7 +110,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ +// secret_basic, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret-version"), // Replication: &secretmanager.SecretReplicationArgs{ // UserManaged: &secretmanager.SecretReplicationUserManagedArgs{ @@ -153,7 +153,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ +// secret_basic, err := secretmanager.NewSecret(ctx, "secret-basic", &secretmanager.SecretArgs{ // SecretId: pulumi.String("secret-version"), // Replication: &secretmanager.SecretReplicationArgs{ // UserManaged: &secretmanager.SecretReplicationUserManagedArgs{ diff --git a/sdk/go/gcp/securesourcemanager/instance.go b/sdk/go/gcp/securesourcemanager/instance.go index bcfc2643a5..db24518f82 100644 --- a/sdk/go/gcp/securesourcemanager/instance.go +++ b/sdk/go/gcp/securesourcemanager/instance.go @@ -298,7 +298,7 @@ import ( // return err // } // // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api -// _, err = securesourcemanager.NewInstance(ctx, "default", &securesourcemanager.InstanceArgs{ +// _default, err := securesourcemanager.NewInstance(ctx, "default", &securesourcemanager.InstanceArgs{ // InstanceId: pulumi.String("my-instance"), // Location: pulumi.String("us-central1"), // PrivateConfig: &securesourcemanager.InstancePrivateConfigArgs{ @@ -549,7 +549,7 @@ import ( // return err // } // // See https://cloud.google.com/secure-source-manager/docs/create-private-service-connect-instance#root-ca-api -// _, err = securesourcemanager.NewInstance(ctx, "default", &securesourcemanager.InstanceArgs{ +// _default, err := securesourcemanager.NewInstance(ctx, "default", &securesourcemanager.InstanceArgs{ // InstanceId: pulumi.String("my-instance"), // Location: pulumi.String("us-central1"), // PrivateConfig: &securesourcemanager.InstancePrivateConfigArgs{ diff --git a/sdk/go/gcp/securitycenter/folderSccBigQueryExport.go b/sdk/go/gcp/securitycenter/folderSccBigQueryExport.go index 13b22a00a3..ba1099cefb 100644 --- a/sdk/go/gcp/securitycenter/folderSccBigQueryExport.go +++ b/sdk/go/gcp/securitycenter/folderSccBigQueryExport.go @@ -52,7 +52,7 @@ import ( // if err != nil { // return err // } -// _, err = bigquery.NewDataset(ctx, "default", &bigquery.DatasetArgs{ +// _default, err := bigquery.NewDataset(ctx, "default", &bigquery.DatasetArgs{ // DatasetId: pulumi.String("my_dataset_id"), // FriendlyName: pulumi.String("test"), // Description: pulumi.String("This is a test description"), diff --git a/sdk/go/gcp/securitycenter/v2folderSccBigQueryExport.go b/sdk/go/gcp/securitycenter/v2folderSccBigQueryExport.go index cc909d8f7a..f34704d9fe 100644 --- a/sdk/go/gcp/securitycenter/v2folderSccBigQueryExport.go +++ b/sdk/go/gcp/securitycenter/v2folderSccBigQueryExport.go @@ -51,7 +51,7 @@ import ( // if err != nil { // return err // } -// _, err = bigquery.NewDataset(ctx, "default", &bigquery.DatasetArgs{ +// _default, err := bigquery.NewDataset(ctx, "default", &bigquery.DatasetArgs{ // DatasetId: pulumi.String("my_dataset_id"), // FriendlyName: pulumi.String("test"), // Description: pulumi.String("This is a test description"), diff --git a/sdk/go/gcp/securitycenter/v2organizationSccBigQueryExport.go b/sdk/go/gcp/securitycenter/v2organizationSccBigQueryExport.go index 2c446d8fe2..40ce473552 100644 --- a/sdk/go/gcp/securitycenter/v2organizationSccBigQueryExport.go +++ b/sdk/go/gcp/securitycenter/v2organizationSccBigQueryExport.go @@ -42,7 +42,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := bigquery.NewDataset(ctx, "default", &bigquery.DatasetArgs{ +// _default, err := bigquery.NewDataset(ctx, "default", &bigquery.DatasetArgs{ // DatasetId: pulumi.String(""), // FriendlyName: pulumi.String("test"), // Description: pulumi.String("This is a test description"), diff --git a/sdk/go/gcp/securitycenter/v2organizationSccBigQueryExports.go b/sdk/go/gcp/securitycenter/v2organizationSccBigQueryExports.go index d63fddfb96..7e0533625a 100644 --- a/sdk/go/gcp/securitycenter/v2organizationSccBigQueryExports.go +++ b/sdk/go/gcp/securitycenter/v2organizationSccBigQueryExports.go @@ -44,7 +44,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := bigquery.NewDataset(ctx, "default", &bigquery.DatasetArgs{ +// _default, err := bigquery.NewDataset(ctx, "default", &bigquery.DatasetArgs{ // DatasetId: pulumi.String(""), // FriendlyName: pulumi.String("test"), // Description: pulumi.String("This is a test description"), diff --git a/sdk/go/gcp/servicenetworking/connection.go b/sdk/go/gcp/servicenetworking/connection.go index f00d69866f..5bdca2c6b8 100644 --- a/sdk/go/gcp/servicenetworking/connection.go +++ b/sdk/go/gcp/servicenetworking/connection.go @@ -51,7 +51,7 @@ import ( // return err // } // // Create a private connection -// _, err = servicenetworking.NewConnection(ctx, "default", &servicenetworking.ConnectionArgs{ +// _default, err := servicenetworking.NewConnection(ctx, "default", &servicenetworking.ConnectionArgs{ // Network: peeringNetwork.ID(), // Service: pulumi.String("servicenetworking.googleapis.com"), // ReservedPeeringRanges: pulumi.StringArray{ diff --git a/sdk/go/gcp/servicenetworking/vpcServiceControls.go b/sdk/go/gcp/servicenetworking/vpcServiceControls.go index dd4834ffcc..890d558123 100644 --- a/sdk/go/gcp/servicenetworking/vpcServiceControls.go +++ b/sdk/go/gcp/servicenetworking/vpcServiceControls.go @@ -68,7 +68,7 @@ import ( // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { // // Create a VPC -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("example-network"), // }) // if err != nil { diff --git a/sdk/go/gcp/storage/bucketACL.go b/sdk/go/gcp/storage/bucketACL.go index fbfa352273..676a712baa 100644 --- a/sdk/go/gcp/storage/bucketACL.go +++ b/sdk/go/gcp/storage/bucketACL.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "image-store", &storage.BucketArgs{ +// image_store, err := storage.NewBucket(ctx, "image-store", &storage.BucketArgs{ // Name: pulumi.String("image-store-bucket"), // Location: pulumi.String("EU"), // }) diff --git a/sdk/go/gcp/storage/defaultObjectACL.go b/sdk/go/gcp/storage/defaultObjectACL.go index 482f2ef356..3061a67167 100644 --- a/sdk/go/gcp/storage/defaultObjectACL.go +++ b/sdk/go/gcp/storage/defaultObjectACL.go @@ -42,7 +42,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "image-store", &storage.BucketArgs{ +// image_store, err := storage.NewBucket(ctx, "image-store", &storage.BucketArgs{ // Name: pulumi.String("image-store-bucket"), // Location: pulumi.String("EU"), // }) diff --git a/sdk/go/gcp/storage/objectACL.go b/sdk/go/gcp/storage/objectACL.go index c7848a50a0..1e1c42419a 100644 --- a/sdk/go/gcp/storage/objectACL.go +++ b/sdk/go/gcp/storage/objectACL.go @@ -40,7 +40,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "image-store", &storage.BucketArgs{ +// image_store, err := storage.NewBucket(ctx, "image-store", &storage.BucketArgs{ // Name: pulumi.String("image-store-bucket"), // Location: pulumi.String("EU"), // }) diff --git a/sdk/go/gcp/storage/transferJob.go b/sdk/go/gcp/storage/transferJob.go index 1222151a16..4b40e334fa 100644 --- a/sdk/go/gcp/storage/transferJob.go +++ b/sdk/go/gcp/storage/transferJob.go @@ -46,7 +46,7 @@ import ( // if err != nil { // return err // } -// _, err = storage.NewBucket(ctx, "s3-backup-bucket", &storage.BucketArgs{ +// s3_backup_bucket, err := storage.NewBucket(ctx, "s3-backup-bucket", &storage.BucketArgs{ // Name: pulumi.Sprintf("%v-backup", awsS3Bucket), // StorageClass: pulumi.String("NEARLINE"), // Project: pulumi.Any(project), @@ -55,7 +55,7 @@ import ( // if err != nil { // return err // } -// _, err = storage.NewBucketIAMMember(ctx, "s3-backup-bucket", &storage.BucketIAMMemberArgs{ +// s3_backup_bucketBucketIAMMember, err := storage.NewBucketIAMMember(ctx, "s3-backup-bucket", &storage.BucketIAMMemberArgs{ // Bucket: s3_backup_bucket.Name, // Role: pulumi.String("roles/storage.admin"), // Member: pulumi.Sprintf("serviceAccount:%v", _default.Email), diff --git a/sdk/go/gcp/transcoder/job.go b/sdk/go/gcp/transcoder/job.go index 66c3345590..53c3118ef0 100644 --- a/sdk/go/gcp/transcoder/job.go +++ b/sdk/go/gcp/transcoder/job.go @@ -39,7 +39,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "default", &storage.BucketArgs{ +// _default, err := storage.NewBucket(ctx, "default", &storage.BucketArgs{ // Name: pulumi.String("transcoder-job"), // Location: pulumi.String("US"), // ForceDestroy: pulumi.Bool(true), @@ -201,7 +201,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "default", &storage.BucketArgs{ +// _default, err := storage.NewBucket(ctx, "default", &storage.BucketArgs{ // Name: pulumi.String("transcoder-job"), // Location: pulumi.String("US"), // ForceDestroy: pulumi.Bool(true), @@ -368,7 +368,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "default", &storage.BucketArgs{ +// _default, err := storage.NewBucket(ctx, "default", &storage.BucketArgs{ // Name: pulumi.String("transcoder-job"), // Location: pulumi.String("US"), // ForceDestroy: pulumi.Bool(true), @@ -614,7 +614,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "default", &storage.BucketArgs{ +// _default, err := storage.NewBucket(ctx, "default", &storage.BucketArgs{ // Name: pulumi.String("transcoder-job"), // Location: pulumi.String("US"), // ForceDestroy: pulumi.Bool(true), @@ -801,7 +801,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := storage.NewBucket(ctx, "default", &storage.BucketArgs{ +// _default, err := storage.NewBucket(ctx, "default", &storage.BucketArgs{ // Name: pulumi.String("transcoder-job"), // Location: pulumi.String("US"), // ForceDestroy: pulumi.Bool(true), diff --git a/sdk/go/gcp/vertex/aiFeatureOnlineStoreFeatureview.go b/sdk/go/gcp/vertex/aiFeatureOnlineStoreFeatureview.go index d0a1c4bf83..669b6601ab 100644 --- a/sdk/go/gcp/vertex/aiFeatureOnlineStoreFeatureview.go +++ b/sdk/go/gcp/vertex/aiFeatureOnlineStoreFeatureview.go @@ -57,7 +57,7 @@ import ( // if err != nil { // return err // } -// _, err = bigquery.NewDataset(ctx, "tf-test-dataset", &bigquery.DatasetArgs{ +// tf_test_dataset, err := bigquery.NewDataset(ctx, "tf-test-dataset", &bigquery.DatasetArgs{ // DatasetId: pulumi.String("example_feature_view"), // FriendlyName: pulumi.String("test"), // Description: pulumi.String("This is a test description"), @@ -66,7 +66,7 @@ import ( // if err != nil { // return err // } -// _, err = bigquery.NewTable(ctx, "tf-test-table", &bigquery.TableArgs{ +// tf_test_table, err := bigquery.NewTable(ctx, "tf-test-table", &bigquery.TableArgs{ // DeletionProtection: pulumi.Bool(false), // DatasetId: tf_test_dataset.DatasetId, // TableId: pulumi.String("example_feature_view"), @@ -496,7 +496,7 @@ import ( // if err != nil { // return err // } -// _, err = bigquery.NewDataset(ctx, "tf-test-dataset", &bigquery.DatasetArgs{ +// tf_test_dataset, err := bigquery.NewDataset(ctx, "tf-test-dataset", &bigquery.DatasetArgs{ // DatasetId: pulumi.String("example_feature_view_vector_search"), // FriendlyName: pulumi.String("test"), // Description: pulumi.String("This is a test description"), @@ -505,7 +505,7 @@ import ( // if err != nil { // return err // } -// _, err = bigquery.NewTable(ctx, "tf-test-table", &bigquery.TableArgs{ +// tf_test_table, err := bigquery.NewTable(ctx, "tf-test-table", &bigquery.TableArgs{ // DeletionProtection: pulumi.Bool(false), // DatasetId: tf_test_dataset.DatasetId, // TableId: pulumi.String("example_feature_view_vector_search"), diff --git a/sdk/go/gcp/vmwareengine/cluster.go b/sdk/go/gcp/vmwareengine/cluster.go index 7fc641ff32..ab493a656a 100644 --- a/sdk/go/gcp/vmwareengine/cluster.go +++ b/sdk/go/gcp/vmwareengine/cluster.go @@ -34,7 +34,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := vmwareengine.NewNetwork(ctx, "cluster-nw", &vmwareengine.NetworkArgs{ +// cluster_nw, err := vmwareengine.NewNetwork(ctx, "cluster-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("pc-nw"), // Type: pulumi.String("STANDARD"), // Location: pulumi.String("global"), @@ -43,7 +43,7 @@ import ( // if err != nil { // return err // } -// _, err = vmwareengine.NewPrivateCloud(ctx, "cluster-pc", &vmwareengine.PrivateCloudArgs{ +// cluster_pc, err := vmwareengine.NewPrivateCloud(ctx, "cluster-pc", &vmwareengine.PrivateCloudArgs{ // Location: pulumi.String("us-west1-a"), // Name: pulumi.String("sample-pc"), // Description: pulumi.String("Sample test PC."), @@ -96,7 +96,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := vmwareengine.NewNetwork(ctx, "cluster-nw", &vmwareengine.NetworkArgs{ +// cluster_nw, err := vmwareengine.NewNetwork(ctx, "cluster-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("pc-nw"), // Type: pulumi.String("STANDARD"), // Location: pulumi.String("global"), @@ -105,7 +105,7 @@ import ( // if err != nil { // return err // } -// _, err = vmwareengine.NewPrivateCloud(ctx, "cluster-pc", &vmwareengine.PrivateCloudArgs{ +// cluster_pc, err := vmwareengine.NewPrivateCloud(ctx, "cluster-pc", &vmwareengine.PrivateCloudArgs{ // Location: pulumi.String("us-west1-a"), // Name: pulumi.String("sample-pc"), // Description: pulumi.String("Sample test PC."), diff --git a/sdk/go/gcp/vmwareengine/externalAccessRule.go b/sdk/go/gcp/vmwareengine/externalAccessRule.go index 1d5328d9d1..0b2aaea733 100644 --- a/sdk/go/gcp/vmwareengine/externalAccessRule.go +++ b/sdk/go/gcp/vmwareengine/externalAccessRule.go @@ -34,7 +34,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := vmwareengine.NewNetwork(ctx, "external-access-rule-nw", &vmwareengine.NetworkArgs{ +// external_access_rule_nw, err := vmwareengine.NewNetwork(ctx, "external-access-rule-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("sample-nw"), // Location: pulumi.String("global"), // Type: pulumi.String("STANDARD"), @@ -43,7 +43,7 @@ import ( // if err != nil { // return err // } -// _, err = vmwareengine.NewNetworkPolicy(ctx, "external-access-rule-np", &vmwareengine.NetworkPolicyArgs{ +// external_access_rule_np, err := vmwareengine.NewNetworkPolicy(ctx, "external-access-rule-np", &vmwareengine.NetworkPolicyArgs{ // Location: pulumi.String("us-west1"), // Name: pulumi.String("sample-np"), // EdgeServicesCidr: pulumi.String("192.168.30.0/26"), @@ -97,7 +97,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := vmwareengine.NewNetwork(ctx, "external-access-rule-nw", &vmwareengine.NetworkArgs{ +// external_access_rule_nw, err := vmwareengine.NewNetwork(ctx, "external-access-rule-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("sample-nw"), // Location: pulumi.String("global"), // Type: pulumi.String("STANDARD"), @@ -106,7 +106,7 @@ import ( // if err != nil { // return err // } -// _, err = vmwareengine.NewPrivateCloud(ctx, "external-access-rule-pc", &vmwareengine.PrivateCloudArgs{ +// external_access_rule_pc, err := vmwareengine.NewPrivateCloud(ctx, "external-access-rule-pc", &vmwareengine.PrivateCloudArgs{ // Location: pulumi.String("us-west1-a"), // Name: pulumi.String("sample-pc"), // Description: pulumi.String("Sample test PC."), @@ -127,7 +127,7 @@ import ( // if err != nil { // return err // } -// _, err = vmwareengine.NewNetworkPolicy(ctx, "external-access-rule-np", &vmwareengine.NetworkPolicyArgs{ +// external_access_rule_np, err := vmwareengine.NewNetworkPolicy(ctx, "external-access-rule-np", &vmwareengine.NetworkPolicyArgs{ // Location: pulumi.String("us-west1"), // Name: pulumi.String("sample-np"), // EdgeServicesCidr: pulumi.String("192.168.30.0/26"), @@ -136,7 +136,7 @@ import ( // if err != nil { // return err // } -// _, err = vmwareengine.NewExternalAddress(ctx, "external-access-rule-ea", &vmwareengine.ExternalAddressArgs{ +// external_access_rule_ea, err := vmwareengine.NewExternalAddress(ctx, "external-access-rule-ea", &vmwareengine.ExternalAddressArgs{ // Name: pulumi.String("sample-ea"), // Parent: external_access_rule_pc.ID(), // InternalIp: pulumi.String("192.168.0.65"), diff --git a/sdk/go/gcp/vmwareengine/externalAddress.go b/sdk/go/gcp/vmwareengine/externalAddress.go index 7db4e8f740..aec1e31822 100644 --- a/sdk/go/gcp/vmwareengine/externalAddress.go +++ b/sdk/go/gcp/vmwareengine/externalAddress.go @@ -34,7 +34,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := vmwareengine.NewNetwork(ctx, "external-address-nw", &vmwareengine.NetworkArgs{ +// external_address_nw, err := vmwareengine.NewNetwork(ctx, "external-address-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("pc-nw"), // Location: pulumi.String("global"), // Type: pulumi.String("STANDARD"), @@ -43,7 +43,7 @@ import ( // if err != nil { // return err // } -// _, err = vmwareengine.NewPrivateCloud(ctx, "external-address-pc", &vmwareengine.PrivateCloudArgs{ +// external_address_pc, err := vmwareengine.NewPrivateCloud(ctx, "external-address-pc", &vmwareengine.PrivateCloudArgs{ // Location: pulumi.String("-a"), // Name: pulumi.String("sample-pc"), // Description: pulumi.String("Sample test PC."), @@ -64,7 +64,7 @@ import ( // if err != nil { // return err // } -// _, err = vmwareengine.NewNetworkPolicy(ctx, "external-address-np", &vmwareengine.NetworkPolicyArgs{ +// external_address_np, err := vmwareengine.NewNetworkPolicy(ctx, "external-address-np", &vmwareengine.NetworkPolicyArgs{ // Location: pulumi.String(""), // Name: pulumi.String("sample-np"), // EdgeServicesCidr: pulumi.String("192.168.30.0/26"), diff --git a/sdk/go/gcp/vmwareengine/networkPeering.go b/sdk/go/gcp/vmwareengine/networkPeering.go index b1e237a43e..3298666947 100644 --- a/sdk/go/gcp/vmwareengine/networkPeering.go +++ b/sdk/go/gcp/vmwareengine/networkPeering.go @@ -34,7 +34,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := vmwareengine.NewNetwork(ctx, "network-peering-nw", &vmwareengine.NetworkArgs{ +// network_peering_nw, err := vmwareengine.NewNetwork(ctx, "network-peering-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("default-np-nw"), // Location: pulumi.String("global"), // Type: pulumi.String("STANDARD"), @@ -42,7 +42,7 @@ import ( // if err != nil { // return err // } -// _, err = vmwareengine.NewNetwork(ctx, "network-peering-peer-nw", &vmwareengine.NetworkArgs{ +// network_peering_peer_nw, err := vmwareengine.NewNetwork(ctx, "network-peering-peer-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("peer-np-nw"), // Location: pulumi.String("global"), // Type: pulumi.String("STANDARD"), @@ -84,13 +84,13 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "network-peering-vpc", &compute.NetworkArgs{ +// network_peering_vpc, err := compute.NewNetwork(ctx, "network-peering-vpc", &compute.NetworkArgs{ // Name: pulumi.String("default-vpc"), // }) // if err != nil { // return err // } -// _, err = vmwareengine.NewNetwork(ctx, "network-peering-standard-nw", &vmwareengine.NetworkArgs{ +// network_peering_standard_nw, err := vmwareengine.NewNetwork(ctx, "network-peering-standard-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("default-standard-nw-np"), // Location: pulumi.String("global"), // Type: pulumi.String("STANDARD"), diff --git a/sdk/go/gcp/vmwareengine/networkPolicy.go b/sdk/go/gcp/vmwareengine/networkPolicy.go index cc5b73cdc7..9964c36bf6 100644 --- a/sdk/go/gcp/vmwareengine/networkPolicy.go +++ b/sdk/go/gcp/vmwareengine/networkPolicy.go @@ -34,7 +34,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := vmwareengine.NewNetwork(ctx, "network-policy-nw", &vmwareengine.NetworkArgs{ +// network_policy_nw, err := vmwareengine.NewNetwork(ctx, "network-policy-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("sample-network"), // Location: pulumi.String("global"), // Type: pulumi.String("STANDARD"), @@ -71,7 +71,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := vmwareengine.NewNetwork(ctx, "network-policy-nw", &vmwareengine.NetworkArgs{ +// network_policy_nw, err := vmwareengine.NewNetwork(ctx, "network-policy-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("sample-network"), // Location: pulumi.String("global"), // Type: pulumi.String("STANDARD"), diff --git a/sdk/go/gcp/vmwareengine/privateCloud.go b/sdk/go/gcp/vmwareengine/privateCloud.go index 268a5f8dbd..676ce3238a 100644 --- a/sdk/go/gcp/vmwareengine/privateCloud.go +++ b/sdk/go/gcp/vmwareengine/privateCloud.go @@ -34,7 +34,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := vmwareengine.NewNetwork(ctx, "pc-nw", &vmwareengine.NetworkArgs{ +// pc_nw, err := vmwareengine.NewNetwork(ctx, "pc-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("pc-nw"), // Location: pulumi.String("global"), // Type: pulumi.String("STANDARD"), @@ -83,7 +83,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := vmwareengine.NewNetwork(ctx, "pc-nw", &vmwareengine.NetworkArgs{ +// pc_nw, err := vmwareengine.NewNetwork(ctx, "pc-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("pc-nw"), // Location: pulumi.String("global"), // Type: pulumi.String("STANDARD"), diff --git a/sdk/go/gcp/vmwareengine/subnet.go b/sdk/go/gcp/vmwareengine/subnet.go index c31863aede..f121c8c0e9 100644 --- a/sdk/go/gcp/vmwareengine/subnet.go +++ b/sdk/go/gcp/vmwareengine/subnet.go @@ -36,7 +36,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := vmwareengine.NewNetwork(ctx, "subnet-nw", &vmwareengine.NetworkArgs{ +// subnet_nw, err := vmwareengine.NewNetwork(ctx, "subnet-nw", &vmwareengine.NetworkArgs{ // Name: pulumi.String("pc-nw"), // Location: pulumi.String("global"), // Type: pulumi.String("STANDARD"), @@ -45,7 +45,7 @@ import ( // if err != nil { // return err // } -// _, err = vmwareengine.NewPrivateCloud(ctx, "subnet-pc", &vmwareengine.PrivateCloudArgs{ +// subnet_pc, err := vmwareengine.NewPrivateCloud(ctx, "subnet-pc", &vmwareengine.PrivateCloudArgs{ // Location: pulumi.String("us-west1-a"), // Name: pulumi.String("sample-pc"), // Description: pulumi.String("Sample test PC."), diff --git a/sdk/go/gcp/workstations/workstation.go b/sdk/go/gcp/workstations/workstation.go index ff39d27939..da7037e227 100644 --- a/sdk/go/gcp/workstations/workstation.go +++ b/sdk/go/gcp/workstations/workstation.go @@ -29,7 +29,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("workstation-cluster"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) diff --git a/sdk/go/gcp/workstations/workstationConfig.go b/sdk/go/gcp/workstations/workstationConfig.go index 2030cd0d98..6a4a289ff6 100644 --- a/sdk/go/gcp/workstations/workstationConfig.go +++ b/sdk/go/gcp/workstations/workstationConfig.go @@ -43,7 +43,7 @@ import ( // if err != nil { // return err // } -// _, err = compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("workstation-cluster"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -129,7 +129,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("workstation-cluster"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -203,7 +203,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("workstation-cluster"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -284,7 +284,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("workstation-cluster"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -363,7 +363,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("workstation-cluster"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -433,7 +433,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("workstation-cluster"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -505,7 +505,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("workstation-cluster"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -592,7 +592,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("workstation-cluster"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) @@ -687,7 +687,7 @@ import ( // // func main() { // pulumi.Run(func(ctx *pulumi.Context) error { -// _, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ +// _default, err := compute.NewNetwork(ctx, "default", &compute.NetworkArgs{ // Name: pulumi.String("workstation-cluster"), // AutoCreateSubnetworks: pulumi.Bool(false), // }) diff --git a/sdk/nodejs/accesscontextmanager/getAccessPolicy.ts b/sdk/nodejs/accesscontextmanager/getAccessPolicy.ts index 8e0657c454..6ff95d5ff9 100644 --- a/sdk/nodejs/accesscontextmanager/getAccessPolicy.ts +++ b/sdk/nodejs/accesscontextmanager/getAccessPolicy.ts @@ -13,10 +13,10 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const policy-org = gcp.accesscontextmanager.getAccessPolicy({ + * const policy_org = gcp.accesscontextmanager.getAccessPolicy({ * parent: "organizations/1234567", * }); - * const policy-scoped = gcp.accesscontextmanager.getAccessPolicy({ + * const policy_scoped = gcp.accesscontextmanager.getAccessPolicy({ * parent: "organizations/1234567", * scopes: ["projects/1234567"], * }); @@ -72,10 +72,10 @@ export interface GetAccessPolicyResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const policy-org = gcp.accesscontextmanager.getAccessPolicy({ + * const policy_org = gcp.accesscontextmanager.getAccessPolicy({ * parent: "organizations/1234567", * }); - * const policy-scoped = gcp.accesscontextmanager.getAccessPolicy({ + * const policy_scoped = gcp.accesscontextmanager.getAccessPolicy({ * parent: "organizations/1234567", * scopes: ["projects/1234567"], * }); diff --git a/sdk/nodejs/appengine/getDefaultServiceAccount.ts b/sdk/nodejs/appengine/getDefaultServiceAccount.ts index ac8ebc4563..ed28fd1046 100644 --- a/sdk/nodejs/appengine/getDefaultServiceAccount.ts +++ b/sdk/nodejs/appengine/getDefaultServiceAccount.ts @@ -13,7 +13,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.appengine.getDefaultServiceAccount({}); + * const _default = gcp.appengine.getDefaultServiceAccount({}); * export const defaultAccount = _default.then(_default => _default.email); * ``` */ @@ -74,7 +74,7 @@ export interface GetDefaultServiceAccountResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.appengine.getDefaultServiceAccount({}); + * const _default = gcp.appengine.getDefaultServiceAccount({}); * export const defaultAccount = _default.then(_default => _default.email); * ``` */ diff --git a/sdk/nodejs/apphub/getDiscoveredService.ts b/sdk/nodejs/apphub/getDiscoveredService.ts index 0fc3ec4546..d8e91ff67c 100644 --- a/sdk/nodejs/apphub/getDiscoveredService.ts +++ b/sdk/nodejs/apphub/getDiscoveredService.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-service = gcp.apphub.getDiscoveredService({ + * const my_service = gcp.apphub.getDiscoveredService({ * location: "my-location", * serviceUri: "my-service-uri", * }); @@ -84,7 +84,7 @@ export interface GetDiscoveredServiceResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-service = gcp.apphub.getDiscoveredService({ + * const my_service = gcp.apphub.getDiscoveredService({ * location: "my-location", * serviceUri: "my-service-uri", * }); diff --git a/sdk/nodejs/apphub/getDiscoveredWorkload.ts b/sdk/nodejs/apphub/getDiscoveredWorkload.ts index 7a7aedf586..e9ae867f7b 100644 --- a/sdk/nodejs/apphub/getDiscoveredWorkload.ts +++ b/sdk/nodejs/apphub/getDiscoveredWorkload.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-workload = gcp.apphub.getDiscoveredWorkload({ + * const my_workload = gcp.apphub.getDiscoveredWorkload({ * location: "us-central1", * workloadUri: "my-workload-uri", * }); @@ -84,7 +84,7 @@ export interface GetDiscoveredWorkloadResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-workload = gcp.apphub.getDiscoveredWorkload({ + * const my_workload = gcp.apphub.getDiscoveredWorkload({ * location: "us-central1", * workloadUri: "my-workload-uri", * }); diff --git a/sdk/nodejs/apphub/service.ts b/sdk/nodejs/apphub/service.ts index c02a33e509..5f27ba69c5 100644 --- a/sdk/nodejs/apphub/service.ts +++ b/sdk/nodejs/apphub/service.ts @@ -91,7 +91,7 @@ import * as utilities from "../utilities"; * subnetwork: ilbSubnet.id, * }); * // discovered service block - * const catalog-service = gcp.apphub.getDiscoveredServiceOutput({ + * const catalog_service = gcp.apphub.getDiscoveredServiceOutput({ * location: "us-central1", * serviceUri: pulumi.interpolate`//compute.googleapis.com/${forwardingRule.id}`, * }); @@ -185,7 +185,7 @@ import * as utilities from "../utilities"; * subnetwork: ilbSubnet.id, * }); * // discovered service block - * const catalog-service = gcp.apphub.getDiscoveredServiceOutput({ + * const catalog_service = gcp.apphub.getDiscoveredServiceOutput({ * location: "us-central1", * serviceUri: pulumi.interpolate`//compute.googleapis.com/${forwardingRule.id}`, * }); diff --git a/sdk/nodejs/artifactregistry/getRepository.ts b/sdk/nodejs/artifactregistry/getRepository.ts index c9f74fceda..7fbe926c94 100644 --- a/sdk/nodejs/artifactregistry/getRepository.ts +++ b/sdk/nodejs/artifactregistry/getRepository.ts @@ -17,7 +17,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-repo = gcp.artifactregistry.getRepository({ + * const my_repo = gcp.artifactregistry.getRepository({ * location: "us-central1", * repositoryId: "my-repository", * }); @@ -93,7 +93,7 @@ export interface GetRepositoryResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-repo = gcp.artifactregistry.getRepository({ + * const my_repo = gcp.artifactregistry.getRepository({ * location: "us-central1", * repositoryId: "my-repository", * }); diff --git a/sdk/nodejs/backupdisasterrecovery/getBackupPlanAssociation.ts b/sdk/nodejs/backupdisasterrecovery/getBackupPlanAssociation.ts index 3409005cc8..e540d72c4d 100644 --- a/sdk/nodejs/backupdisasterrecovery/getBackupPlanAssociation.ts +++ b/sdk/nodejs/backupdisasterrecovery/getBackupPlanAssociation.ts @@ -13,7 +13,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-backupplan-association = gcp.backupdisasterrecovery.getBackupPlanAssociation({ + * const my_backupplan_association = gcp.backupdisasterrecovery.getBackupPlanAssociation({ * location: "us-central1", * backupPlanAssociationId: "bpa-id", * }); @@ -73,7 +73,7 @@ export interface GetBackupPlanAssociationResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-backupplan-association = gcp.backupdisasterrecovery.getBackupPlanAssociation({ + * const my_backupplan_association = gcp.backupdisasterrecovery.getBackupPlanAssociation({ * location: "us-central1", * backupPlanAssociationId: "bpa-id", * }); diff --git a/sdk/nodejs/backupdisasterrecovery/getBackupVault.ts b/sdk/nodejs/backupdisasterrecovery/getBackupVault.ts index b2df7e4070..824a1c562f 100644 --- a/sdk/nodejs/backupdisasterrecovery/getBackupVault.ts +++ b/sdk/nodejs/backupdisasterrecovery/getBackupVault.ts @@ -13,7 +13,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-backup-vault = gcp.backupdisasterrecovery.getBackupVault({ + * const my_backup_vault = gcp.backupdisasterrecovery.getBackupVault({ * location: "us-central1", * backupVaultId: "bv-1", * }); @@ -94,7 +94,7 @@ export interface GetBackupVaultResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-backup-vault = gcp.backupdisasterrecovery.getBackupVault({ + * const my_backup_vault = gcp.backupdisasterrecovery.getBackupVault({ * location: "us-central1", * backupVaultId: "bv-1", * }); diff --git a/sdk/nodejs/backupdisasterrecovery/getManagementServer.ts b/sdk/nodejs/backupdisasterrecovery/getManagementServer.ts index 6522061ec0..1cb6fffc5b 100644 --- a/sdk/nodejs/backupdisasterrecovery/getManagementServer.ts +++ b/sdk/nodejs/backupdisasterrecovery/getManagementServer.ts @@ -13,7 +13,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-backup-dr-management-server = gcp.backupdisasterrecovery.getManagementServer({ + * const my_backup_dr_management_server = gcp.backupdisasterrecovery.getManagementServer({ * location: "us-central1", * }); * ``` @@ -55,7 +55,7 @@ export interface GetManagementServerResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-backup-dr-management-server = gcp.backupdisasterrecovery.getManagementServer({ + * const my_backup_dr_management_server = gcp.backupdisasterrecovery.getManagementServer({ * location: "us-central1", * }); * ``` diff --git a/sdk/nodejs/beyondcorp/getAppConnection.ts b/sdk/nodejs/beyondcorp/getAppConnection.ts index 77e7e7c0d2..bcf96348ce 100644 --- a/sdk/nodejs/beyondcorp/getAppConnection.ts +++ b/sdk/nodejs/beyondcorp/getAppConnection.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-beyondcorp-app-connection = gcp.beyondcorp.getAppConnection({ + * const my_beyondcorp_app_connection = gcp.beyondcorp.getAppConnection({ * name: "my-beyondcorp-app-connection", * }); * ``` @@ -80,7 +80,7 @@ export interface GetAppConnectionResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-beyondcorp-app-connection = gcp.beyondcorp.getAppConnection({ + * const my_beyondcorp_app_connection = gcp.beyondcorp.getAppConnection({ * name: "my-beyondcorp-app-connection", * }); * ``` diff --git a/sdk/nodejs/beyondcorp/getAppConnector.ts b/sdk/nodejs/beyondcorp/getAppConnector.ts index f957d6f818..3ce0348c8f 100644 --- a/sdk/nodejs/beyondcorp/getAppConnector.ts +++ b/sdk/nodejs/beyondcorp/getAppConnector.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-beyondcorp-app-connector = gcp.beyondcorp.getAppConnector({ + * const my_beyondcorp_app_connector = gcp.beyondcorp.getAppConnector({ * name: "my-beyondcorp-app-connector", * }); * ``` @@ -78,7 +78,7 @@ export interface GetAppConnectorResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-beyondcorp-app-connector = gcp.beyondcorp.getAppConnector({ + * const my_beyondcorp_app_connector = gcp.beyondcorp.getAppConnector({ * name: "my-beyondcorp-app-connector", * }); * ``` diff --git a/sdk/nodejs/beyondcorp/getAppGateway.ts b/sdk/nodejs/beyondcorp/getAppGateway.ts index d9446afb71..3bde82591b 100644 --- a/sdk/nodejs/beyondcorp/getAppGateway.ts +++ b/sdk/nodejs/beyondcorp/getAppGateway.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-beyondcorp-app-gateway = gcp.beyondcorp.getAppGateway({ + * const my_beyondcorp_app_gateway = gcp.beyondcorp.getAppGateway({ * name: "my-beyondcorp-app-gateway", * }); * ``` @@ -81,7 +81,7 @@ export interface GetAppGatewayResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-beyondcorp-app-gateway = gcp.beyondcorp.getAppGateway({ + * const my_beyondcorp_app_gateway = gcp.beyondcorp.getAppGateway({ * name: "my-beyondcorp-app-gateway", * }); * ``` diff --git a/sdk/nodejs/certificateauthority/getAuthority.ts b/sdk/nodejs/certificateauthority/getAuthority.ts index 39114bf1b3..bb2e752857 100644 --- a/sdk/nodejs/certificateauthority/getAuthority.ts +++ b/sdk/nodejs/certificateauthority/getAuthority.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.certificateauthority.getAuthority({ + * const _default = gcp.certificateauthority.getAuthority({ * location: "us-west1", * pool: "pool-name", * certificateAuthorityId: "ca-id", @@ -105,7 +105,7 @@ export interface GetAuthorityResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.certificateauthority.getAuthority({ + * const _default = gcp.certificateauthority.getAuthority({ * location: "us-west1", * pool: "pool-name", * certificateAuthorityId: "ca-id", diff --git a/sdk/nodejs/certificatemanager/getCertificateMap.ts b/sdk/nodejs/certificatemanager/getCertificateMap.ts index f19903dc8b..5d84c973cb 100644 --- a/sdk/nodejs/certificatemanager/getCertificateMap.ts +++ b/sdk/nodejs/certificatemanager/getCertificateMap.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.certificatemanager.getCertificateMap({ + * const _default = gcp.certificatemanager.getCertificateMap({ * name: "cert-map", * }); * ``` @@ -72,7 +72,7 @@ export interface GetCertificateMapResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.certificatemanager.getCertificateMap({ + * const _default = gcp.certificatemanager.getCertificateMap({ * name: "cert-map", * }); * ``` diff --git a/sdk/nodejs/certificatemanager/getCertificates.ts b/sdk/nodejs/certificatemanager/getCertificates.ts index e218b525d2..2067822928 100644 --- a/sdk/nodejs/certificatemanager/getCertificates.ts +++ b/sdk/nodejs/certificatemanager/getCertificates.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.certificatemanager.getCertificates({}); + * const _default = gcp.certificatemanager.getCertificates({}); * ``` * * ### With A Filter @@ -24,7 +24,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.certificatemanager.getCertificates({ + * const _default = gcp.certificatemanager.getCertificates({ * filter: "name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*", * }); * ``` @@ -73,7 +73,7 @@ export interface GetCertificatesResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.certificatemanager.getCertificates({}); + * const _default = gcp.certificatemanager.getCertificates({}); * ``` * * ### With A Filter @@ -82,7 +82,7 @@ export interface GetCertificatesResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.certificatemanager.getCertificates({ + * const _default = gcp.certificatemanager.getCertificates({ * filter: "name:projects/PROJECT_ID/locations/REGION/certificates/certificate-name-*", * }); * ``` diff --git a/sdk/nodejs/cloudbuildv2/connection.ts b/sdk/nodejs/cloudbuildv2/connection.ts index 18c9efbbc8..f601e97aa8 100644 --- a/sdk/nodejs/cloudbuildv2/connection.ts +++ b/sdk/nodejs/cloudbuildv2/connection.ts @@ -63,7 +63,7 @@ import * as utilities from "../utilities"; * secret: webhook_secret_secret.id, * secretData: "", * }); - * const p4sa-secretAccessor = gcp.organizations.getIAMPolicy({ + * const p4sa_secretAccessor = gcp.organizations.getIAMPolicy({ * bindings: [{ * role: "roles/secretmanager.secretAccessor", * members: ["serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com"], @@ -114,7 +114,7 @@ import * as utilities from "../utilities"; * input: "my-github-token.txt", * }).then(invoke => invoke.result), * }); - * const p4sa-secretAccessor = gcp.organizations.getIAMPolicy({ + * const p4sa_secretAccessor = gcp.organizations.getIAMPolicy({ * bindings: [{ * role: "roles/secretmanager.secretAccessor", * members: ["serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com"], diff --git a/sdk/nodejs/cloudbuildv2/repository.ts b/sdk/nodejs/cloudbuildv2/repository.ts index dda0aa1536..dc13c38ef7 100644 --- a/sdk/nodejs/cloudbuildv2/repository.ts +++ b/sdk/nodejs/cloudbuildv2/repository.ts @@ -44,7 +44,7 @@ import * as utilities from "../utilities"; * secret: webhook_secret_secret.id, * secretData: "", * }); - * const p4sa-secretAccessor = gcp.organizations.getIAMPolicy({ + * const p4sa_secretAccessor = gcp.organizations.getIAMPolicy({ * bindings: [{ * role: "roles/secretmanager.secretAccessor", * members: ["serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com"], @@ -101,7 +101,7 @@ import * as utilities from "../utilities"; * input: "my-github-token.txt", * }).then(invoke => invoke.result), * }); - * const p4sa-secretAccessor = gcp.organizations.getIAMPolicy({ + * const p4sa_secretAccessor = gcp.organizations.getIAMPolicy({ * bindings: [{ * role: "roles/secretmanager.secretAccessor", * members: ["serviceAccount:service-123456789@gcp-sa-cloudbuild.iam.gserviceaccount.com"], diff --git a/sdk/nodejs/cloudfunctions/getFunction.ts b/sdk/nodejs/cloudfunctions/getFunction.ts index da29058862..26a3f9fcbd 100644 --- a/sdk/nodejs/cloudfunctions/getFunction.ts +++ b/sdk/nodejs/cloudfunctions/getFunction.ts @@ -17,7 +17,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-function = gcp.cloudfunctions.getFunction({ + * const my_function = gcp.cloudfunctions.getFunction({ * name: "function", * }); * ``` @@ -162,7 +162,7 @@ export interface GetFunctionResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-function = gcp.cloudfunctions.getFunction({ + * const my_function = gcp.cloudfunctions.getFunction({ * name: "function", * }); * ``` diff --git a/sdk/nodejs/cloudfunctionsv2/getFunction.ts b/sdk/nodejs/cloudfunctionsv2/getFunction.ts index 6f93bd0f05..d91eee7564 100644 --- a/sdk/nodejs/cloudfunctionsv2/getFunction.ts +++ b/sdk/nodejs/cloudfunctionsv2/getFunction.ts @@ -17,7 +17,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-function = gcp.cloudfunctionsv2.getFunction({ + * const my_function = gcp.cloudfunctionsv2.getFunction({ * name: "function", * location: "us-central1", * }); @@ -88,7 +88,7 @@ export interface GetFunctionResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-function = gcp.cloudfunctionsv2.getFunction({ + * const my_function = gcp.cloudfunctionsv2.getFunction({ * name: "function", * location: "us-central1", * }); diff --git a/sdk/nodejs/cloudrun/getService.ts b/sdk/nodejs/cloudrun/getService.ts index 69ce1cd69f..5282e6ad63 100644 --- a/sdk/nodejs/cloudrun/getService.ts +++ b/sdk/nodejs/cloudrun/getService.ts @@ -17,7 +17,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const run-service = gcp.cloudrun.getService({ + * const run_service = gcp.cloudrun.getService({ * name: "my-service", * location: "us-central1", * }); @@ -81,7 +81,7 @@ export interface GetServiceResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const run-service = gcp.cloudrun.getService({ + * const run_service = gcp.cloudrun.getService({ * name: "my-service", * location: "us-central1", * }); diff --git a/sdk/nodejs/cloudscheduler/job.ts b/sdk/nodejs/cloudscheduler/job.ts index ed69b35969..107e43da4b 100644 --- a/sdk/nodejs/cloudscheduler/job.ts +++ b/sdk/nodejs/cloudscheduler/job.ts @@ -130,7 +130,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getDefaultServiceAccount({}); + * const _default = gcp.compute.getDefaultServiceAccount({}); * const job = new gcp.cloudscheduler.Job("job", { * name: "test-job", * description: "test http job", @@ -152,7 +152,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getDefaultServiceAccount({}); + * const _default = gcp.compute.getDefaultServiceAccount({}); * const job = new gcp.cloudscheduler.Job("job", { * name: "test-job", * description: "test http job", diff --git a/sdk/nodejs/compute/getBackendBucket.ts b/sdk/nodejs/compute/getBackendBucket.ts index d932d23623..6ee8d2ffa5 100644 --- a/sdk/nodejs/compute/getBackendBucket.ts +++ b/sdk/nodejs/compute/getBackendBucket.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-backend-bucket = gcp.compute.getBackendBucket({ + * const my_backend_bucket = gcp.compute.getBackendBucket({ * name: "my-backend", * }); * ``` @@ -74,7 +74,7 @@ export interface GetBackendBucketResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-backend-bucket = gcp.compute.getBackendBucket({ + * const my_backend_bucket = gcp.compute.getBackendBucket({ * name: "my-backend", * }); * ``` diff --git a/sdk/nodejs/compute/getDefaultServiceAccount.ts b/sdk/nodejs/compute/getDefaultServiceAccount.ts index 42dfdcecac..318790ec59 100644 --- a/sdk/nodejs/compute/getDefaultServiceAccount.ts +++ b/sdk/nodejs/compute/getDefaultServiceAccount.ts @@ -13,7 +13,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getDefaultServiceAccount({}); + * const _default = gcp.compute.getDefaultServiceAccount({}); * export const defaultAccount = _default.then(_default => _default.email); * ``` */ @@ -74,7 +74,7 @@ export interface GetDefaultServiceAccountResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getDefaultServiceAccount({}); + * const _default = gcp.compute.getDefaultServiceAccount({}); * export const defaultAccount = _default.then(_default => _default.email); * ``` */ diff --git a/sdk/nodejs/compute/getDisk.ts b/sdk/nodejs/compute/getDisk.ts index ff41da0863..a46143cbf0 100644 --- a/sdk/nodejs/compute/getDisk.ts +++ b/sdk/nodejs/compute/getDisk.ts @@ -17,7 +17,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const persistent-boot-disk = gcp.compute.getDisk({ + * const persistent_boot_disk = gcp.compute.getDisk({ * name: "persistent-boot-disk", * project: "example", * }); @@ -180,7 +180,7 @@ export interface GetDiskResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const persistent-boot-disk = gcp.compute.getDisk({ + * const persistent_boot_disk = gcp.compute.getDisk({ * name: "persistent-boot-disk", * project: "example", * }); diff --git a/sdk/nodejs/compute/getForwardingRule.ts b/sdk/nodejs/compute/getForwardingRule.ts index 15fa178451..8d3e676726 100644 --- a/sdk/nodejs/compute/getForwardingRule.ts +++ b/sdk/nodejs/compute/getForwardingRule.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-forwarding-rule = gcp.compute.getForwardingRule({ + * const my_forwarding_rule = gcp.compute.getForwardingRule({ * name: "forwarding-rule-us-east1", * }); * ``` @@ -105,7 +105,7 @@ export interface GetForwardingRuleResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-forwarding-rule = gcp.compute.getForwardingRule({ + * const my_forwarding_rule = gcp.compute.getForwardingRule({ * name: "forwarding-rule-us-east1", * }); * ``` diff --git a/sdk/nodejs/compute/getForwardingRules.ts b/sdk/nodejs/compute/getForwardingRules.ts index ee3fb6a4a9..17ca0be21c 100644 --- a/sdk/nodejs/compute/getForwardingRules.ts +++ b/sdk/nodejs/compute/getForwardingRules.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-forwarding-rules = gcp.compute.getForwardingRules({ + * const my_forwarding_rules = gcp.compute.getForwardingRules({ * project: "my-cloud-project", * region: "us-central1", * }); @@ -76,7 +76,7 @@ export interface GetForwardingRulesResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-forwarding-rules = gcp.compute.getForwardingRules({ + * const my_forwarding_rules = gcp.compute.getForwardingRules({ * project: "my-cloud-project", * region: "us-central1", * }); diff --git a/sdk/nodejs/compute/getGlobalForwardingRule.ts b/sdk/nodejs/compute/getGlobalForwardingRule.ts index 5e1898645e..cfd133f688 100644 --- a/sdk/nodejs/compute/getGlobalForwardingRule.ts +++ b/sdk/nodejs/compute/getGlobalForwardingRule.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-forwarding-rule = gcp.compute.getGlobalForwardingRule({ + * const my_forwarding_rule = gcp.compute.getGlobalForwardingRule({ * name: "forwarding-rule-global", * }); * ``` @@ -89,7 +89,7 @@ export interface GetGlobalForwardingRuleResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-forwarding-rule = gcp.compute.getGlobalForwardingRule({ + * const my_forwarding_rule = gcp.compute.getGlobalForwardingRule({ * name: "forwarding-rule-global", * }); * ``` diff --git a/sdk/nodejs/compute/getNetblockIPRanges.ts b/sdk/nodejs/compute/getNetblockIPRanges.ts index dbc443052e..91f03a2c52 100644 --- a/sdk/nodejs/compute/getNetblockIPRanges.ts +++ b/sdk/nodejs/compute/getNetblockIPRanges.ts @@ -27,7 +27,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const legacy-hcs = gcp.compute.getNetblockIPRanges({ + * const legacy_hcs = gcp.compute.getNetblockIPRanges({ * rangeType: "legacy-health-checkers", * }); * const _default = new gcp.compute.Network("default", {name: "test-network"}); @@ -123,7 +123,7 @@ export interface GetNetblockIPRangesResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const legacy-hcs = gcp.compute.getNetblockIPRanges({ + * const legacy_hcs = gcp.compute.getNetblockIPRanges({ * rangeType: "legacy-health-checkers", * }); * const _default = new gcp.compute.Network("default", {name: "test-network"}); diff --git a/sdk/nodejs/compute/getNetwork.ts b/sdk/nodejs/compute/getNetwork.ts index 3d0b51a802..4e146887da 100644 --- a/sdk/nodejs/compute/getNetwork.ts +++ b/sdk/nodejs/compute/getNetwork.ts @@ -13,7 +13,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-network = gcp.compute.getNetwork({ + * const my_network = gcp.compute.getNetwork({ * name: "default-us-east1", * }); * ``` @@ -103,7 +103,7 @@ export interface GetNetworkResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-network = gcp.compute.getNetwork({ + * const my_network = gcp.compute.getNetwork({ * name: "default-us-east1", * }); * ``` diff --git a/sdk/nodejs/compute/getNetworks.ts b/sdk/nodejs/compute/getNetworks.ts index 00dd656874..fd71b6117d 100644 --- a/sdk/nodejs/compute/getNetworks.ts +++ b/sdk/nodejs/compute/getNetworks.ts @@ -13,7 +13,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-networks = gcp.compute.getNetworks({ + * const my_networks = gcp.compute.getNetworks({ * project: "my-cloud-project", * }); * ``` @@ -66,7 +66,7 @@ export interface GetNetworksResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-networks = gcp.compute.getNetworks({ + * const my_networks = gcp.compute.getNetworks({ * project: "my-cloud-project", * }); * ``` diff --git a/sdk/nodejs/compute/getRegionInstanceTemplate.ts b/sdk/nodejs/compute/getRegionInstanceTemplate.ts index 439417905f..6d0de080cc 100644 --- a/sdk/nodejs/compute/getRegionInstanceTemplate.ts +++ b/sdk/nodejs/compute/getRegionInstanceTemplate.ts @@ -23,7 +23,7 @@ import * as utilities from "../utilities"; * name: "generic-tpl-20200107", * }); * // using a filter - * const generic-regex = gcp.compute.getRegionInstanceTemplate({ + * const generic_regex = gcp.compute.getRegionInstanceTemplate({ * filter: "name != generic-tpl-20200107", * mostRecent: true, * }); @@ -229,7 +229,7 @@ export interface GetRegionInstanceTemplateResult { * name: "generic-tpl-20200107", * }); * // using a filter - * const generic-regex = gcp.compute.getRegionInstanceTemplate({ + * const generic_regex = gcp.compute.getRegionInstanceTemplate({ * filter: "name != generic-tpl-20200107", * mostRecent: true, * }); diff --git a/sdk/nodejs/compute/getRouter.ts b/sdk/nodejs/compute/getRouter.ts index 863f106ba5..b73602277c 100644 --- a/sdk/nodejs/compute/getRouter.ts +++ b/sdk/nodejs/compute/getRouter.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-router = gcp.compute.getRouter({ + * const my_router = gcp.compute.getRouter({ * name: "myrouter-us-east1", * network: "my-network", * }); @@ -82,7 +82,7 @@ export interface GetRouterResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-router = gcp.compute.getRouter({ + * const my_router = gcp.compute.getRouter({ * name: "myrouter-us-east1", * network: "my-network", * }); diff --git a/sdk/nodejs/compute/getRouterStatus.ts b/sdk/nodejs/compute/getRouterStatus.ts index 4d8a53cdaa..b65ada001a 100644 --- a/sdk/nodejs/compute/getRouterStatus.ts +++ b/sdk/nodejs/compute/getRouterStatus.ts @@ -20,7 +20,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-router = gcp.compute.getRouterStatus({ + * const my_router = gcp.compute.getRouterStatus({ * name: "myrouter", * }); * ``` @@ -93,7 +93,7 @@ export interface GetRouterStatusResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-router = gcp.compute.getRouterStatus({ + * const my_router = gcp.compute.getRouterStatus({ * name: "myrouter", * }); * ``` diff --git a/sdk/nodejs/compute/getSSLPolicy.ts b/sdk/nodejs/compute/getSSLPolicy.ts index ca437965f1..89d6fff79d 100644 --- a/sdk/nodejs/compute/getSSLPolicy.ts +++ b/sdk/nodejs/compute/getSSLPolicy.ts @@ -14,7 +14,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-ssl-policy = gcp.compute.getSSLPolicy({ + * const my_ssl_policy = gcp.compute.getSSLPolicy({ * name: "production-ssl-policy", * }); * ``` @@ -96,7 +96,7 @@ export interface GetSSLPolicyResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-ssl-policy = gcp.compute.getSSLPolicy({ + * const my_ssl_policy = gcp.compute.getSSLPolicy({ * name: "production-ssl-policy", * }); * ``` diff --git a/sdk/nodejs/compute/getSnapshot.ts b/sdk/nodejs/compute/getSnapshot.ts index 2a13e2c98d..5718be8deb 100644 --- a/sdk/nodejs/compute/getSnapshot.ts +++ b/sdk/nodejs/compute/getSnapshot.ts @@ -24,7 +24,7 @@ import * as utilities from "../utilities"; * name: "my-snapshot", * }); * // using a filter - * const latest-snapshot = gcp.compute.getSnapshot({ + * const latest_snapshot = gcp.compute.getSnapshot({ * filter: "name != my-snapshot", * mostRecent: true, * }); @@ -117,7 +117,7 @@ export interface GetSnapshotResult { * name: "my-snapshot", * }); * // using a filter - * const latest-snapshot = gcp.compute.getSnapshot({ + * const latest_snapshot = gcp.compute.getSnapshot({ * filter: "name != my-snapshot", * mostRecent: true, * }); diff --git a/sdk/nodejs/compute/getSubnetwork.ts b/sdk/nodejs/compute/getSubnetwork.ts index 0e247b520f..8dc1ae0621 100644 --- a/sdk/nodejs/compute/getSubnetwork.ts +++ b/sdk/nodejs/compute/getSubnetwork.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-subnetwork = gcp.compute.getSubnetwork({ + * const my_subnetwork = gcp.compute.getSubnetwork({ * name: "default-us-east1", * region: "us-east1", * }); @@ -117,7 +117,7 @@ export interface GetSubnetworkResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-subnetwork = gcp.compute.getSubnetwork({ + * const my_subnetwork = gcp.compute.getSubnetwork({ * name: "default-us-east1", * region: "us-east1", * }); diff --git a/sdk/nodejs/compute/getSubnetworks.ts b/sdk/nodejs/compute/getSubnetworks.ts index cf7e991f57..0b14253fb1 100644 --- a/sdk/nodejs/compute/getSubnetworks.ts +++ b/sdk/nodejs/compute/getSubnetworks.ts @@ -17,7 +17,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-subnetworks = gcp.compute.getSubnetworks({ + * const my_subnetworks = gcp.compute.getSubnetworks({ * filter: "ipCidrRange eq 192.168.178.0/24", * project: "my-project", * region: "us-east1", @@ -81,7 +81,7 @@ export interface GetSubnetworksResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-subnetworks = gcp.compute.getSubnetworks({ + * const my_subnetworks = gcp.compute.getSubnetworks({ * filter: "ipCidrRange eq 192.168.178.0/24", * project: "my-project", * region: "us-east1", diff --git a/sdk/nodejs/compute/getVPNGateway.ts b/sdk/nodejs/compute/getVPNGateway.ts index 8d5e60c3f3..f4ae5863c9 100644 --- a/sdk/nodejs/compute/getVPNGateway.ts +++ b/sdk/nodejs/compute/getVPNGateway.ts @@ -13,7 +13,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-vpn-gateway = gcp.compute.getVPNGateway({ + * const my_vpn_gateway = gcp.compute.getVPNGateway({ * name: "vpn-gateway-us-east1", * }); * ``` @@ -86,7 +86,7 @@ export interface GetVPNGatewayResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-vpn-gateway = gcp.compute.getVPNGateway({ + * const my_vpn_gateway = gcp.compute.getVPNGateway({ * name: "vpn-gateway-us-east1", * }); * ``` diff --git a/sdk/nodejs/compute/instanceTemplate.ts b/sdk/nodejs/compute/instanceTemplate.ts index c2b46f5f03..6028cff0f9 100644 --- a/sdk/nodejs/compute/instanceTemplate.ts +++ b/sdk/nodejs/compute/instanceTemplate.ts @@ -96,7 +96,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getDefaultServiceAccount({}); + * const _default = gcp.compute.getDefaultServiceAccount({}); * const myImage = gcp.compute.getImage({ * family: "debian-11", * project: "debian-cloud", diff --git a/sdk/nodejs/compute/routerStatus.ts b/sdk/nodejs/compute/routerStatus.ts index 2035df2f7f..b8164b3445 100644 --- a/sdk/nodejs/compute/routerStatus.ts +++ b/sdk/nodejs/compute/routerStatus.ts @@ -20,7 +20,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-router = gcp.compute.getRouterStatus({ + * const my_router = gcp.compute.getRouterStatus({ * name: "myrouter", * }); * ``` @@ -95,7 +95,7 @@ export interface RouterStatusResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-router = gcp.compute.getRouterStatus({ + * const my_router = gcp.compute.getRouterStatus({ * name: "myrouter", * }); * ``` diff --git a/sdk/nodejs/compute/targetInstance.ts b/sdk/nodejs/compute/targetInstance.ts index 66a9e286f3..a09c034a2b 100644 --- a/sdk/nodejs/compute/targetInstance.ts +++ b/sdk/nodejs/compute/targetInstance.ts @@ -54,7 +54,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const target-vm = gcp.compute.getNetwork({ + * const target_vm = gcp.compute.getNetwork({ * name: "default", * }); * const vmimage = gcp.compute.getImage({ diff --git a/sdk/nodejs/datafusion/instance.ts b/sdk/nodejs/datafusion/instance.ts index 58f9771418..7aadfa9999 100644 --- a/sdk/nodejs/datafusion/instance.ts +++ b/sdk/nodejs/datafusion/instance.ts @@ -35,7 +35,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.appengine.getDefaultServiceAccount({}); + * const _default = gcp.appengine.getDefaultServiceAccount({}); * const network = new gcp.compute.Network("network", {name: "datafusion-full-network"}); * const privateIpAlloc = new gcp.compute.GlobalAddress("private_ip_alloc", { * name: "datafusion-ip-alloc", diff --git a/sdk/nodejs/developerconnect/connection.ts b/sdk/nodejs/developerconnect/connection.ts index 0f0853f5f1..cd22c79f05 100644 --- a/sdk/nodejs/developerconnect/connection.ts +++ b/sdk/nodejs/developerconnect/connection.ts @@ -73,7 +73,7 @@ import * as utilities from "../utilities"; * }).then(invoke => invoke.result), * }); * const devconnect_p4sa = new gcp.projects.ServiceIdentity("devconnect-p4sa", {service: "developerconnect.googleapis.com"}); - * const p4sa-secretAccessor = gcp.organizations.getIAMPolicyOutput({ + * const p4sa_secretAccessor = gcp.organizations.getIAMPolicyOutput({ * bindings: [{ * role: "roles/secretmanager.secretAccessor", * members: [devconnect_p4sa.member], @@ -131,7 +131,7 @@ import * as utilities from "../utilities"; * input: "my-github-token.txt", * }).then(invoke => invoke.result), * }); - * const p4sa-secretAccessor = gcp.organizations.getIAMPolicy({ + * const p4sa_secretAccessor = gcp.organizations.getIAMPolicy({ * bindings: [{ * role: "roles/secretmanager.secretAccessor", * members: ["serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com"], @@ -200,7 +200,7 @@ import * as utilities from "../utilities"; * secret: webhook_secret_secret.id, * secretData: "", * }); - * const p4sa-secretAccessor = gcp.organizations.getIAMPolicy({ + * const p4sa_secretAccessor = gcp.organizations.getIAMPolicy({ * bindings: [{ * role: "roles/secretmanager.secretAccessor", * members: ["serviceAccount:service-123456789@gcp-sa-devconnect.iam.gserviceaccount.com"], diff --git a/sdk/nodejs/logging/billingAccountBucketConfig.ts b/sdk/nodejs/logging/billingAccountBucketConfig.ts index 003466c1a5..1b0d5fd268 100644 --- a/sdk/nodejs/logging/billingAccountBucketConfig.ts +++ b/sdk/nodejs/logging/billingAccountBucketConfig.ts @@ -19,7 +19,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.organizations.getBillingAccount({ + * const _default = gcp.organizations.getBillingAccount({ * billingAccount: "00AA00-000AAA-00AA0A", * }); * const basic = new gcp.logging.BillingAccountBucketConfig("basic", { diff --git a/sdk/nodejs/logging/getSink.ts b/sdk/nodejs/logging/getSink.ts index 19ef404ba5..f4253b162d 100644 --- a/sdk/nodejs/logging/getSink.ts +++ b/sdk/nodejs/logging/getSink.ts @@ -20,7 +20,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const project-sink = gcp.logging.getSink({ + * const project_sink = gcp.logging.getSink({ * id: "projects/0123456789/sinks/my-sink-name", * }); * ``` @@ -100,7 +100,7 @@ export interface GetSinkResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const project-sink = gcp.logging.getSink({ + * const project_sink = gcp.logging.getSink({ * id: "projects/0123456789/sinks/my-sink-name", * }); * ``` diff --git a/sdk/nodejs/logging/organizationBucketConfig.ts b/sdk/nodejs/logging/organizationBucketConfig.ts index b96357913f..f4f2b2df7e 100644 --- a/sdk/nodejs/logging/organizationBucketConfig.ts +++ b/sdk/nodejs/logging/organizationBucketConfig.ts @@ -19,7 +19,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.organizations.getOrganization({ + * const _default = gcp.organizations.getOrganization({ * organization: "123456789", * }); * const basic = new gcp.logging.OrganizationBucketConfig("basic", { diff --git a/sdk/nodejs/monitoring/getClusterIstioService.ts b/sdk/nodejs/monitoring/getClusterIstioService.ts index fec552be30..a2a93b6ffb 100644 --- a/sdk/nodejs/monitoring/getClusterIstioService.ts +++ b/sdk/nodejs/monitoring/getClusterIstioService.ts @@ -30,7 +30,7 @@ import * as utilities from "../utilities"; * import * as gcp from "@pulumi/gcp"; * * // Monitors the default ClusterIstio service - * const default = gcp.monitoring.getClusterIstioService({ + * const _default = gcp.monitoring.getClusterIstioService({ * location: "us-west2-a", * clusterName: "west", * serviceNamespace: "istio-system", @@ -137,7 +137,7 @@ export interface GetClusterIstioServiceResult { * import * as gcp from "@pulumi/gcp"; * * // Monitors the default ClusterIstio service - * const default = gcp.monitoring.getClusterIstioService({ + * const _default = gcp.monitoring.getClusterIstioService({ * location: "us-west2-a", * clusterName: "west", * serviceNamespace: "istio-system", diff --git a/sdk/nodejs/monitoring/getIstioCanonicalService.ts b/sdk/nodejs/monitoring/getIstioCanonicalService.ts index f895530712..1071e312bd 100644 --- a/sdk/nodejs/monitoring/getIstioCanonicalService.ts +++ b/sdk/nodejs/monitoring/getIstioCanonicalService.ts @@ -30,7 +30,7 @@ import * as utilities from "../utilities"; * import * as gcp from "@pulumi/gcp"; * * // Monitors the default MeshIstio service - * const default = gcp.monitoring.getIstioCanonicalService({ + * const _default = gcp.monitoring.getIstioCanonicalService({ * meshUid: "proj-573164786102", * canonicalServiceNamespace: "istio-system", * canonicalService: "prometheus", @@ -129,7 +129,7 @@ export interface GetIstioCanonicalServiceResult { * import * as gcp from "@pulumi/gcp"; * * // Monitors the default MeshIstio service - * const default = gcp.monitoring.getIstioCanonicalService({ + * const _default = gcp.monitoring.getIstioCanonicalService({ * meshUid: "proj-573164786102", * canonicalServiceNamespace: "istio-system", * canonicalService: "prometheus", diff --git a/sdk/nodejs/monitoring/getMeshIstioService.ts b/sdk/nodejs/monitoring/getMeshIstioService.ts index 8dcaeb99a9..c66bf2aaf9 100644 --- a/sdk/nodejs/monitoring/getMeshIstioService.ts +++ b/sdk/nodejs/monitoring/getMeshIstioService.ts @@ -30,7 +30,7 @@ import * as utilities from "../utilities"; * import * as gcp from "@pulumi/gcp"; * * // Monitors the default MeshIstio service - * const default = gcp.monitoring.getMeshIstioService({ + * const _default = gcp.monitoring.getMeshIstioService({ * meshUid: "proj-573164786102", * serviceNamespace: "istio-system", * serviceName: "prometheus", @@ -129,7 +129,7 @@ export interface GetMeshIstioServiceResult { * import * as gcp from "@pulumi/gcp"; * * // Monitors the default MeshIstio service - * const default = gcp.monitoring.getMeshIstioService({ + * const _default = gcp.monitoring.getMeshIstioService({ * meshUid: "proj-573164786102", * serviceNamespace: "istio-system", * serviceName: "prometheus", diff --git a/sdk/nodejs/monitoring/slo.ts b/sdk/nodejs/monitoring/slo.ts index 22225acda8..7338c1c32a 100644 --- a/sdk/nodejs/monitoring/slo.ts +++ b/sdk/nodejs/monitoring/slo.ts @@ -30,7 +30,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.monitoring.getAppEngineService({ + * const _default = gcp.monitoring.getAppEngineService({ * moduleId: "default", * }); * const appengSlo = new gcp.monitoring.Slo("appeng_slo", { diff --git a/sdk/nodejs/netapp/backup.ts b/sdk/nodejs/netapp/backup.ts index 294fbbdf35..bb49b9d348 100644 --- a/sdk/nodejs/netapp/backup.ts +++ b/sdk/nodejs/netapp/backup.ts @@ -34,7 +34,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getNetwork({ + * const _default = gcp.compute.getNetwork({ * name: "", * }); * const defaultStoragePool = new gcp.netapp.StoragePool("default", { diff --git a/sdk/nodejs/netapp/volume.ts b/sdk/nodejs/netapp/volume.ts index fba861279f..5d2cdcdf82 100644 --- a/sdk/nodejs/netapp/volume.ts +++ b/sdk/nodejs/netapp/volume.ts @@ -28,7 +28,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getNetwork({ + * const _default = gcp.compute.getNetwork({ * name: "test-network", * }); * const defaultStoragePool = new gcp.netapp.StoragePool("default", { diff --git a/sdk/nodejs/netapp/volumeReplication.ts b/sdk/nodejs/netapp/volumeReplication.ts index a69606ddfc..84f6343a73 100644 --- a/sdk/nodejs/netapp/volumeReplication.ts +++ b/sdk/nodejs/netapp/volumeReplication.ts @@ -15,7 +15,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getNetwork({ + * const _default = gcp.compute.getNetwork({ * name: "test-network", * }); * const sourcePool = new gcp.netapp.StoragePool("source_pool", { diff --git a/sdk/nodejs/netapp/volumeSnapshot.ts b/sdk/nodejs/netapp/volumeSnapshot.ts index 477e88d648..898528187b 100644 --- a/sdk/nodejs/netapp/volumeSnapshot.ts +++ b/sdk/nodejs/netapp/volumeSnapshot.ts @@ -26,7 +26,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getNetwork({ + * const _default = gcp.compute.getNetwork({ * name: "test-network", * }); * const defaultStoragePool = new gcp.netapp.StoragePool("default", { diff --git a/sdk/nodejs/oracledatabase/autonomousDatabase.ts b/sdk/nodejs/oracledatabase/autonomousDatabase.ts index b0d81484c3..0d744062c6 100644 --- a/sdk/nodejs/oracledatabase/autonomousDatabase.ts +++ b/sdk/nodejs/oracledatabase/autonomousDatabase.ts @@ -23,7 +23,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getNetwork({ + * const _default = gcp.compute.getNetwork({ * name: "new", * project: "my-project", * }); @@ -51,7 +51,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getNetwork({ + * const _default = gcp.compute.getNetwork({ * name: "new", * project: "my-project", * }); diff --git a/sdk/nodejs/oracledatabase/cloudVmCluster.ts b/sdk/nodejs/oracledatabase/cloudVmCluster.ts index be832d7a2a..1b4d36eb47 100644 --- a/sdk/nodejs/oracledatabase/cloudVmCluster.ts +++ b/sdk/nodejs/oracledatabase/cloudVmCluster.ts @@ -35,7 +35,7 @@ import * as utilities from "../utilities"; * }, * deletionProtection: true, * }); - * const default = gcp.compute.getNetwork({ + * const _default = gcp.compute.getNetwork({ * name: "new", * project: "my-project", * }); @@ -76,7 +76,7 @@ import * as utilities from "../utilities"; * }, * deletionProtection: true, * }); - * const default = gcp.compute.getNetwork({ + * const _default = gcp.compute.getNetwork({ * name: "new", * project: "my-project", * }); diff --git a/sdk/nodejs/oracledatabase/getAutonomousDatabase.ts b/sdk/nodejs/oracledatabase/getAutonomousDatabase.ts index bbf0c3b96b..46fb394bdd 100644 --- a/sdk/nodejs/oracledatabase/getAutonomousDatabase.ts +++ b/sdk/nodejs/oracledatabase/getAutonomousDatabase.ts @@ -18,7 +18,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-instance = gcp.oracledatabase.getAutonomousDatabase({ + * const my_instance = gcp.oracledatabase.getAutonomousDatabase({ * location: "us-east4", * autonomousDatabaseId: "autonomous_database_id", * }); @@ -91,7 +91,7 @@ export interface GetAutonomousDatabaseResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-instance = gcp.oracledatabase.getAutonomousDatabase({ + * const my_instance = gcp.oracledatabase.getAutonomousDatabase({ * location: "us-east4", * autonomousDatabaseId: "autonomous_database_id", * }); diff --git a/sdk/nodejs/oracledatabase/getAutonomousDatabases.ts b/sdk/nodejs/oracledatabase/getAutonomousDatabases.ts index e1a6ab1668..aa0fea8fb5 100644 --- a/sdk/nodejs/oracledatabase/getAutonomousDatabases.ts +++ b/sdk/nodejs/oracledatabase/getAutonomousDatabases.ts @@ -18,7 +18,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-adbs = gcp.oracledatabase.getAutonomousDatabases({ + * const my_adbs = gcp.oracledatabase.getAutonomousDatabases({ * location: "us-east4", * }); * ``` @@ -72,7 +72,7 @@ export interface GetAutonomousDatabasesResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-adbs = gcp.oracledatabase.getAutonomousDatabases({ + * const my_adbs = gcp.oracledatabase.getAutonomousDatabases({ * location: "us-east4", * }); * ``` diff --git a/sdk/nodejs/oracledatabase/getCloudExadataInfrastructure.ts b/sdk/nodejs/oracledatabase/getCloudExadataInfrastructure.ts index 76d697b3c0..cb4f0273bd 100644 --- a/sdk/nodejs/oracledatabase/getCloudExadataInfrastructure.ts +++ b/sdk/nodejs/oracledatabase/getCloudExadataInfrastructure.ts @@ -18,7 +18,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-instance = gcp.oracledatabase.getCloudExadataInfrastructure({ + * const my_instance = gcp.oracledatabase.getCloudExadataInfrastructure({ * location: "us-east4", * cloudExadataInfrastructureId: "exadata-id", * }); @@ -88,7 +88,7 @@ export interface GetCloudExadataInfrastructureResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-instance = gcp.oracledatabase.getCloudExadataInfrastructure({ + * const my_instance = gcp.oracledatabase.getCloudExadataInfrastructure({ * location: "us-east4", * cloudExadataInfrastructureId: "exadata-id", * }); diff --git a/sdk/nodejs/oracledatabase/getCloudVmCluster.ts b/sdk/nodejs/oracledatabase/getCloudVmCluster.ts index cc04a4ac38..7a17081fde 100644 --- a/sdk/nodejs/oracledatabase/getCloudVmCluster.ts +++ b/sdk/nodejs/oracledatabase/getCloudVmCluster.ts @@ -18,7 +18,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-vmcluster = gcp.oracledatabase.getCloudVmCluster({ + * const my_vmcluster = gcp.oracledatabase.getCloudVmCluster({ * location: "us-east4", * cloudVmClusterId: "vmcluster-id", * }); @@ -91,7 +91,7 @@ export interface GetCloudVmClusterResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-vmcluster = gcp.oracledatabase.getCloudVmCluster({ + * const my_vmcluster = gcp.oracledatabase.getCloudVmCluster({ * location: "us-east4", * cloudVmClusterId: "vmcluster-id", * }); diff --git a/sdk/nodejs/organizations/getFolders.ts b/sdk/nodejs/organizations/getFolders.ts index bf3db95392..5f70630bf6 100644 --- a/sdk/nodejs/organizations/getFolders.ts +++ b/sdk/nodejs/organizations/getFolders.ts @@ -19,10 +19,10 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-org-folders = gcp.organizations.getFolders({ + * const my_org_folders = gcp.organizations.getFolders({ * parentId: `organizations/${organizationId}`, * }); - * const first-folder = my_org_folders.then(my_org_folders => gcp.organizations.getFolder({ + * const first_folder = my_org_folders.then(my_org_folders => gcp.organizations.getFolder({ * folder: my_org_folders.folders?.[0]?.name, * })); * ``` @@ -71,10 +71,10 @@ export interface GetFoldersResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-org-folders = gcp.organizations.getFolders({ + * const my_org_folders = gcp.organizations.getFolders({ * parentId: `organizations/${organizationId}`, * }); - * const first-folder = my_org_folders.then(my_org_folders => gcp.organizations.getFolder({ + * const first_folder = my_org_folders.then(my_org_folders => gcp.organizations.getFolder({ * folder: my_org_folders.folders?.[0]?.name, * })); * ``` diff --git a/sdk/nodejs/parametermanager/getRegionalParameters.ts b/sdk/nodejs/parametermanager/getRegionalParameters.ts index 56ff8100b2..7ae604f164 100644 --- a/sdk/nodejs/parametermanager/getRegionalParameters.ts +++ b/sdk/nodejs/parametermanager/getRegionalParameters.ts @@ -13,7 +13,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const regional-parameters = gcp.parametermanager.getRegionalParameters({ + * const regional_parameters = gcp.parametermanager.getRegionalParameters({ * location: "us-central1", * }); * ``` @@ -71,7 +71,7 @@ export interface GetRegionalParametersResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const regional-parameters = gcp.parametermanager.getRegionalParameters({ + * const regional_parameters = gcp.parametermanager.getRegionalParameters({ * location: "us-central1", * }); * ``` diff --git a/sdk/nodejs/privilegedaccessmanager/getEntitlement.ts b/sdk/nodejs/privilegedaccessmanager/getEntitlement.ts index 45d3f8a097..5520ebfea8 100644 --- a/sdk/nodejs/privilegedaccessmanager/getEntitlement.ts +++ b/sdk/nodejs/privilegedaccessmanager/getEntitlement.ts @@ -21,7 +21,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-entitlement = gcp.privilegedaccessmanager.getEntitlement({ + * const my_entitlement = gcp.privilegedaccessmanager.getEntitlement({ * parent: "projects/my-project", * location: "global", * entitlementId: "my-entitlement", @@ -94,7 +94,7 @@ export interface GetEntitlementResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-entitlement = gcp.privilegedaccessmanager.getEntitlement({ + * const my_entitlement = gcp.privilegedaccessmanager.getEntitlement({ * parent: "projects/my-project", * location: "global", * entitlementId: "my-entitlement", diff --git a/sdk/nodejs/projects/getProject.ts b/sdk/nodejs/projects/getProject.ts index 472640476e..3e2eb9ea04 100644 --- a/sdk/nodejs/projects/getProject.ts +++ b/sdk/nodejs/projects/getProject.ts @@ -19,10 +19,10 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-org-projects = gcp.projects.getProject({ + * const my_org_projects = gcp.projects.getProject({ * filter: "parent.id:012345678910 lifecycleState:DELETE_REQUESTED", * }); - * const deletion-candidate = my_org_projects.then(my_org_projects => gcp.organizations.getProject({ + * const deletion_candidate = my_org_projects.then(my_org_projects => gcp.organizations.getProject({ * projectId: my_org_projects.projects?.[0]?.projectId, * })); * ``` @@ -71,10 +71,10 @@ export interface GetProjectResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-org-projects = gcp.projects.getProject({ + * const my_org_projects = gcp.projects.getProject({ * filter: "parent.id:012345678910 lifecycleState:DELETE_REQUESTED", * }); - * const deletion-candidate = my_org_projects.then(my_org_projects => gcp.organizations.getProject({ + * const deletion_candidate = my_org_projects.then(my_org_projects => gcp.organizations.getProject({ * projectId: my_org_projects.projects?.[0]?.projectId, * })); * ``` diff --git a/sdk/nodejs/projects/getProjectService.ts b/sdk/nodejs/projects/getProjectService.ts index 5b94bed99f..b0b78b63ea 100644 --- a/sdk/nodejs/projects/getProjectService.ts +++ b/sdk/nodejs/projects/getProjectService.ts @@ -25,7 +25,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-project-service = gcp.projects.getProjectService({ + * const my_project_service = gcp.projects.getProjectService({ * service: "my-project-service", * }); * ``` @@ -90,7 +90,7 @@ export interface GetProjectServiceResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-project-service = gcp.projects.getProjectService({ + * const my_project_service = gcp.projects.getProjectService({ * service: "my-project-service", * }); * ``` diff --git a/sdk/nodejs/pubsub/getSubscription.ts b/sdk/nodejs/pubsub/getSubscription.ts index d81a0c02bb..8175080704 100644 --- a/sdk/nodejs/pubsub/getSubscription.ts +++ b/sdk/nodejs/pubsub/getSubscription.ts @@ -17,7 +17,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-pubsub-subscription = gcp.pubsub.getSubscription({ + * const my_pubsub_subscription = gcp.pubsub.getSubscription({ * name: "my-pubsub-subscription", * }); * ``` @@ -85,7 +85,7 @@ export interface GetSubscriptionResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-pubsub-subscription = gcp.pubsub.getSubscription({ + * const my_pubsub_subscription = gcp.pubsub.getSubscription({ * name: "my-pubsub-subscription", * }); * ``` diff --git a/sdk/nodejs/pubsub/getTopic.ts b/sdk/nodejs/pubsub/getTopic.ts index 9864413469..d133658eed 100644 --- a/sdk/nodejs/pubsub/getTopic.ts +++ b/sdk/nodejs/pubsub/getTopic.ts @@ -17,7 +17,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-pubsub-topic = gcp.pubsub.getTopic({ + * const my_pubsub_topic = gcp.pubsub.getTopic({ * name: "my-pubsub-topic", * }); * ``` @@ -77,7 +77,7 @@ export interface GetTopicResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-pubsub-topic = gcp.pubsub.getTopic({ + * const my_pubsub_topic = gcp.pubsub.getTopic({ * name: "my-pubsub-topic", * }); * ``` diff --git a/sdk/nodejs/redis/instance.ts b/sdk/nodejs/redis/instance.ts index 24a751bf69..f85be9a546 100644 --- a/sdk/nodejs/redis/instance.ts +++ b/sdk/nodejs/redis/instance.ts @@ -42,7 +42,7 @@ import * as utilities from "../utilities"; * // If this network hasn't been created and you are using this example in your * // config, add an additional network resource or change * // this from "data"to "resource" - * const redis-network = gcp.compute.getNetwork({ + * const redis_network = gcp.compute.getNetwork({ * name: "redis-test-network", * }); * const cache = new gcp.redis.Instance("cache", { @@ -145,7 +145,7 @@ import * as utilities from "../utilities"; * // If this network hasn't been created and you are using this example in your * // config, add an additional network resource or change * // this from "data"to "resource" - * const redis-network = gcp.compute.getNetwork({ + * const redis_network = gcp.compute.getNetwork({ * name: "redis-test-network", * }); * const cache = new gcp.redis.Instance("cache", { @@ -188,7 +188,7 @@ import * as utilities from "../utilities"; * // If this network hasn't been created and you are using this example in your * // config, add an additional network resource or change * // this from "data"to "resource" - * const redis-network = gcp.compute.getNetwork({ + * const redis_network = gcp.compute.getNetwork({ * name: "redis-test-network", * }); * const cache = new gcp.redis.Instance("cache", { diff --git a/sdk/nodejs/runtimeconfig/getConfig.ts b/sdk/nodejs/runtimeconfig/getConfig.ts index f2652b7230..68c58dbd22 100644 --- a/sdk/nodejs/runtimeconfig/getConfig.ts +++ b/sdk/nodejs/runtimeconfig/getConfig.ts @@ -11,7 +11,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const run-service = gcp.runtimeconfig.getConfig({ + * const run_service = gcp.runtimeconfig.getConfig({ * name: "my-service", * }); * ``` @@ -60,7 +60,7 @@ export interface GetConfigResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const run-service = gcp.runtimeconfig.getConfig({ + * const run_service = gcp.runtimeconfig.getConfig({ * name: "my-service", * }); * ``` diff --git a/sdk/nodejs/runtimeconfig/getVariable.ts b/sdk/nodejs/runtimeconfig/getVariable.ts index 736577fb08..65056b607d 100644 --- a/sdk/nodejs/runtimeconfig/getVariable.ts +++ b/sdk/nodejs/runtimeconfig/getVariable.ts @@ -11,7 +11,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const run-service = gcp.runtimeconfig.getVariable({ + * const run_service = gcp.runtimeconfig.getVariable({ * parent: "my-service", * name: "prod-variables/hostname", * }); @@ -69,7 +69,7 @@ export interface GetVariableResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const run-service = gcp.runtimeconfig.getVariable({ + * const run_service = gcp.runtimeconfig.getVariable({ * parent: "my-service", * name: "prod-variables/hostname", * }); diff --git a/sdk/nodejs/securitycenter/instanceIamBinding.ts b/sdk/nodejs/securitycenter/instanceIamBinding.ts index 708ae638ab..025022f548 100644 --- a/sdk/nodejs/securitycenter/instanceIamBinding.ts +++ b/sdk/nodejs/securitycenter/instanceIamBinding.ts @@ -35,7 +35,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.appengine.getDefaultServiceAccount({}); + * const _default = gcp.appengine.getDefaultServiceAccount({}); * const network = new gcp.compute.Network("network", {name: "datafusion-full-network"}); * const privateIpAlloc = new gcp.compute.GlobalAddress("private_ip_alloc", { * name: "datafusion-ip-alloc", diff --git a/sdk/nodejs/securitycenter/instanceIamMember.ts b/sdk/nodejs/securitycenter/instanceIamMember.ts index f1f3e7df16..1d8330ed53 100644 --- a/sdk/nodejs/securitycenter/instanceIamMember.ts +++ b/sdk/nodejs/securitycenter/instanceIamMember.ts @@ -35,7 +35,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.appengine.getDefaultServiceAccount({}); + * const _default = gcp.appengine.getDefaultServiceAccount({}); * const network = new gcp.compute.Network("network", {name: "datafusion-full-network"}); * const privateIpAlloc = new gcp.compute.GlobalAddress("private_ip_alloc", { * name: "datafusion-ip-alloc", diff --git a/sdk/nodejs/securitycenter/instanceIamPolicy.ts b/sdk/nodejs/securitycenter/instanceIamPolicy.ts index a813af1cdd..25831c6dc9 100644 --- a/sdk/nodejs/securitycenter/instanceIamPolicy.ts +++ b/sdk/nodejs/securitycenter/instanceIamPolicy.ts @@ -33,7 +33,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.appengine.getDefaultServiceAccount({}); + * const _default = gcp.appengine.getDefaultServiceAccount({}); * const network = new gcp.compute.Network("network", {name: "datafusion-full-network"}); * const privateIpAlloc = new gcp.compute.GlobalAddress("private_ip_alloc", { * name: "datafusion-ip-alloc", diff --git a/sdk/nodejs/serviceaccount/getAccountAccessToken.ts b/sdk/nodejs/serviceaccount/getAccountAccessToken.ts index 5b8dd5bb35..333ebec92f 100644 --- a/sdk/nodejs/serviceaccount/getAccountAccessToken.ts +++ b/sdk/nodejs/serviceaccount/getAccountAccessToken.ts @@ -36,7 +36,7 @@ import * as utilities from "../utilities"; * import * as gcp from "@pulumi/gcp"; * * export = async () => { - * const default = await gcp.organizations.getClientConfig({}); + * const _default = await gcp.organizations.getClientConfig({}); * const defaultGetAccountAccessToken = await gcp.serviceaccount.getAccountAccessToken({ * targetServiceAccount: "service_B@projectB.iam.gserviceaccount.com", * scopes: [ @@ -135,7 +135,7 @@ export interface GetAccountAccessTokenResult { * import * as gcp from "@pulumi/gcp"; * * export = async () => { - * const default = await gcp.organizations.getClientConfig({}); + * const _default = await gcp.organizations.getClientConfig({}); * const defaultGetAccountAccessToken = await gcp.serviceaccount.getAccountAccessToken({ * targetServiceAccount: "service_B@projectB.iam.gserviceaccount.com", * scopes: [ diff --git a/sdk/nodejs/serviceaccount/iambinding.ts b/sdk/nodejs/serviceaccount/iambinding.ts index d5513de192..9c48103b1b 100644 --- a/sdk/nodejs/serviceaccount/iambinding.ts +++ b/sdk/nodejs/serviceaccount/iambinding.ts @@ -88,7 +88,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getDefaultServiceAccount({}); + * const _default = gcp.compute.getDefaultServiceAccount({}); * const sa = new gcp.serviceaccount.Account("sa", { * accountId: "my-service-account", * displayName: "A service account that Jane can use", @@ -197,7 +197,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getDefaultServiceAccount({}); + * const _default = gcp.compute.getDefaultServiceAccount({}); * const sa = new gcp.serviceaccount.Account("sa", { * accountId: "my-service-account", * displayName: "A service account that Jane can use", diff --git a/sdk/nodejs/serviceaccount/iammember.ts b/sdk/nodejs/serviceaccount/iammember.ts index 1a37dfa122..492757ecb4 100644 --- a/sdk/nodejs/serviceaccount/iammember.ts +++ b/sdk/nodejs/serviceaccount/iammember.ts @@ -88,7 +88,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getDefaultServiceAccount({}); + * const _default = gcp.compute.getDefaultServiceAccount({}); * const sa = new gcp.serviceaccount.Account("sa", { * accountId: "my-service-account", * displayName: "A service account that Jane can use", @@ -197,7 +197,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getDefaultServiceAccount({}); + * const _default = gcp.compute.getDefaultServiceAccount({}); * const sa = new gcp.serviceaccount.Account("sa", { * accountId: "my-service-account", * displayName: "A service account that Jane can use", diff --git a/sdk/nodejs/serviceaccount/iampolicy.ts b/sdk/nodejs/serviceaccount/iampolicy.ts index 890864c84e..c77e76a77c 100644 --- a/sdk/nodejs/serviceaccount/iampolicy.ts +++ b/sdk/nodejs/serviceaccount/iampolicy.ts @@ -86,7 +86,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getDefaultServiceAccount({}); + * const _default = gcp.compute.getDefaultServiceAccount({}); * const sa = new gcp.serviceaccount.Account("sa", { * accountId: "my-service-account", * displayName: "A service account that Jane can use", @@ -195,7 +195,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.compute.getDefaultServiceAccount({}); + * const _default = gcp.compute.getDefaultServiceAccount({}); * const sa = new gcp.serviceaccount.Account("sa", { * accountId: "my-service-account", * displayName: "A service account that Jane can use", diff --git a/sdk/nodejs/sourcerepo/getRepository.ts b/sdk/nodejs/sourcerepo/getRepository.ts index 1bdf24e0ae..18cea0ea76 100644 --- a/sdk/nodejs/sourcerepo/getRepository.ts +++ b/sdk/nodejs/sourcerepo/getRepository.ts @@ -18,7 +18,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-repo = gcp.sourcerepo.getRepository({ + * const my_repo = gcp.sourcerepo.getRepository({ * name: "my-repository", * }); * ``` @@ -72,7 +72,7 @@ export interface GetRepositoryResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-repo = gcp.sourcerepo.getRepository({ + * const my_repo = gcp.sourcerepo.getRepository({ * name: "my-repository", * }); * ``` diff --git a/sdk/nodejs/sql/getDatabaseInstanceLatestRecoveryTime.ts b/sdk/nodejs/sql/getDatabaseInstanceLatestRecoveryTime.ts index 8da3f99046..4538e98ad0 100644 --- a/sdk/nodejs/sql/getDatabaseInstanceLatestRecoveryTime.ts +++ b/sdk/nodejs/sql/getDatabaseInstanceLatestRecoveryTime.ts @@ -16,7 +16,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.sql.getDatabaseInstanceLatestRecoveryTime({ + * const _default = gcp.sql.getDatabaseInstanceLatestRecoveryTime({ * instance: "sample-instance", * }); * export const latestRecoveryTime = _default; @@ -77,7 +77,7 @@ export interface GetDatabaseInstanceLatestRecoveryTimeResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.sql.getDatabaseInstanceLatestRecoveryTime({ + * const _default = gcp.sql.getDatabaseInstanceLatestRecoveryTime({ * instance: "sample-instance", * }); * export const latestRecoveryTime = _default; diff --git a/sdk/nodejs/storage/getBucket.ts b/sdk/nodejs/storage/getBucket.ts index 4d8c46f93a..516dfdc153 100644 --- a/sdk/nodejs/storage/getBucket.ts +++ b/sdk/nodejs/storage/getBucket.ts @@ -18,7 +18,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-bucket = gcp.storage.getBucket({ + * const my_bucket = gcp.storage.getBucket({ * name: "my-bucket", * }); * ``` @@ -94,7 +94,7 @@ export interface GetBucketResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const my-bucket = gcp.storage.getBucket({ + * const my_bucket = gcp.storage.getBucket({ * name: "my-bucket", * }); * ``` diff --git a/sdk/nodejs/storage/getTransferProjectServiceAccount.ts b/sdk/nodejs/storage/getTransferProjectServiceAccount.ts index 55c7390c93..4718160df9 100644 --- a/sdk/nodejs/storage/getTransferProjectServiceAccount.ts +++ b/sdk/nodejs/storage/getTransferProjectServiceAccount.ts @@ -13,7 +13,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.storage.getTransferProjectServiceAccount({}); + * const _default = gcp.storage.getTransferProjectServiceAccount({}); * export const defaultAccount = _default.then(_default => _default.email); * ``` */ @@ -66,7 +66,7 @@ export interface GetTransferProjectServiceAccountResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.storage.getTransferProjectServiceAccount({}); + * const _default = gcp.storage.getTransferProjectServiceAccount({}); * export const defaultAccount = _default.then(_default => _default.email); * ``` */ diff --git a/sdk/nodejs/storage/getTransferProjectServieAccount.ts b/sdk/nodejs/storage/getTransferProjectServieAccount.ts index 47de3455f9..77c757d0e2 100644 --- a/sdk/nodejs/storage/getTransferProjectServieAccount.ts +++ b/sdk/nodejs/storage/getTransferProjectServieAccount.ts @@ -13,7 +13,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.storage.getTransferProjectServiceAccount({}); + * const _default = gcp.storage.getTransferProjectServiceAccount({}); * export const defaultAccount = _default.then(_default => _default.email); * ``` */ @@ -68,7 +68,7 @@ export interface GetTransferProjectServieAccountResult { * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.storage.getTransferProjectServiceAccount({}); + * const _default = gcp.storage.getTransferProjectServiceAccount({}); * export const defaultAccount = _default.then(_default => _default.email); * ``` */ diff --git a/sdk/nodejs/storage/transferAgentPool.ts b/sdk/nodejs/storage/transferAgentPool.ts index 3154ae335e..c08313155c 100644 --- a/sdk/nodejs/storage/transferAgentPool.ts +++ b/sdk/nodejs/storage/transferAgentPool.ts @@ -23,7 +23,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.storage.getTransferProjectServiceAccount({ + * const _default = gcp.storage.getTransferProjectServiceAccount({ * project: "my-project-name", * }); * const pubsubEditorRole = new gcp.projects.IAMMember("pubsub_editor_role", { diff --git a/sdk/nodejs/storage/transferJob.ts b/sdk/nodejs/storage/transferJob.ts index 17f2ebc147..497ccc3c0b 100644 --- a/sdk/nodejs/storage/transferJob.ts +++ b/sdk/nodejs/storage/transferJob.ts @@ -24,7 +24,7 @@ import * as utilities from "../utilities"; * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * - * const default = gcp.storage.getTransferProjectServiceAccount({ + * const _default = gcp.storage.getTransferProjectServiceAccount({ * project: project, * }); * const s3_backup_bucket = new gcp.storage.Bucket("s3-backup-bucket", { diff --git a/sdk/python/pulumi_gcp/_utilities.py b/sdk/python/pulumi_gcp/_utilities.py index 3ce408d5ff..56d3cfb87c 100644 --- a/sdk/python/pulumi_gcp/_utilities.py +++ b/sdk/python/pulumi_gcp/_utilities.py @@ -89,12 +89,16 @@ def _get_semver_version(): elif pep440_version.pre_tag == 'rc': prerelease = f"rc.{pep440_version.pre}" elif pep440_version.dev is not None: + # PEP440 has explicit support for dev builds, while semver encodes them as "prerelease" versions. To bridge + # between the two, we convert our dev build version into a prerelease tag. This matches what all of our other + # packages do when constructing their own semver string. prerelease = f"dev.{pep440_version.dev}" + elif pep440_version.local is not None: + # PEP440 only allows a small set of prerelease tags, so when converting an arbitrary prerelease, + # PypiVersion in /pkg/codegen/python/utilities.go converts it to a local version. Therefore, we need to + # do the reverse conversion here and set the local version as the prerelease tag. + prerelease = pep440_version.local - # The only significant difference between PEP440 and semver as it pertains to us is that PEP440 has explicit support - # for dev builds, while semver encodes them as "prerelease" versions. In order to bridge between the two, we convert - # our dev build version into a prerelease tag. This matches what all of our other packages do when constructing - # their own semver string. return SemverVersion(major=major, minor=minor, patch=patch, prerelease=prerelease)